diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-03-05 15:49:25 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-03-05 15:49:25 -0500 |
| commit | caab36b593b44c97e3c7707c6a8054b320f8d622 (patch) | |
| tree | 70c8d67d51c616c357529d761a82ad382481dad7 /arch/x86/kernel/apic/apic.c | |
| parent | a1413c89ae6a4b7a9a43f7768934a81ffb5c629a (diff) | |
| parent | 73af76dfd1f998dba71d8e8e785cbe77a990bf17 (diff) | |
Merge branch 'x86/mce2' into x86/core
Diffstat (limited to 'arch/x86/kernel/apic/apic.c')
| -rw-r--r-- | arch/x86/kernel/apic/apic.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index f9cecdfd05c5..30909a258d0f 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c | |||
| @@ -46,6 +46,7 @@ | |||
| 46 | #include <asm/idle.h> | 46 | #include <asm/idle.h> |
| 47 | #include <asm/mtrr.h> | 47 | #include <asm/mtrr.h> |
| 48 | #include <asm/smp.h> | 48 | #include <asm/smp.h> |
| 49 | #include <asm/mce.h> | ||
| 49 | 50 | ||
| 50 | unsigned int num_processors; | 51 | unsigned int num_processors; |
| 51 | 52 | ||
| @@ -842,6 +843,14 @@ void clear_local_APIC(void) | |||
| 842 | apic_write(APIC_LVTTHMR, v | APIC_LVT_MASKED); | 843 | apic_write(APIC_LVTTHMR, v | APIC_LVT_MASKED); |
| 843 | } | 844 | } |
| 844 | #endif | 845 | #endif |
| 846 | #ifdef CONFIG_X86_MCE_INTEL | ||
| 847 | if (maxlvt >= 6) { | ||
| 848 | v = apic_read(APIC_LVTCMCI); | ||
| 849 | if (!(v & APIC_LVT_MASKED)) | ||
| 850 | apic_write(APIC_LVTCMCI, v | APIC_LVT_MASKED); | ||
| 851 | } | ||
| 852 | #endif | ||
| 853 | |||
| 845 | /* | 854 | /* |
| 846 | * Clean APIC state for other OSs: | 855 | * Clean APIC state for other OSs: |
| 847 | */ | 856 | */ |
| @@ -1241,6 +1250,12 @@ void __cpuinit setup_local_APIC(void) | |||
| 1241 | apic_write(APIC_LVT1, value); | 1250 | apic_write(APIC_LVT1, value); |
| 1242 | 1251 | ||
| 1243 | preempt_enable(); | 1252 | preempt_enable(); |
| 1253 | |||
| 1254 | #ifdef CONFIG_X86_MCE_INTEL | ||
| 1255 | /* Recheck CMCI information after local APIC is up on CPU #0 */ | ||
| 1256 | if (smp_processor_id() == 0) | ||
| 1257 | cmci_recheck(); | ||
| 1258 | #endif | ||
| 1244 | } | 1259 | } |
| 1245 | 1260 | ||
| 1246 | void __cpuinit end_local_APIC_setup(void) | 1261 | void __cpuinit end_local_APIC_setup(void) |
