linux/arch/ia64/kernel
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
..
cpufreq [CPUFREQ] move policy's governor initialisation out of low-level drivers into cpufreq core 2007-10-04 18:40:57 -04:00
.gitignore [IA64] Add gate.lds to list of files ignored by Git 2007-11-06 15:39:45 -08:00
acpi-ext.c
acpi-processor.c ACPI: Set _PSD ACPI_PDC_SMP_T_SWCOORD 2008-02-02 02:22:43 -05:00
acpi.c Merge branches 'release' and 'fluff' into release 2008-02-07 03:38:22 -05:00
asm-offsets.c
audit.c
brl_emu.c
crash_dump.c
crash.c [IA64] Fix kernel hangup in kdump on INIT 2007-10-12 15:24:40 -07:00
cyclone.c cyclone.c: silly use of volatile, __iomem fixes 2007-07-26 11:11:57 -07:00
efi_stub.S
efi.c [IA64] ia64_set_psr should use srlz.i 2008-02-04 15:50:13 -08:00
entry.h
entry.S [IA64] Wire up timerfd_{create,settime,gettime} syscalls 2008-02-08 12:00:32 -08:00
err_inject.c
esi_stub.S
esi.c
fsys.S [IA64] Convert to generic timekeeping/clocksource 2007-07-20 11:22:30 -07:00
fsyscall_gtod_data.h [IA64] generalize attribute of fsyscall_gtod_data 2008-02-04 15:36:36 -08:00
gate-data.S
gate.lds.S [IA64] increase .data.patch offset 2007-12-07 14:28:02 -08:00
gate.S
head.S [IA64] Remove assembler warnings on head.S 2007-12-19 11:15:12 -08:00
ia64_ksyms.c [IA64] Export three symbols for module use 2008-02-04 15:46:23 -08:00
init_task.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
iosapic.c [IA64] Fix irq migration in multiple vector domain 2008-03-04 14:16:20 -08:00
irq_ia64.c [IA64] Fix irq migration in multiple vector domain 2008-03-04 14:16:20 -08:00
irq_lsapic.c
irq.c [IA64] Clean up /proc/interrupts output 2007-11-06 15:40:52 -08:00
ivt.S
jprobes.S
kprobes.c [IA64] Fix the order of atomic operations in restore_previous_kprobes on ia64 2008-02-04 15:09:39 -08:00
machine_kexec.c vmcoreinfo: fix the configuration dependencies 2008-02-07 08:42:25 -08:00
machvec.c
Makefile
mca_asm.S [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca_drv_asm.S [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca_drv.c [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca_drv.h [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca.c [IA64] Fix large MCA bootmem allocation 2008-02-08 12:01:53 -08:00
minstate.h
module.c modules: fold percpu_modcopy into module.c 2008-01-30 23:27:58 +01:00
msi_ia64.c [IA64] Fix irq migration in multiple vector domain 2008-03-04 14:16:20 -08:00
numa.c
pal.S
palinfo.c [IA64] Update printing of feature set bits 2007-11-09 13:05:30 -08:00
patch.c [IA64] Clean-up McKinley Errata message 2007-11-06 15:40:07 -08:00
perfmon_default_smpl.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h
perfmon.c [IA64] Rename TIF_PERFMON_WORK back to TIF_NOTIFY_RESUME 2008-02-08 12:00:54 -08:00
process.c [IA64] Simplify cpu_idle_wait 2008-02-08 12:01:40 -08:00
ptrace.c [IA64] Synchronize RBS on PTRACE_ATTACH 2008-02-08 12:01:29 -08:00
relocate_kernel.S
sal.c [IA64] Export three symbols for module use 2008-02-04 15:46:23 -08:00
salinfo.c [IA64] tree-wide: Misc __cpu{initdata, init, exit} annotations 2007-10-12 14:13:38 -07:00
semaphore.c
setup.c [IA64] constify function pointer tables 2008-02-04 15:09:11 -08:00
sigframe.h
signal.c [IA64] signal(ia64): add a signal stack overflow check 2008-03-04 14:10:59 -08:00
smp.c [IA64] Allow smp_call_function_single() to current cpu 2007-07-30 16:26:45 -07:00
smpboot.c idle_regs() must be __cpuinit 2008-02-06 10:41:08 -08:00
sys_ia64.c
time.c time: fix typo in comments 2008-02-08 09:22:29 -08:00
topology.c Kobject: convert arch/* from kobject_unregister() to kobject_put() 2008-01-24 20:40:39 -08:00
traps.c [IA64] honor notify_die() returning NOTIFY_STOP 2008-02-05 08:26:44 -08:00
unaligned.c [IA64] honor notify_die() returning NOTIFY_STOP 2008-02-05 08:26:44 -08:00
uncached.c [IA64] make flush_tlb_kernel_range() an inline function 2007-12-19 12:30:30 -08:00
unwind_decoder.c
unwind_i.h
unwind.c
vmlinux.lds.S all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00