• Mikael Pettersson's avatar
    [PATCH] Disable APIC on reboot · 0ac17865
    Mikael Pettersson authored
    This disables the local APIC before reboot.  This fixes BIOS reboot
    problems reported by a few people.
    
    disable_local_APIC() now checks if detect_init_APIC() enabled the
    local APIC via the APIC_BASE MSR, and if so it now disables APIC_BASE.
    Previously we would leave APIC_BASE enabled, and that made some
    BIOSen unhappy.
    
    The SMP reboot code calls disable_local_APIC(). On SMP HW there is
    no change since detect_init_APIC() isn't called and APIC_BASE isn't
    enabled by us. An SMP kernel on UP HW behaves just like an UP_APIC
    kernel, so it disables APIC_BASE if we enabled it at boot.
    
    The UP_APIC disable-before-suspend code is simplified since the existing
    code to disable APIC_BASE is moved into disable_local_APIC().
    
    (Felix Kühling originally reported the BIOS reboot problem. This is a
    fixed-up version of his preliminary patch.)
    0ac17865
apic.c 28.3 KB