Module Name: src Committed By: riastradh Date: Sat Nov 11 08:23:50 UTC 2017
Modified Files: src/sys/arch/xen/xen: evtchn.c Log Message: Add kasserts to help diagnose xen interrupt level bug. https://mail-index.netbsd.org/tech-kern/2017/11/09/msg022571.html To generate a diff of this commit: cvs rdiff -u -r1.76 -r1.77 src/sys/arch/xen/xen/evtchn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/xen/xen/evtchn.c diff -u src/sys/arch/xen/xen/evtchn.c:1.76 src/sys/arch/xen/xen/evtchn.c:1.77 --- src/sys/arch/xen/xen/evtchn.c:1.76 Sat Nov 11 08:22:08 2017 +++ src/sys/arch/xen/xen/evtchn.c Sat Nov 11 08:23:50 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: evtchn.c,v 1.76 2017/11/11 08:22:08 riastradh Exp $ */ +/* $NetBSD: evtchn.c,v 1.77 2017/11/11 08:23:50 riastradh Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -54,7 +54,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.76 2017/11/11 08:22:08 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.77 2017/11/11 08:23:50 riastradh Exp $"); #include "opt_xen.h" #include "isa.h" @@ -386,6 +386,11 @@ evtchn_do_event(int evtch, struct intrfr ci->ci_ilevel = ih->ih_level; ih_fun = (void *)ih->ih_fun; ih_fun(ih->ih_arg, regs); + KASSERTMSG(ci->ci_ilevel == ih->ih_level, + "event handler %p for evtsource[%d] (%s) changed ipl:" + " %d != %d", + ih->ih_realfun, evtch, evtsource[evtch]->ev_evname, + ci->ci_ilevel, ih->ih_level); ih = ih->ih_evt_next; } mutex_spin_exit(&evtlock[evtch]); @@ -410,6 +415,13 @@ splx: sti(); ih_fun = (void *)ih->ih_fun; ih_fun(ih->ih_arg, regs); + KASSERTMSG(ci->ci_ilevel == i, + "interrupt handler %p" + " for interrupt source %s" + " changed ipl: %d != %d", + ih->ih_realfun, + ci->ci_isources[i]->is_xname, + ci->ci_ilevel, i); cli(); } hypervisor_enable_ipl(i);