diff options
Diffstat (limited to 'arch/x86/kernel/apic.c')
-rw-r--r-- | arch/x86/kernel/apic.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c index 0f830e4f5675..115449f869ee 100644 --- a/arch/x86/kernel/apic.c +++ b/arch/x86/kernel/apic.c | |||
@@ -895,6 +895,10 @@ void disable_local_APIC(void) | |||
895 | { | 895 | { |
896 | unsigned int value; | 896 | unsigned int value; |
897 | 897 | ||
898 | /* APIC hasn't been mapped yet */ | ||
899 | if (!apic_phys) | ||
900 | return; | ||
901 | |||
898 | clear_local_APIC(); | 902 | clear_local_APIC(); |
899 | 903 | ||
900 | /* | 904 | /* |
@@ -1432,7 +1436,7 @@ static int __init detect_init_APIC(void) | |||
1432 | switch (boot_cpu_data.x86_vendor) { | 1436 | switch (boot_cpu_data.x86_vendor) { |
1433 | case X86_VENDOR_AMD: | 1437 | case X86_VENDOR_AMD: |
1434 | 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) || |
1435 | (boot_cpu_data.x86 == 15)) | 1439 | (boot_cpu_data.x86 >= 15)) |
1436 | break; | 1440 | break; |
1437 | goto no_apic; | 1441 | goto no_apic; |
1438 | case X86_VENDOR_INTEL: | 1442 | case X86_VENDOR_INTEL: |
@@ -1833,6 +1837,11 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
1833 | num_processors++; | 1837 | num_processors++; |
1834 | cpu = cpumask_next_zero(-1, cpu_present_mask); | 1838 | cpu = cpumask_next_zero(-1, cpu_present_mask); |
1835 | 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 | |||
1836 | physid_set(apicid, phys_cpu_present_map); | 1845 | physid_set(apicid, phys_cpu_present_map); |
1837 | if (apicid == boot_cpu_physical_apicid) { | 1846 | if (apicid == boot_cpu_physical_apicid) { |
1838 | /* | 1847 | /* |