Skip to contentSkip to conversation

fix timer interrupts on NUMA-Q

PATCH New Martin J. Bligh 1 participant 1 message Jul 11, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix timer interrupts on NUMA-Q

Since I turned on the IO-APICs on secondary quads, we are receiving timer interrupts on *all* quads, not just the first quad, each from their local timer chip. This causes time to progress far too rapidly ;-)

The simple patch below turns off the timer interrupts for IO-APICs other than interrupt 0, and has been tested to fix the problem. As it switches on clustered_apic_mode, it should be safe from hurting anyone else.

This fix is already in 2.4 - I'm playing catchup with 2.5 - the same patch applies with just a line offset

Please apply ...

Thanks,

Martin.

arch/i386/kernel/io_apic.c +8 -1
diff -urN virgin-2.4.19-pre8/arch/i386/kernel/io_apic.c linux-2.4.19-pre8-time/arch/i386/kernel/io_apic.c
@@ -654,7 +654,14 @@
 		}
 
 		irq = pin_2_irq(idx, apic, pin);
-		add_pin_to_irq(irq, apic, pin);
+		/*
+		 * skip adding the timer int on secondary nodes, which causes
+		 * a small but painful rift in the time-space continuum
+		 */
+		if (clustered_apic_mode && (apic != 0) && (irq == 0))
+			continue;
+		else
+			add_pin_to_irq(irq, apic, pin);
 
 		if (!apic && !IO_APIC_IRQ(irq))
 			continue;