|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] evtchn.c:
ChangeSet 1.1374, 2005/04/23 12:10:11+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx
evtchn.c:
Fix freebsd lockup.
evtchn.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletion(-)
diff -Nru a/freebsd-5.3-xen-sparse/i386-xen/i386-xen/evtchn.c
b/freebsd-5.3-xen-sparse/i386-xen/i386-xen/evtchn.c
--- a/freebsd-5.3-xen-sparse/i386-xen/i386-xen/evtchn.c 2005-04-23 08:03:12
-04:00
+++ b/freebsd-5.3-xen-sparse/i386-xen/i386-xen/evtchn.c 2005-04-23 08:03:12
-04:00
@@ -54,7 +54,7 @@
{
unsigned long l1, l2;
unsigned int l1i, l2i, port;
- int irq;
+ int irq, owned;
unsigned long flags;
shared_info_t *s = HYPERVISOR_shared_info;
vcpu_info_t *vcpu_info = &s->vcpu_data[smp_processor_id()];
@@ -78,12 +78,16 @@
l2 &= ~(1 << l2i);
port = (l1i << 5) + l2i;
+ if ( (owned = mtx_owned(&sched_lock)) != 0 )
+ mtx_unlock_spin_flags(&sched_lock, MTX_QUIET);
if ( (irq = evtchn_to_irq[port]) != -1 ) {
struct intsrc *isrc = intr_lookup_source(irq);
intr_execute_handlers(isrc, frame);
} else {
evtchn_device_upcall(port);
}
+ if ( owned )
+ mtx_lock_spin_flags(&sched_lock, MTX_QUIET);
}
}
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] evtchn.c:,
BitKeeper Bot <=
|
Previous by Date: |
[Xen-changelog] xc_domain.c:, BitKeeper Bot |
Next by Date: |
[Xen-changelog] xenpmap.h, hypervisor.h, xen_machdep.c, pmap.c, machdep.c:, BitKeeper Bot |
Previous by Thread: |
[Xen-changelog] xc_domain.c:, BitKeeper Bot |
Next by Thread: |
[Xen-changelog] xenpmap.h, hypervisor.h, xen_machdep.c, pmap.c, machdep.c:, BitKeeper Bot |
Indexes: |
[Date]
[Thread]
[Top]
[All Lists] |
|
|
|
|