aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-02-22 11:59:49 -0500
committerIngo Molnar <mingo@elte.hu>2009-02-22 11:59:49 -0500
commit2702e0a46c2d28da92b32c9b068ee1291fc0de35 (patch)
treec1e9868a4b91beeebd5f4e820588bc2ae8371911 /arch/x86/kernel/apic.c
parent42bb8cc5e81028e217105299001070d57eb84ad7 (diff)
parentadfafefd104d840ee4461965f22624d77532675b (diff)
Merge branch 'linus' into timers/hpet
Diffstat (limited to 'arch/x86/kernel/apic.c')
-rw-r--r--arch/x86/kernel/apic.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c
index 566a08466b19..570f36e44e59 100644
--- a/arch/x86/kernel/apic.c
+++ b/arch/x86/kernel/apic.c
@@ -47,6 +47,7 @@
47#include <asm/proto.h> 47#include <asm/proto.h>
48#include <asm/apic.h> 48#include <asm/apic.h>
49#include <asm/i8259.h> 49#include <asm/i8259.h>
50#include <asm/smp.h>
50 51
51#include <mach_apic.h> 52#include <mach_apic.h>
52#include <mach_apicdef.h> 53#include <mach_apicdef.h>
@@ -861,7 +862,7 @@ void clear_local_APIC(void)
861 } 862 }
862 863
863 /* lets not touch this if we didn't frob it */ 864 /* lets not touch this if we didn't frob it */
864#if defined(CONFIG_X86_MCE_P4THERMAL) || defined(X86_MCE_INTEL) 865#if defined(CONFIG_X86_MCE_P4THERMAL) || defined(CONFIG_X86_MCE_INTEL)
865 if (maxlvt >= 5) { 866 if (maxlvt >= 5) {
866 v = apic_read(APIC_LVTTHMR); 867 v = apic_read(APIC_LVTTHMR);
867 apic_write(APIC_LVTTHMR, v | APIC_LVT_MASKED); 868 apic_write(APIC_LVTTHMR, v | APIC_LVT_MASKED);
@@ -894,6 +895,10 @@ void disable_local_APIC(void)
894{ 895{
895 unsigned int value; 896 unsigned int value;
896 897
898 /* APIC hasn't been mapped yet */
899 if (!apic_phys)
900 return;
901
897 clear_local_APIC(); 902 clear_local_APIC();
898 903
899 /* 904 /*
@@ -1431,7 +1436,7 @@ static int __init detect_init_APIC(void)
1431 switch (boot_cpu_data.x86_vendor) { 1436 switch (boot_cpu_data.x86_vendor) {
1432 case X86_VENDOR_AMD: 1437 case X86_VENDOR_AMD:
1433 if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) || 1438 if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
1434 (boot_cpu_data.x86 == 15)) 1439 (boot_cpu_data.x86 >= 15))
1435 break; 1440 break;
1436 goto no_apic; 1441 goto no_apic;
1437 case X86_VENDOR_INTEL: 1442 case X86_VENDOR_INTEL:
@@ -1832,6 +1837,11 @@ void __cpuinit generic_processor_info(int apicid, int version)
1832 num_processors++; 1837 num_processors++;
1833 cpu = cpumask_next_zero(-1, cpu_present_mask); 1838 cpu = cpumask_next_zero(-1, cpu_present_mask);
1834 1839
1840 if (version != apic_version[boot_cpu_physical_apicid])
1841 WARN_ONCE(1,
1842 "ACPI: apic version mismatch, bootcpu: %x cpu %d: %x\n",
1843 apic_version[boot_cpu_physical_apicid], cpu, version);
1844
1835 physid_set(apicid, phys_cpu_present_map); 1845 physid_set(apicid, phys_cpu_present_map);
1836 if (apicid == boot_cpu_physical_apicid) { 1846 if (apicid == boot_cpu_physical_apicid) {
1837 /* 1847 /*