Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-3]: src/sys/arch/xen/xen Pull up revision 1.11 (requested by bouy...



details:   https://anonhg.NetBSD.org/src/rev/e67f42af4399
branches:  netbsd-3
changeset: 575587:e67f42af4399
user:      tron <tron%NetBSD.org@localhost>
date:      Thu Apr 28 10:36:43 2005 +0000

description:
Pull up revision 1.11 (requested by bouyer in ticket #192):
Avoid a race between do_hypervisor_event() and stipending() that could
cause an event to be both handled and marked as pending, or being
marked as pending twice (triggering the diagnostic check
evtch_maskcount[port] == 0 in hypervisor_set_ipending):
mask and clear event by word of 32bit in do_hypervisor_event() or stipending(),
instead of by indiviual bits in do_event() or xenevt_event().
In addition this is marginally more efficient.

diffstat:

 sys/arch/xen/xen/evtchn.c |  7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diffs (28 lines):

diff -r e9bf3842e40f -r e67f42af4399 sys/arch/xen/xen/evtchn.c
--- a/sys/arch/xen/xen/evtchn.c Thu Apr 28 10:34:42 2005 +0000
+++ b/sys/arch/xen/xen/evtchn.c Thu Apr 28 10:36:43 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: evtchn.c,v 1.3.2.7 2005/04/28 10:34:42 tron Exp $      */
+/*     $NetBSD: evtchn.c,v 1.3.2.8 2005/04/28 10:36:43 tron Exp $      */
 
 /*
  *
@@ -34,7 +34,7 @@
 
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.3.2.7 2005/04/28 10:34:42 tron Exp $");
+__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.3.2.8 2005/04/28 10:36:43 tron Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -163,9 +163,6 @@
 #endif
        ci = &cpu_info_primary;
 
-       hypervisor_mask_event(evtch);
-       hypervisor_clear_event(evtch);
-
        /*
         * Shortcut for the debug handler, we want it to always run,
         * regardless of the IPL level.



Home | Main Index | Thread Index | Old Index