]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Feb 2018 17:24:27 +0000 (18:24 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Feb 2018 17:24:27 +0000 (18:24 +0100)
added patches:
x86-microcode-do-the-family-check-first.patch

queue-4.9/series
queue-4.9/x86-microcode-do-the-family-check-first.patch [new file with mode: 0644]

index 25f2af01c4eb5ef74fc96b99baae1f8e461a3ed5..aa24141bdf567c850374e19fe096166a0b22c0f0 100644 (file)
@@ -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 (file)
index 0000000..5b7cedb
--- /dev/null
@@ -0,0 +1,92 @@
+From 1f161f67a272cc4f29f27934dd3f74cb657eb5c4 Mon Sep 17 00:00:00 2001
+From: Borislav Petkov <bp@suse.de>
+Date: Thu, 12 Oct 2017 13:23:16 +0200
+Subject: x86/microcode: Do the family check first
+
+From: Borislav Petkov <bp@suse.de>
+
+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 <glodi1@arcor.de>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Cc: <stable@vger.kernel.org> # 4.11..
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+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 <mingo@kernel.org>
+Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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)