|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-3.1-testing] On pirq enable/disable we fully unregi
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1196963075 0
# Node ID b48655a325e095c21ba207117f6309955d642e4a
# Parent 0462bf70c6b9382fba4953a155a842b73202cfab
On pirq enable/disable we fully unregister/reregister with Xen. This
causes the underlying IRQ to be properly masked/unmasked, thus
avoiding deadlock scenarios if the IRQ is not EOIed.
Based on a patch by Chris Lalancette <clalance@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
linux-2.6.18-xen changeset: 313:51b2b0d0921c3aefb18e16a2eda68a5c3133e949
linux-2.6.18-xen date: Wed Nov 21 09:41:11 2007 +0000
---
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c | 16 +++++-----------
1 files changed, 5 insertions(+), 11 deletions(-)
diff -r 0462bf70c6b9 -r b48655a325e0
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Thu Dec 06 17:44:12
2007 +0000
+++ b/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Thu Dec 06 17:44:35
2007 +0000
@@ -778,20 +778,11 @@ static void shutdown_pirq(unsigned int i
static void enable_pirq(unsigned int irq)
{
- int evtchn = evtchn_from_irq(irq);
-
- if (VALID_EVTCHN(evtchn)) {
- unmask_evtchn(evtchn);
- pirq_unmask_notify(irq_to_pirq(irq));
- }
+ startup_pirq(irq);
}
static void disable_pirq(unsigned int irq)
{
- int evtchn = evtchn_from_irq(irq);
-
- if (VALID_EVTCHN(evtchn))
- mask_evtchn(evtchn);
}
static void ack_pirq(unsigned int irq)
@@ -810,7 +801,10 @@ static void end_pirq(unsigned int irq)
{
int evtchn = evtchn_from_irq(irq);
- if (VALID_EVTCHN(evtchn) && !(irq_desc[irq].status & IRQ_DISABLED)) {
+ if ((irq_desc[irq].status & (IRQ_DISABLED|IRQ_PENDING)) ==
+ (IRQ_DISABLED|IRQ_PENDING)) {
+ shutdown_pirq(irq);
+ } else if (VALID_EVTCHN(evtchn)) {
unmask_evtchn(evtchn);
pirq_unmask_notify(irq_to_pirq(irq));
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-3.1-testing] On pirq enable/disable we fully unregister/reregister with Xen. This,
Xen patchbot-3.1-testing <=
|
|
|
|
|