x86: fix APIC warning on 32bit
PATCH 1/1 x86: fix APIC warning on 32bit
for
[Bug #10613] BIOS bug, APIC version is 0 for CPU#0!
http://bugzilla.kernel.org/show_bug.cgi?id=10613
BIOS bug, APIC version is 0 for CPU#0! fixing up to 0x10. (tell your hw vendor)
Signed-off-by Yinghai Lu <[email protected]>
arch/x86/kernel/acpi/boot.c +10 -2
@@ -242,12 +242,17 @@ static int __init acpi_parse_madt(structstatic void __cpuinit acpi_register_lapic (int id,u8 enabled) { +unsigned int ver =0 ; +if (!enabled) { ++disabled_cpus;return ; } -generic_processor_info (id,0 ); +if (boot_cpu_physical_apicid !=-1U ) + ver = apic_version[boot_cpu_physical_apicid]; + +generic_processor_info (id, ver); } static int __init
@@ -763,8 +768,11 @@ static void __init acpi_register_lapic_a mp_lapic_addr = address;set_fixmap_nocache (FIX_APIC_BASE , address); -if (boot_cpu_physical_apicid ==-1U ) +if (boot_cpu_physical_apicid ==-1U ) { +unsigned int ver =GET_APIC_VERSION (apic_read (APIC_LVR )); boot_cpu_physical_apicid =GET_APIC_ID (read_apic_id ()); + apic_version[boot_cpu_physical_apicid] = ver; + } }static int __init early_acpi_parse_madt_lapic_addr_ovr (void )
PATCH 1/1 x86: fix APIC warning on 32bit v2
for
http://bugzilla.kernel.org/show_bug.cgi?id=10613
BIOS bug, APIC version is 0 for CPU#0! fixing up to 0x10. (tell your hw vendor)
v2: fix 64 bit compilation
Signed-off-by Yinghai Lu <[email protected]>
arch/x86/kernel/acpi/boot.c +14 -2
@@ -242,12 +242,19 @@ static int __init acpi_parse_madt(structstatic void __cpuinit acpi_register_lapic (int id,u8 enabled) { +unsigned int ver =0 ; +if (!enabled) { ++disabled_cpus;return ; } -generic_processor_info (id,0 ); +#ifdef CONFIG_X86_32 +if (boot_cpu_physical_apicid !=-1U ) + ver = apic_version[boot_cpu_physical_apicid]; +#endif + +generic_processor_info (id, ver); } static int __init
@@ -763,8 +770,13 @@ static void __init acpi_register_lapic_a mp_lapic_addr = address;set_fixmap_nocache (FIX_APIC_BASE , address); -if (boot_cpu_physical_apicid ==-1U ) +if (boot_cpu_physical_apicid ==-1U ) { boot_cpu_physical_apicid =GET_APIC_ID (read_apic_id ()); +#ifdef CONFIG_X86_32 + apic_version[boot_cpu_physical_apicid] = +GET_APIC_VERSION (apic_read (APIC_LVR )); +#endif + } }static int __init early_acpi_parse_madt_lapic_addr_ovr (void )