diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2008-08-18 16:45:51 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-08-19 00:07:13 (GMT) |
commit | 990b183e58cb513a62492b6218987750e106cbfb (patch) | |
tree | b9d20863c9dba4bddb8a78a45a813120ed354d29 /arch/x86/kernel/apic_64.c | |
parent | f1ee37891dab6014f6b0ec77b18bc07e2369a55f (diff) | |
download | linux-fsl-qoriq-990b183e58cb513a62492b6218987750e106cbfb.tar.xz |
x86: apic - unify disable_local_APIC
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic_64.c')
-rw-r--r-- | arch/x86/kernel/apic_64.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c index 46acb9b..4fb903b 100644 --- a/arch/x86/kernel/apic_64.c +++ b/arch/x86/kernel/apic_64.c @@ -691,6 +691,20 @@ void disable_local_APIC(void) value = apic_read(APIC_SPIV); value &= ~APIC_SPIV_APIC_ENABLED; apic_write(APIC_SPIV, value); + +#ifdef CONFIG_X86_32 + /* + * When LAPIC was disabled by the BIOS and enabled by the kernel, + * restore the disabled state. + */ + if (enabled_via_apicbase) { + unsigned int l, h; + + rdmsr(MSR_IA32_APICBASE, l, h); + l &= ~MSR_IA32_APICBASE_ENABLE; + wrmsr(MSR_IA32_APICBASE, l, h); + } +#endif } void lapic_shutdown(void) |