kernel irqbalance fixes to handle IRQs with balancing disabled
PATCH 3/8 kernel irqbalance fixes to handle IRQs with balancing disabled
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]>
arch/i386/kernel/io_apic.c +5 -2
@@ -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 )); }