[GIT pull] x86 fix for 4.9

From: Thomas Gleixner
Date: Sat Oct 29 2016 - 16:43:12 EST


Linus,

please pull the latest x86-urgent-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-for-linus

A single bugfix for the recent changes related to registering the boot cpu
when this has not happened before prefill_possible_map(). The main problem
with this change got fixed already, but we missed the case where the local
APIC is not yet mapped, when prefill_possible_map() is invoked, so the
registration of the boot cpu which has the APIC bit set in CPUID will
explode.

I should have seen that issue earlier, but all I can do now is feeling
embarassed.

Thanks,

tglx

------------------>
Thomas Gleixner (1):
x86/smpboot: Init apic mapping before usage


arch/x86/kernel/setup.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index bbfbca5fea0c..9c337b0e8ba7 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1221,11 +1221,16 @@ void __init setup_arch(char **cmdline_p)
*/
get_smp_config();

+ /*
+ * Systems w/o ACPI and mptables might not have it mapped the local
+ * APIC yet, but prefill_possible_map() might need to access it.
+ */
+ init_apic_mappings();
+
prefill_possible_map();

init_cpu_to_node();

- init_apic_mappings();
io_apic_init_mappings();

kvm_guest_init();