kernel irq balance code moves IRQs around without checking whether they are movable or not. Add those checks.
Signed-off-by: Venkatesh Pallipadi <[EMAIL PROTECTED]> Index: linux-2.6.21-tolkml/arch/i386/kernel/io_apic.c =================================================================== --- linux-2.6.21-tolkml.orig/arch/i386/kernel/io_apic.c 2007-04-25 20:08:32.000000000 -0700 +++ linux-2.6.21-tolkml/arch/i386/kernel/io_apic.c 2007-05-07 09:54:50.000000000 -0700 @@ -446,7 +446,7 @@ Dprintk("Rotating IRQs among CPUs.\n"); for_each_online_cpu(i) { for (j = 0; j < NR_IRQS; j++) { - if (!irq_desc[j].action) + if (!irq_desc[j].action || irq_balancing_disabled(j)) continue; /* Is it a significant load ? */ if (IRQ_DELTA(CPU_TO_PACKAGEINDEX(i),j) < @@ -582,7 +582,7 @@ selected_irq = -1; for (j = 0; j < NR_IRQS; j++) { /* Is this an active IRQ? */ - if (!irq_desc[j].action) + if (!irq_desc[j].action || irq_balancing_disabled(j)) continue; if (imbalance <= IRQ_DELTA(max_loaded,j)) continue; @@ -665,6 +665,9 @@ /* push everything to CPU 0 to give us a starting point. */ for (i = 0 ; i < NR_IRQS ; i++) { + if (irq_balancing_disabled(i)) + continue; + irq_desc[i].pending_mask = cpumask_of_cpu(0); set_pending_irq(i, cpumask_of_cpu(0)); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/