aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-09-26 04:52:30 -0400
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 04:52:30 -0400
commitedd965229669f8f8dfddec8c863250440fb65ab3 (patch)
tree29c1af6da44624c394a65e464c2e1d3b05545369
parent606bd58de6542e847c51b1b6d83a4cd70a632fe7 (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.c71
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
1292static 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();