Skip to contentSkip to conversation

remove spurious timer interrupts

PATCH New Martin J. Bligh 1 participant 1 message May 13, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 remove spurious timer interrupts

Since I turned on the IO-APICs on secondary quads in 2.4.19-pre2, 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. 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;