summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorbouyer <bouyer@NetBSD.org>2013-12-03 20:51:00 +0000
committerbouyer <bouyer@NetBSD.org>2013-12-03 20:51:00 +0000
commitc8fbb1a0ab618f1276dc117d6cedf8d300873bb0 (patch)
treee73da705ee3ac365b6dd02babd9224adb8e9776d /sys
parentc8d847f551706d53fda574140c77227f06076607 (diff)
Remove the "evtchn_do_event: handler %p didn't lower ipl %d %d\n" printf.
With help from Robert Elz we've finally figured out what's going on, and it actually isn't a bug in the handler, but related to spin mutexes. When a spin mutex is released, the IPL isn't lowered back if the curcpu is holding other spin mutexes. This is because mutexes may not be released in order (and, in this case, the CPU in interrupted while it holds a spin mutex at IPL < IPL_SCHED). Also remove the test and resetting the IPL, it will be reset anyway inside the loop, or at the end of the loop.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/xen/xen/evtchn.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/sys/arch/xen/xen/evtchn.c b/sys/arch/xen/xen/evtchn.c
index 6c9e77bd0fa..90df67f9346 100644
--- a/sys/arch/xen/xen/evtchn.c
+++ b/sys/arch/xen/xen/evtchn.c
@@ -1,4 +1,4 @@
-/* $NetBSD: evtchn.c,v 1.69 2013/01/13 21:01:05 bouyer Exp $ */
+/* $NetBSD: evtchn.c,v 1.70 2013/12/03 20:51:00 bouyer Exp $ */
/*
* Copyright (c) 2006 Manuel Bouyer.
@@ -54,7 +54,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.69 2013/01/13 21:01:05 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.70 2013/12/03 20:51:00 bouyer Exp $");
#include "opt_xen.h"
#include "isa.h"
@@ -343,13 +343,6 @@ splx:
ih_fun = (void *)ih->ih_fun;
ih_fun(ih->ih_arg, regs);
cli();
- if (ci->ci_ilevel != i) {
- printf("evtchn_do_event: "
- "handler %p didn't lower "
- "ipl %d %d\n",
- ih_fun, ci->ci_ilevel, i);
- ci->ci_ilevel = i;
- }
}
hypervisor_enable_ipl(i);
/* more pending IPLs may have been registered */