patch-2.4.0-test9 linux/arch/i386/kernel/io_apic.c

Next file: linux/arch/i386/kernel/mpparse.c
Previous file: linux/arch/i386/kernel/entry.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test8/linux/arch/i386/kernel/io_apic.c linux/arch/i386/kernel/io_apic.c
@@ -38,7 +38,7 @@
 /*
  * # of IO-APICs and # of IRQ routing registers
  */
-int nr_ioapics = 0;
+int nr_ioapics;
 int nr_ioapic_registers[MAX_IO_APICS];
 
 /* I/O APIC entries */
@@ -48,7 +48,7 @@
 struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
 
 /* MP IRQ source entries */
-int mp_irq_entries = 0;
+int mp_irq_entries;
 
 #if CONFIG_SMP
 # define TARGET_CPUS cpu_online_map
@@ -172,8 +172,8 @@
 
 #define MAX_PIRQS 8
 int pirq_entries [MAX_PIRQS];
-int pirqs_enabled = 0;
-int skip_ioapic_setup = 0;
+int pirqs_enabled;
+int skip_ioapic_setup;
 
 static int __init ioapic_setup(char *str)
 {
@@ -219,10 +219,10 @@
 	int i;
 
 	for (i = 0; i < mp_irq_entries; i++)
-		if ( (mp_irqs[i].mpc_irqtype == type) &&
-			(mp_irqs[i].mpc_dstapic == mp_ioapics[apic].mpc_apicid) &&
-			(mp_irqs[i].mpc_dstirq == pin))
-
+		if (mp_irqs[i].mpc_irqtype == type &&
+		    (mp_irqs[i].mpc_dstapic == mp_ioapics[apic].mpc_apicid ||
+		     mp_irqs[i].mpc_dstapic == MP_APIC_ALL) &&
+		    mp_irqs[i].mpc_dstirq == pin)
 			return i;
 
 	return -1;
@@ -262,7 +262,8 @@
 		int lbus = mp_irqs[i].mpc_srcbus;
 
 		for (apic = 0; apic < nr_ioapics; apic++)
-			if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic)
+			if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic ||
+			    mp_irqs[i].mpc_dstapic == MP_APIC_ALL)
 				break;
 
 		if ((mp_bus_id_to_type[lbus] == MP_BUS_PCI) &&

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)