diff options
author | Fenghua Yu <fenghua.yu@intel.com> | 2012-11-13 14:32:48 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2012-11-14 18:28:10 -0500 |
commit | 30242aa6023b71325c6b8addac06faf544a85fd0 (patch) | |
tree | 94b99db2e530fe10a11cfdacb16a6c36f4e2e27e | |
parent | 27fd185f3d9e83c64b7a596881d7751a638c9683 (diff) |
x86, hotplug: The first online processor saves the MTRR state
Ask the first online CPU to save mtrr instead of asking BSP. BSP could be
offline when mtrr_save_state() is called.
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Link: http://lkml.kernel.org/r/1352835171-3958-12-git-send-email-fenghua.yu@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r-- | arch/x86/kernel/cpu/mtrr/main.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c index 6b96110bb0c3..e4c1a4184531 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c | |||
@@ -695,11 +695,16 @@ void mtrr_ap_init(void) | |||
695 | } | 695 | } |
696 | 696 | ||
697 | /** | 697 | /** |
698 | * Save current fixed-range MTRR state of the BSP | 698 | * Save current fixed-range MTRR state of the first cpu in cpu_online_mask. |
699 | */ | 699 | */ |
700 | void mtrr_save_state(void) | 700 | void mtrr_save_state(void) |
701 | { | 701 | { |
702 | smp_call_function_single(0, mtrr_save_fixed_ranges, NULL, 1); | 702 | int first_cpu; |
703 | |||
704 | get_online_cpus(); | ||
705 | first_cpu = cpumask_first(cpu_online_mask); | ||
706 | smp_call_function_single(first_cpu, mtrr_save_fixed_ranges, NULL, 1); | ||
707 | put_online_cpus(); | ||
703 | } | 708 | } |
704 | 709 | ||
705 | void set_mtrr_aps_delayed_init(void) | 710 | void set_mtrr_aps_delayed_init(void) |