Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 112726
b: refs/heads/master
c: fe4024d
h: refs/heads/master
v: v3
  • Loading branch information
Cyrill Gorcunov authored and Ingo Molnar committed Aug 19, 2008
1 parent 5d6b111 commit a848543
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 990b183e58cb513a62492b6218987750e106cbfb
refs/heads/master: fe4024dcb0c01e5399394d2807406a2c13fb1eb7
9 changes: 6 additions & 3 deletions trunk/arch/x86/kernel/apic_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
14 changes: 13 additions & 1 deletion trunk/arch/x86/kernel/apic_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
Expand Down

0 comments on commit a848543

Please sign in to comment.