• Thomas Gleixner's avatar
    x86/smpboot: Init apic mapping before usage · 9710f5b1
    Thomas Gleixner authored
    commit 1e90a13d upstream.
    
    The recent changes, which forced the registration of the boot cpu on UP
    systems, which do not have ACPI tables, have been fixed for systems w/o
    local APIC, but left a wreckage for systems which have neither ACPI nor
    mptables, but the CPU has an APIC, e.g. virtualbox.
    
    The boot process crashes in prefill_possible_map() as it wants to register
    the boot cpu, which needs to access the local apic, but the local APIC is
    not yet mapped.
    
    There is no reason why init_apic_mapping() can't be invoked before
    prefill_possible_map(). So instead of playing another silly early mapping
    game, as the ACPI/mptables code does, we just move init_apic_mapping()
    before the call to prefill_possible_map().
    
    In hindsight, I should have noticed that combination earlier.
    
    Sorry for the churn (also in stable)!
    
    Fixes: ff856051 ("x86/boot/smp: Don't try to poke disabled/non-existent APIC")
    Reported-and-debugged-by: default avatarMichal Necasek <michal.necasek@oracle.com>
    Reported-and-tested-by: default avatarWolfgang Bauer <wbauer@tmo.at>
    Cc: prarit@redhat.com
    Cc: ville.syrjala@linux.intel.com
    Cc: michael.thayer@oracle.com
    Cc: knut.osmundsen@oracle.com
    Cc: frank.mehnert@oracle.com
    Cc: Borislav Petkov <bp@alien8.de>
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1610282114380.5053@nanosSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    9710f5b1
setup.c 31.7 KB