From: Konrad Rzeszutek Wilk Date: Mon, 26 Feb 2018 14:35:01 +0000 (-0500) Subject: x86/spectre_v2: Don't check bad microcode versions when running under hypervisors. X-Git-Tag: v4.1.12-124.31.3~1115 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4a6a628a4c53f4eb05f9a90ff63ad77451f781eb;p=users%2Fjedix%2Flinux-maple.git x86/spectre_v2: Don't check bad microcode versions when running under hypervisors. As: 1) We know they lie about the env anyhow (host mismatch) 2) Even if the hypervisor (Xen, KVM, VMWare, etc) provided a valid "correct" value, it all gets to be very murky when migration happens (do you provide the "new" microcode of the machine?). And in reality the cloud vendors are the ones that should make sure that the microcode that is running is correct and we should just sing lalalala and believe them. Orabug: 27601736 Reviewed-by: Boris Ostrovsky Reviewed-by: Allen Pais Signed-off-by: Konrad Rzeszutek Wilk --- diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c index 04ca66511681..b4825d59a9b4 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c @@ -71,6 +71,13 @@ static bool bad_spectre_microcode(struct cpuinfo_x86 *c) { int i; + /* + * We know that the hypervisor lie to us on the microcode version so + * we may as well trust that it is running the correct microcode version. + */ + if (cpu_has(c, X86_FEATURE_HYPERVISOR)) + return false; + for (i = 0; i < ARRAY_SIZE(spectre_bad_microcodes); i++) { if (c->x86_model == spectre_bad_microcodes[i].model && c->x86_mask == spectre_bad_microcodes[i].stepping)