diff options
-rw-r--r-- | arch/x86/kernel/apic_64.c | 14 | ||||
-rw-r--r-- | include/asm-x86/apic_64.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c index f47bc493dba9..f28ccb588fba 100644 --- a/arch/x86/kernel/apic_64.c +++ b/arch/x86/kernel/apic_64.c | |||
@@ -287,6 +287,20 @@ void disable_local_APIC(void) | |||
287 | apic_write(APIC_SPIV, value); | 287 | apic_write(APIC_SPIV, value); |
288 | } | 288 | } |
289 | 289 | ||
290 | void lapic_shutdown(void) | ||
291 | { | ||
292 | unsigned long flags; | ||
293 | |||
294 | if (!cpu_has_apic) | ||
295 | return; | ||
296 | |||
297 | local_irq_save(flags); | ||
298 | |||
299 | disable_local_APIC(); | ||
300 | |||
301 | local_irq_restore(flags); | ||
302 | } | ||
303 | |||
290 | /* | 304 | /* |
291 | * This is to verify that we're looking at a real local APIC. | 305 | * This is to verify that we're looking at a real local APIC. |
292 | * Check these against your board if the CPUs aren't getting | 306 | * Check these against your board if the CPUs aren't getting |
diff --git a/include/asm-x86/apic_64.h b/include/asm-x86/apic_64.h index 3c8f21eef0be..2747a11a2b19 100644 --- a/include/asm-x86/apic_64.h +++ b/include/asm-x86/apic_64.h | |||
@@ -69,6 +69,7 @@ extern void clear_local_APIC (void); | |||
69 | extern void connect_bsp_APIC (void); | 69 | extern void connect_bsp_APIC (void); |
70 | extern void disconnect_bsp_APIC (int virt_wire_setup); | 70 | extern void disconnect_bsp_APIC (int virt_wire_setup); |
71 | extern void disable_local_APIC (void); | 71 | extern void disable_local_APIC (void); |
72 | extern void lapic_shutdown (void); | ||
72 | extern int verify_local_APIC (void); | 73 | extern int verify_local_APIC (void); |
73 | extern void cache_APIC_registers (void); | 74 | extern void cache_APIC_registers (void); |
74 | extern void sync_Arb_IDs (void); | 75 | extern void sync_Arb_IDs (void); |