From ffb4b625e8b2f0ce0f31433564973eb2c80a7ef5 Mon Sep 17 00:00:00 2001 From: Alexey Makhalov Date: Tue, 9 May 2017 12:41:17 -0700 Subject: [PATCH] vmware only Signed-off-by: Bo Gan --- arch/x86/kernel/cpu/Makefile | 5 +++++ arch/x86/kernel/cpu/common.c | 3 +++ arch/x86/kernel/cpu/vmware.c | 5 +++++ arch/x86/kernel/smpboot.c | 1 - 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile index 89c96c936083..6656e7e10214 100644 --- a/arch/x86/kernel/cpu/Makefile +++ b/arch/x86/kernel/cpu/Makefile @@ -21,7 +21,12 @@ CFLAGS_common.o := -fno-stack-protector obj-y := cacheinfo.o scattered.o topology.o obj-y += common.o + +# Trust rdrand on VMware platform +ifndef CONFIG_HYPERVISOR_GUEST obj-y += rdrand.o +endif + obj-y += match.o obj-y += bugs.o obj-y += aperfmperf.o diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 3e508f239098..24e73f7700d5 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -1858,7 +1858,10 @@ static void identify_cpu(struct cpuinfo_x86 *c) detect_ht(c); #endif + /* Trust rdrand on VMware platform */ +#ifndef CONFIG_HYPERVISOR_GUEST x86_init_rdrand(c); +#endif setup_pku(c); setup_cet(c); diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c index 9d6183624f4f..a5b1bb90af21 100644 --- a/arch/x86/kernel/cpu/vmware.c +++ b/arch/x86/kernel/cpu/vmware.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -475,6 +476,10 @@ static void __init vmware_platform_setup(void) vmware_set_capabilities(); kmsg_dump_register(&kmsg_dumper); +#ifdef CONFIG_PCI + /* PCI BIOS service won't work from a PV guest. */ + pci_probe &= ~PCI_PROBE_BIOS; +#endif } static u8 __init vmware_select_hypercall(void) diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index f24227bc3220..1fa1edec6545 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -810,7 +810,6 @@ wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip) /* * Give the other CPU some time to accept the IPI. */ - udelay(200); if (APIC_INTEGRATED(boot_cpu_apic_version)) { maxlvt = lapic_get_maxlvt(); if (maxlvt > 3) /* Due to the Pentium erratum 3AP. */ -- 2.25.1