kernel_optimize_test/kernel/irq
Zhang Yanmin 1b61b910e9 [PATCH] x86: kernel irq balance doesn't work
On i386, kernel irq balance doesn't work.

1) In function do_irq_balance, after kernel finds the min_loaded cpu but
   before calling set_pending_irq to really pin the selected_irq to the
   target cpu, kernel does a cpus_and with irq_affinity[selected_irq].
   Later on, when the irq is acked, kernel would calls
   move_native_irq=>desc->handler->set_affinity to change the irq affinity.
    However, every function pointed by
   hw_interrupt_type->set_affinity(unsigned int irq, cpumask_t cpumask)
   always changes irq_affinity[irq] to cpumask.  Next time when recalling
   do_irq_balance, it has to do cpu_ands again with
   irq_affinity[selected_irq], but irq_affinity[selected_irq] already
   becomes one cpu selected by the first irq balance.

2) Function balance_irq in file arch/i386/kernel/io_apic.c has the same
   issue.

[akpm@osdl.org: cleanups]
Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-23 07:42:57 -07:00
..
autoprobe.c [PATCH] Using msleep() instead of HZ 2005-06-28 21:20:29 -07:00
handle.c Don't call a NULL ack function in the generic IRQ code. 2005-09-28 20:29:44 +10:00
internals.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile [PATCH] build kernel/irq/migration.c only if CONFIG_GENERIC_PENDING_IRQ is set 2006-04-11 06:18:41 -07:00
manage.c [PATCH] request_irq(): remove warnings from irq probing 2006-04-28 08:33:46 -07:00
migration.c [PATCH] build kernel/irq/migration.c only if CONFIG_GENERIC_PENDING_IRQ is set 2006-04-11 06:18:41 -07:00
proc.c [PATCH] x86: kernel irq balance doesn't work 2006-06-23 07:42:57 -07:00
spurious.c [PATCH] irqpoll 2005-06-28 21:20:35 -07:00