]>
Commit | Line | Data |
---|---|---|
a65d4bac GKH |
1 | From foo@baz Sat Jul 28 10:25:26 CEST 2018 |
2 | From: Scott Wood <swood@redhat.com> | |
3 | Date: Thu, 24 May 2018 10:44:20 -0500 | |
4 | Subject: x86/microcode: Make the late update update_lock a raw lock for RT | |
5 | ||
6 | From: Scott Wood <swood@redhat.com> | |
7 | ||
8 | [ Upstream commit ff987fcf011d20c53b3a613edf6e2055ea48e26e ] | |
9 | ||
10 | __reload_late() is called from stop_machine context and thus cannot | |
11 | acquire a non-raw spinlock on PREEMPT_RT. | |
12 | ||
13 | Signed-off-by: Scott Wood <swood@redhat.com> | |
14 | Signed-off-by: Borislav Petkov <bp@suse.de> | |
15 | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> | |
16 | Acked-by: Thomas Gleixner <tglx@linutronix.de> | |
17 | Cc: Ashok Raj <ashok.raj@intel.com> | |
18 | Cc: Clark Williams <williams@redhat.com> | |
19 | Cc: Pei Zhang <pezhang@redhat.com> | |
20 | Cc: x86-ml <x86@kernel.org> | |
21 | Link: http://lkml.kernel.org/r/20180524154420.24455-1-swood@redhat.com | |
22 | Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> | |
23 | Signed-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) { |