mirror of
https://abf.rosa.ru/djam/kernel-xen.git
synced 2025-02-23 07:42:46 +00:00
46 lines
1.8 KiB
Diff
46 lines
1.8 KiB
Diff
From: Suresh Siddha <suresh.b.siddha@intel.com>
|
|
Subject: x86, intr-remap: Avoid irq_chip mask/unmask in fixup_irqs() for intr-remapping
|
|
References: bnc#558247
|
|
Patch-upstream: Yes
|
|
|
|
Commit 84e21493a3b28c9fefe99fe827fc0c0c101a813d upstream.
|
|
|
|
In the presence of interrupt-remapping, irqs will be migrated in
|
|
the process context and we don't do (and there is no need to)
|
|
irq_chip mask/unmask while migrating the interrupt.
|
|
|
|
Similarly fix the fixup_irqs() that get called during cpu
|
|
offline and avoid calling irq_chip mask/unmask for irqs that are
|
|
ok to be migrated in the process context.
|
|
|
|
While we didn't observe any race condition with the existing
|
|
code, this change takes complete advantage of
|
|
interrupt-remapping in the newer generation platforms and avoids
|
|
any potential HW lockup's (that often worry Eric :)
|
|
|
|
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
|
|
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
|
|
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
|
Signed-off-by: Rafael J. Wysocki <rjw@suse.de>
|
|
Automatically created from "patches.arch/x86-intr-remap-Avoid-irq_chip-mask-unmask-in-fixup_irqs-for-intr-remapping.patch" by xen-port-patches.py
|
|
|
|
--- head-2010-01-07.orig/arch/x86/kernel/irq-xen.c 2010-01-07 10:30:58.000000000 +0100
|
|
+++ head-2010-01-07/arch/x86/kernel/irq-xen.c 2010-01-07 10:32:41.000000000 +0100
|
|
@@ -320,7 +320,7 @@ void fixup_irqs(void)
|
|
affinity = cpu_all_mask;
|
|
}
|
|
|
|
- if (desc->chip->mask)
|
|
+ if (!(desc->status & IRQ_MOVE_PCNTXT) && desc->chip->mask)
|
|
desc->chip->mask(irq);
|
|
|
|
if (desc->chip->set_affinity)
|
|
@@ -328,7 +328,7 @@ void fixup_irqs(void)
|
|
else if (!(warned++))
|
|
set_affinity = 0;
|
|
|
|
- if (desc->chip->unmask)
|
|
+ if (!(desc->status & IRQ_MOVE_PCNTXT) && desc->chip->unmask)
|
|
desc->chip->unmask(irq);
|
|
|
|
spin_unlock(&desc->lock);
|