Commit 4c738480 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

mtrr atomicity fix

Rafael gets this on an SMP box with kernel preemption enabled, during
hibernation and restore (100% of the time):

Enabling non-boot CPUs ...
BUG: using smp_processor_id() in preemptible [00000001] code: bash/4514
caller is mtrr_save_state+0x9/0x40

Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent e44a45ae
...@@ -734,10 +734,13 @@ void mtrr_ap_init(void) ...@@ -734,10 +734,13 @@ void mtrr_ap_init(void)
*/ */
void mtrr_save_state(void) void mtrr_save_state(void)
{ {
if (smp_processor_id() == 0) int cpu = get_cpu();
if (cpu == 0)
mtrr_save_fixed_ranges(NULL); mtrr_save_fixed_ranges(NULL);
else else
smp_call_function_single(0, mtrr_save_fixed_ranges, NULL, 1, 1); smp_call_function_single(0, mtrr_save_fixed_ranges, NULL, 1, 1);
put_cpu();
} }
static int __init mtrr_init_finialize(void) static int __init mtrr_init_finialize(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment