x86: apic - unify lapic_shutdown
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
990b183e58
commit
fe4024dcb0
|
@ -838,10 +838,13 @@ void lapic_shutdown(void)
|
|||
|
||||
local_irq_save(flags);
|
||||
|
||||
if (enabled_via_apicbase)
|
||||
disable_local_APIC();
|
||||
else
|
||||
#ifdef CONFIG_X86_32
|
||||
if (!enabled_via_apicbase)
|
||||
clear_local_APIC();
|
||||
else
|
||||
#endif
|
||||
disable_local_APIC();
|
||||
|
||||
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
|
|
@ -707,6 +707,12 @@ void disable_local_APIC(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* If Linux enabled the LAPIC against the BIOS default disable it down before
|
||||
* re-entering the BIOS on shutdown. Otherwise the BIOS may get confused and
|
||||
* not power-off. Additionally clear all LVT entries before disable_local_APIC
|
||||
* for the case where Linux didn't enable the LAPIC.
|
||||
*/
|
||||
void lapic_shutdown(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
@ -716,7 +722,13 @@ void lapic_shutdown(void)
|
|||
|
||||
local_irq_save(flags);
|
||||
|
||||
disable_local_APIC();
|
||||
#ifdef CONFIG_X86_32
|
||||
if (!enabled_via_apicbase)
|
||||
clear_local_APIC();
|
||||
else
|
||||
#endif
|
||||
disable_local_APIC();
|
||||
|
||||
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue