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
2 changed files with 19 additions and 4 deletions
|
@ -838,10 +838,13 @@ void lapic_shutdown(void)
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
|
|
||||||
if (enabled_via_apicbase)
|
#ifdef CONFIG_X86_32
|
||||||
disable_local_APIC();
|
if (!enabled_via_apicbase)
|
||||||
else
|
|
||||||
clear_local_APIC();
|
clear_local_APIC();
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
disable_local_APIC();
|
||||||
|
|
||||||
|
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -707,6 +707,12 @@ void disable_local_APIC(void)
|
||||||
#endif
|
#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)
|
void lapic_shutdown(void)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -716,7 +722,13 @@ void lapic_shutdown(void)
|
||||||
|
|
||||||
local_irq_save(flags);
|
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);
|
local_irq_restore(flags);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue