From: Greg Kroah-Hartman Date: Thu, 8 Feb 2018 17:24:27 +0000 (+0100) Subject: 4.9-stable patches X-Git-Tag: v4.15.3~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4b6b88e1fefe7c757f2cf610abf633918ddb5e3d;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: x86-microcode-do-the-family-check-first.patch --- diff --git a/queue-4.9/series b/queue-4.9/series index 25f2af01c4e..aa24141bdf5 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -88,3 +88,4 @@ asoc-rsnd-don-t-call-free_irq-on-parent-ssi.patch asoc-rsnd-avoid-duplicate-free_irq.patch drm-rcar-du-use-the-vbk-interrupt-for-vblank-events.patch drm-rcar-du-fix-race-condition-when-disabling-planes-at-crtc-stop.patch +x86-microcode-do-the-family-check-first.patch diff --git a/queue-4.9/x86-microcode-do-the-family-check-first.patch b/queue-4.9/x86-microcode-do-the-family-check-first.patch new file mode 100644 index 00000000000..5b7cedb17a5 --- /dev/null +++ b/queue-4.9/x86-microcode-do-the-family-check-first.patch @@ -0,0 +1,92 @@ +From 1f161f67a272cc4f29f27934dd3f74cb657eb5c4 Mon Sep 17 00:00:00 2001 +From: Borislav Petkov +Date: Thu, 12 Oct 2017 13:23:16 +0200 +Subject: x86/microcode: Do the family check first + +From: Borislav Petkov + +commit 1f161f67a272cc4f29f27934dd3f74cb657eb5c4 upstream with adjustments. + +On CPUs like AMD's Geode, for example, we shouldn't even try to load +microcode because they do not support the modern microcode loading +interface. + +However, we do the family check *after* the other checks whether the +loader has been disabled on the command line or whether we're running in +a guest. + +So move the family checks first in order to exit early if we're being +loaded on an unsupported family. + +Reported-and-tested-by: Sven Glodowski +Signed-off-by: Borislav Petkov +Cc: # 4.11.. +Cc: Linus Torvalds +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Link: http://bugzilla.suse.com/show_bug.cgi?id=1061396 +Link: http://lkml.kernel.org/r/20171012112316.977-1-bp@alien8.de +Signed-off-by: Ingo Molnar +Signed-off-by: Rolf Neugebauer +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/cpu/microcode/core.c | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +--- a/arch/x86/kernel/cpu/microcode/core.c ++++ b/arch/x86/kernel/cpu/microcode/core.c +@@ -86,9 +86,6 @@ static bool __init check_loader_disabled + bool *res = &dis_ucode_ldr; + #endif + +- if (!have_cpuid_p()) +- return *res; +- + a = 1; + c = 0; + native_cpuid(&a, &b, &c, &d); +@@ -130,8 +127,9 @@ void __init load_ucode_bsp(void) + { + int vendor; + unsigned int family; ++ bool intel = true; + +- if (check_loader_disabled_bsp()) ++ if (!have_cpuid_p()) + return; + + vendor = x86_cpuid_vendor(); +@@ -139,16 +137,27 @@ void __init load_ucode_bsp(void) + + switch (vendor) { + case X86_VENDOR_INTEL: +- if (family >= 6) +- load_ucode_intel_bsp(); ++ if (family < 6) ++ return; + break; ++ + case X86_VENDOR_AMD: +- if (family >= 0x10) +- load_ucode_amd_bsp(family); ++ if (family < 0x10) ++ return; ++ intel = false; + break; ++ + default: +- break; ++ return; + } ++ ++ if (check_loader_disabled_bsp()) ++ return; ++ ++ if (intel) ++ load_ucode_intel_bsp(); ++ else ++ load_ucode_amd_bsp(family); + } + + static bool check_loader_disabled_ap(void)