x86: APIC: enable workaround on AMD Fam10h CPUs
authorBorislav Petkov <borislav.petkov@amd.com>
Tue, 3 Feb 2009 15:24:22 +0000 (16:24 +0100)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 4 Feb 2009 02:09:33 +0000 (18:09 -0800)
Impact: fix to enable APIC for AMD Fam10h on chipsets with a missing/b0rked
ACPI MP table (MADT)

Booting a 32bit kernel on an AMD Fam10h CPU running on chipsets with
missing/b0rked MP table leads to a hang pretty early in the boot process
due to the APIC not being initialized. Fix that by falling back to the
default APIC base address in 32bit code, as it is done in the 64bit
codepath.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/kernel/apic.c

index 4b6df2469fe3ddda97dd7b901171b8bba5c483f0..115449f869ee368f567cfd38bc8605a47944078c 100644 (file)
@@ -1436,7 +1436,7 @@ static int __init detect_init_APIC(void)
        switch (boot_cpu_data.x86_vendor) {
        case X86_VENDOR_AMD:
                if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
-                   (boot_cpu_data.x86 == 15))
+                   (boot_cpu_data.x86 >= 15))
                        break;
                goto no_apic;
        case X86_VENDOR_INTEL: