linux/arch/i386
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
..
boot
crypto
kernel [PATCH] x86: kernel irq balance doesn't work 2006-06-23 07:42:57 -07:00
lib [PATCH] x86: cache pollution aware __copy_from_user_ll() 2006-06-23 07:42:56 -07:00
mach-default
mach-es7000
mach-generic [PATCH] i386: apic= command line option should always be 2006-05-30 20:31:05 -07:00
mach-visws
mach-voyager [PATCH] voyager: no need to define BITS_PER_BYTE when it's already in types.h 2006-04-19 09:13:51 -07:00
math-emu
mm [PATCH] build fix: CONFIG_MEMORY_HOTPLUG=y on i386 2006-05-21 12:59:17 -07:00
oprofile [PATCH] Add Core Solo and Core Duo support to oprofile 2006-05-15 11:20:56 -07:00
pci [PATCH] x86: call eisa_set_level_irq() in pbibios_lookup_irq() 2006-06-23 07:42:56 -07:00
power [PATCH] Don't trigger full rebuild via CONFIG_X86_MCE 2006-06-23 07:42:56 -07:00
defconfig
Kconfig [PATCH] Unify pxm_to_node() and node_to_pxm() 2006-06-23 07:42:48 -07:00
Kconfig.cpu
Kconfig.debug
Makefile
Makefile.cpu