aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2008-12-23 01:47:42 -0500
committerLen Brown <len.brown@intel.com>2008-12-23 01:47:42 -0500
commit7b37b5fd9ba32c0c5afc3537eed7e7466f2173e2 (patch)
treeb90d287473c7a1d7e23981d13287523e219d6e5a /arch
parent3d44cc3e01ee1b40317f79ed54324e25c4f848df (diff)
ACPI: disable MPS when NO APIC-table found
When ACPI is asked to find an MADT (APIC table) and fails, then ACPI expects to run in PIC mode. However, if an MP Table is was found, IRQs will be registered as if an IOAPIC is being used, even though ACPI is configuring interrupt links links for PIC mode. In this scenario, disable MPS so that IRQs are registered in PIC mode, consistent with ACPI. http://bugzilla.kernel.org/show_bug.cgi?id=12257 Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/acpi/boot.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 4c51a2f8fd31..de8ce79dd881 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1359,6 +1359,17 @@ static void __init acpi_process_madt(void)
1359 "Invalid BIOS MADT, disabling ACPI\n"); 1359 "Invalid BIOS MADT, disabling ACPI\n");
1360 disable_acpi(); 1360 disable_acpi();
1361 } 1361 }
1362 } else {
1363 /*
1364 * ACPI found no MADT, and so ACPI wants UP PIC mode.
1365 * In the event an MPS table was found, forget it.
1366 * Boot with "acpi=off" to use MPS on such a system.
1367 */
1368 if (smp_found_config) {
1369 printk(KERN_WARNING PREFIX
1370 "No APIC-table, disabling MPS\n");
1371 smp_found_config = 0;
1372 }
1362 } 1373 }
1363#endif 1374#endif
1364 return; 1375 return;