]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.14.60/x86-microcode-make-the-late-update-update_lock-a-raw-lock-for-rt.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / releases / 4.14.60 / x86-microcode-make-the-late-update-update_lock-a-raw-lock-for-rt.patch
CommitLineData
a65d4bac
GKH
1From foo@baz Sat Jul 28 10:25:26 CEST 2018
2From: Scott Wood <swood@redhat.com>
3Date: Thu, 24 May 2018 10:44:20 -0500
4Subject: x86/microcode: Make the late update update_lock a raw lock for RT
5
6From: Scott Wood <swood@redhat.com>
7
8[ Upstream commit ff987fcf011d20c53b3a613edf6e2055ea48e26e ]
9
10__reload_late() is called from stop_machine context and thus cannot
11acquire a non-raw spinlock on PREEMPT_RT.
12
13Signed-off-by: Scott Wood <swood@redhat.com>
14Signed-off-by: Borislav Petkov <bp@suse.de>
15Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
16Acked-by: Thomas Gleixner <tglx@linutronix.de>
17Cc: Ashok Raj <ashok.raj@intel.com>
18Cc: Clark Williams <williams@redhat.com>
19Cc: Pei Zhang <pezhang@redhat.com>
20Cc: x86-ml <x86@kernel.org>
21Link: http://lkml.kernel.org/r/20180524154420.24455-1-swood@redhat.com
22Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24---
25 arch/x86/kernel/cpu/microcode/core.c | 6 +++---
26 1 file changed, 3 insertions(+), 3 deletions(-)
27
28--- a/arch/x86/kernel/cpu/microcode/core.c
29+++ b/arch/x86/kernel/cpu/microcode/core.c
30@@ -70,7 +70,7 @@ static DEFINE_MUTEX(microcode_mutex);
31 /*
32 * Serialize late loading so that CPUs get updated one-by-one.
33 */
34-static DEFINE_SPINLOCK(update_lock);
35+static DEFINE_RAW_SPINLOCK(update_lock);
36
37 struct ucode_cpu_info ucode_cpu_info[NR_CPUS];
38
39@@ -560,9 +560,9 @@ static int __reload_late(void *info)
40 if (__wait_for_cpus(&late_cpus_in, NSEC_PER_SEC))
41 return -1;
42
43- spin_lock(&update_lock);
44+ raw_spin_lock(&update_lock);
45 apply_microcode_local(&err);
46- spin_unlock(&update_lock);
47+ raw_spin_unlock(&update_lock);
48
49 /* siblings return UCODE_OK because their engine got updated already */
50 if (err > UCODE_NFOUND) {