diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-05-21 17:19:38 +0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-05-21 17:26:04 +0400 |
commit | 2f1bd67d544d3c086fb5101513f4b6c8f4291b43 (patch) | |
tree | 73bfdd40a8f303948cbaf21b9a35a81685c1a598 /arch/x86/xen | |
parent | 4b3451ad1313134821ad13b6fe821d0b4409aa18 (diff) | |
download | linux-2f1bd67d544d3c086fb5101513f4b6c8f4291b43.tar.xz |
xen/smp: unbind irqworkX when unplugging vCPUs.
The git commit 1ff2b0c303698e486f1e0886b4d9876200ef8ca5
"xen: implement IRQ_WORK_VECTOR handler" added the functionality
to have a per-cpu "irqworkX" for the IPI APIC functionality.
However it missed the unbind when a vCPU is unplugged resulting
in an orphaned per-cpu interrupt line for unplugged vCPU:
30: 216 0 xen-dyn-event hvc_console
31: 810 4 xen-dyn-event eth0
32: 29 0 xen-dyn-event blkif
- 36: 0 0 xen-percpu-ipi irqwork2
- 37: 287 0 xen-dyn-event xenbus
+ 36: 287 0 xen-dyn-event xenbus
NMI: 0 0 Non-maskable interrupts
LOC: 0 0 Local timer interrupts
SPU: 0 0 Spurious interrupts
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'arch/x86/xen')
-rw-r--r-- | arch/x86/xen/smp.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 3ec3f8eb19fc..ce9e98b1e69c 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -419,6 +419,7 @@ static void xen_cpu_die(unsigned int cpu) unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL); unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL); unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), NULL); + unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL); xen_uninit_lock_cpu(cpu); xen_teardown_timer(cpu); |