Home Home > GIT Browse > SLE12-SP3-AZURE
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2018-02-19 15:46:00 +0100
committerTakashi Iwai <tiwai@suse.de>2018-02-19 15:46:07 +0100
commit14c5f0fc2f10ea3b583a86879498d4dd1b9e9b92 (patch)
treec94b406278ec17574683b97eec9b0aa696f32256
parentac0518e7d35e3f391bf8f14e08b648d57bcd1d9f (diff)
x86/microcode: Do the family check first (bsc#1081436rpm-4.4.114-94.14
bsc#1081437).
-rw-r--r--patches.arch/x86-microcode-Do-the-family-check-first.patch94
-rw-r--r--series.conf1
2 files changed, 95 insertions, 0 deletions
diff --git a/patches.arch/x86-microcode-Do-the-family-check-first.patch b/patches.arch/x86-microcode-Do-the-family-check-first.patch
new file mode 100644
index 0000000000..5d6033bd21
--- /dev/null
+++ b/patches.arch/x86-microcode-Do-the-family-check-first.patch
@@ -0,0 +1,94 @@
+From ba929f5f3c263f3b975a3b95328f66203a57b536 Mon Sep 17 00:00:00 2001
+From: Borislav Petkov <bp@suse.de>
+Date: Thu, 12 Oct 2017 13:23:16 +0200
+Subject: [PATCH] x86/microcode: Do the family check first
+Git-commit: 1f161f67a272cc4f29f27934dd3f74cb657eb5c4
+Patch-mainline: v4.14-rc5
+References: bsc#1081436 bsc#1081437
+
+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>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ 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
+@@ -95,9 +95,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);
+@@ -139,8 +136,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_vendor();
+@@ -148,16 +146,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)
diff --git a/series.conf b/series.conf
index 95671c6bfa..fc0799eac5 100644
--- a/series.conf
+++ b/series.conf
@@ -2400,6 +2400,7 @@
patches.arch/x86-acpi-cstate-allow-acpi-c1-ffh-mwait-use-on-amd-systems.patch
patches.arch/x86-microcode-AMD-Do-not-load-when-running-on-a-hype.patch
+ patches.arch/x86-microcode-Do-the-family-check-first.patch
########################################################
# x86 MCE/MCA (Machine Check Error/Architecture) extensions