[PATCH] More irq balance fixes

Andi Kleen (ak@suse.de)
Sat, 31 May 2003 13:52:52 +0200


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
diff -u -u -r1.72 io_apic.c
--- linux/arch/i386/kernel/io_apic.c 30 May 2003 20:11:58 -0000 1.72
+++ linux/arch/i386/kernel/io_apic.c 31 May 2003 10:24:18 -0000
@@ -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;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/