More irq balance fixes
PATCH 1/1 More irq balance fixes
John Stultz noticed that kirqd didn't start because of another logic error, which broke irq balancing. This was still a fallout from the generic subarchitecture changes.
Actually it still refuses to balance anything on my test box, but perhaps I'm just not able to generate enough interrupts.
Anyways, with this patch the thread is running again at least.
-Andi
Index: linux/arch/i386/kernel/io_apic.c
===================================================================
RCS file: /home/cvs/linux-2.5/arch/i386/kernel/io_apic.c,v retrieving revision 1.72
arch/i386/kernel/io_apic.c +4 -9
@@ -352,16 +352,8 @@unsigned long allowed_mask;unsigned int new_cpu; -if (irqbalance_disabled ==IRQBALANCE_CHECK_ARCH ) - irqbalance_disabled =NO_BALANCE_IRQ ; -if (irqbalance_disabled) { -static int warned; -if (warned ==0 ) { -printk ("irqbalance disabled\n" ); - warned =1 ; - } +if (irqbalance_disabled)return ; - } allowed_mask = cpu_online_map & irq_affinity[irq]; new_cpu =move (cpu, allowed_mask, now,1 );
@@ -620,6 +612,9 @@struct cpuinfo_x86 *c; c = &boot_cpu_data; +/* When not overwritten by the command line ask subarchitecture. */ +if (irqbalance_disabled ==IRQBALANCE_CHECK_ARCH ) + irqbalance_disabled =NO_BALANCE_IRQ ;if (irqbalance_disabled)return 0 ;