linux/arch/ia64
Kenji Kaneshige a6cd6322d5 [IA64] Fix irq migration in multiple vector domain
Fix the problem that the following error message is sometimes displayed
at irq migration when vector domain is enabled.

    "Unexpected interrupt vector %d on CPU %d is not mapped to any IRQ!"

The cause of this problem is an interrupt is sent to the previous
target CPU after cleaning up vector to irq mapping table. To clean up
vector to irq map on the previous target CPU safty, change the irq
migration in multiple vector domain as follows. The original idea is
from x86 interrupt management code.

    - Delay vector to irq table cleanup until the interrupts are sent
      to new target CPUs. By this, it is ensured that target CPU is
      completely changed on the interrupt controller side.

    - Even after the interrupts are sent to new target CPUs, there can
      be pended interrupts remaining on the previous target CPU. So we
      need to delay clearning up vector to irq table until the pended
      interrupt is handled. For this, send IPI to the previous target
      CPU with lower priority vector and clean up vector to irq table
      in its handler.

This patch affects only to irq migration code with multiple vector
domain is enabled.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-03-04 14:16:20 -08:00
..
configs [IA64] update sn2 defconfig to 64kb pages 2007-10-29 11:32:42 -07:00
dig [PATCH] tty: Remove include of screen_info.h from tty.h 2006-07-10 13:24:16 -07:00
hp Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2008-02-05 10:24:52 -08:00
ia32 [IA64] signal(ia64_ia32): add a signal stack overflow check 2008-03-04 14:11:22 -08:00
kernel [IA64] Fix irq migration in multiple vector domain 2008-03-04 14:16:20 -08:00
lib [IA64] export copy_page() to modules 2007-12-07 16:10:19 -08:00
mm Introduce flags for reserve_bootmem() 2008-02-07 08:42:25 -08:00
oprofile Combine instrumentation menus in kernel/Kconfig.instrumentation 2007-10-19 11:53:54 -07:00
pci Change pci_raw_ops to pci_raw_read/write 2008-02-10 12:52:46 -08:00
scripts [IA64] don't assume that unwcheck.py is executable 2007-12-07 14:42:08 -08:00
sn Change pci_raw_ops to pci_raw_read/write 2008-02-10 12:52:46 -08:00
defconfig [IA64] Update arch/ia64/configs/* s/SLAB/SLUB/ 2007-08-13 14:54:34 -07:00
install.sh Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig [IA64] CONFIG_SGI_SN2 - auto select NUMA and ACPI_NUMA 2008-03-04 14:04:11 -08:00
Kconfig.debug [PATCH] Move Kprobes and Oprofile to "Instrumentation Support" menu 2005-11-07 07:53:35 -08:00
Makefile [IA64] don't assume that unwcheck.py is executable 2007-12-07 14:42:08 -08:00
module.lds Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00