diff options
author | Andi Kleen <ak@suse.de> | 2006-09-26 04:52:30 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:30 -0400 |
commit | edd965229669f8f8dfddec8c863250440fb65ab3 (patch) | |
tree | 29c1af6da44624c394a65e464c2e1d3b05545369 | |
parent | 606bd58de6542e847c51b1b6d83a4cd70a632fe7 (diff) |
[PATCH] Remove MPS table APIC renumbering
The MPS table specification says that the operating system should
renumber the IO-APICs following the table as needed. However in
ACPI this is not allowed or neeeded and all x86-64 systems are ACPI
compliant.
The code was already disabled on some systems because it caused
problems there. Remove it completely now.
CC: mdomsch@dell.com
Signed-off-by: Andi Kleen <ak@suse.de>
-rw-r--r-- | arch/x86_64/kernel/io_apic.c | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index 1ccf1b41c3ed..a02ed17d05dc 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -1283,72 +1283,6 @@ void disable_IO_APIC(void) | |||
1283 | } | 1283 | } |
1284 | 1284 | ||
1285 | /* | 1285 | /* |
1286 | * function to set the IO-APIC physical IDs based on the | ||
1287 | * values stored in the MPC table. | ||
1288 | * | ||
1289 | * by Matt Domsch <Matt_Domsch@dell.com> Tue Dec 21 12:25:05 CST 1999 | ||
1290 | */ | ||
1291 | |||
1292 | static void __init setup_ioapic_ids_from_mpc (void) | ||
1293 | { | ||
1294 | union IO_APIC_reg_00 reg_00; | ||
1295 | int apic; | ||
1296 | int i; | ||
1297 | unsigned char old_id; | ||
1298 | unsigned long flags; | ||
1299 | |||
1300 | /* | ||
1301 | * Set the IOAPIC ID to the value stored in the MPC table. | ||
1302 | */ | ||
1303 | for (apic = 0; apic < nr_ioapics; apic++) { | ||
1304 | |||
1305 | /* Read the register 0 value */ | ||
1306 | spin_lock_irqsave(&ioapic_lock, flags); | ||
1307 | reg_00.raw = io_apic_read(apic, 0); | ||
1308 | spin_unlock_irqrestore(&ioapic_lock, flags); | ||
1309 | |||
1310 | old_id = mp_ioapics[apic].mpc_apicid; | ||
1311 | |||
1312 | |||
1313 | printk(KERN_INFO "Using IO-APIC %d\n", mp_ioapics[apic].mpc_apicid); | ||
1314 | |||
1315 | |||
1316 | /* | ||
1317 | * We need to adjust the IRQ routing table | ||
1318 | * if the ID changed. | ||
1319 | */ | ||
1320 | if (old_id != mp_ioapics[apic].mpc_apicid) | ||
1321 | for (i = 0; i < mp_irq_entries; i++) | ||
1322 | if (mp_irqs[i].mpc_dstapic == old_id) | ||
1323 | mp_irqs[i].mpc_dstapic | ||
1324 | = mp_ioapics[apic].mpc_apicid; | ||
1325 | |||
1326 | /* | ||
1327 | * Read the right value from the MPC table and | ||
1328 | * write it into the ID register. | ||
1329 | */ | ||
1330 | apic_printk(APIC_VERBOSE,KERN_INFO "...changing IO-APIC physical APIC ID to %d ...", | ||
1331 | mp_ioapics[apic].mpc_apicid); | ||
1332 | |||
1333 | reg_00.bits.ID = mp_ioapics[apic].mpc_apicid; | ||
1334 | spin_lock_irqsave(&ioapic_lock, flags); | ||
1335 | io_apic_write(apic, 0, reg_00.raw); | ||
1336 | spin_unlock_irqrestore(&ioapic_lock, flags); | ||
1337 | |||
1338 | /* | ||
1339 | * Sanity check | ||
1340 | */ | ||
1341 | spin_lock_irqsave(&ioapic_lock, flags); | ||
1342 | reg_00.raw = io_apic_read(apic, 0); | ||
1343 | spin_unlock_irqrestore(&ioapic_lock, flags); | ||
1344 | if (reg_00.bits.ID != mp_ioapics[apic].mpc_apicid) | ||
1345 | printk("could not set ID!\n"); | ||
1346 | else | ||
1347 | apic_printk(APIC_VERBOSE," ok.\n"); | ||
1348 | } | ||
1349 | } | ||
1350 | |||
1351 | /* | ||
1352 | * There is a nasty bug in some older SMP boards, their mptable lies | 1286 | * There is a nasty bug in some older SMP boards, their mptable lies |
1353 | * about the timer IRQ. We do the following to work around the situation: | 1287 | * about the timer IRQ. We do the following to work around the situation: |
1354 | * | 1288 | * |
@@ -1863,11 +1797,6 @@ void __init setup_IO_APIC(void) | |||
1863 | 1797 | ||
1864 | apic_printk(APIC_VERBOSE, "ENABLING IO-APIC IRQs\n"); | 1798 | apic_printk(APIC_VERBOSE, "ENABLING IO-APIC IRQs\n"); |
1865 | 1799 | ||
1866 | /* | ||
1867 | * Set up the IO-APIC IRQ routing table. | ||
1868 | */ | ||
1869 | if (!acpi_ioapic) | ||
1870 | setup_ioapic_ids_from_mpc(); | ||
1871 | sync_Arb_IDs(); | 1800 | sync_Arb_IDs(); |
1872 | setup_IO_APIC_irqs(); | 1801 | setup_IO_APIC_irqs(); |
1873 | init_IO_APIC_traps(); | 1802 | init_IO_APIC_traps(); |