Module Name: src Committed By: jdolecek Date: Tue May 12 09:54:02 UTC 2020
Modified Files: src/sys/arch/xen/xen: xbd_xenbus.c Log Message: move xen_intr_disestablish() call in xbd_xenbus_suspend() so it's executed without holding the xbd mutex, to avoid LOCKDEBUG assertion on suspend while here only disestablish the intr if it was established part of PR port-xen/55207 To generate a diff of this commit: cvs rdiff -u -r1.125 -r1.126 src/sys/arch/xen/xen/xbd_xenbus.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/xbd_xenbus.c diff -u src/sys/arch/xen/xen/xbd_xenbus.c:1.125 src/sys/arch/xen/xen/xbd_xenbus.c:1.126 --- src/sys/arch/xen/xen/xbd_xenbus.c:1.125 Thu May 7 19:25:57 2020 +++ src/sys/arch/xen/xen/xbd_xenbus.c Tue May 12 09:54:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: xbd_xenbus.c,v 1.125 2020/05/07 19:25:57 maxv Exp $ */ +/* $NetBSD: xbd_xenbus.c,v 1.126 2020/05/12 09:54:02 jdolecek Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xbd_xenbus.c,v 1.125 2020/05/07 19:25:57 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xbd_xenbus.c,v 1.126 2020/05/12 09:54:02 jdolecek Exp $"); #include "opt_xen.h" @@ -436,7 +436,10 @@ xbd_xenbus_detach(device_t dev, int flag } hypervisor_mask_event(sc->sc_evtchn); - xen_intr_disestablish(sc->sc_ih); + if (sc->sc_ih != NULL) { + xen_intr_disestablish(sc->sc_ih); + sc->sc_ih = NULL; + } mutex_enter(&sc->sc_lock); while (xengnt_status(sc->sc_ring_gntref)) @@ -488,10 +491,14 @@ xbd_xenbus_suspend(device_t dev, const p hypervisor_mask_event(sc->sc_evtchn); sc->sc_backend_status = BLKIF_STATE_SUSPENDED; - xen_intr_disestablish(sc->sc_ih); mutex_exit(&sc->sc_lock); + if (sc->sc_ih != NULL) { + xen_intr_disestablish(sc->sc_ih); + sc->sc_ih = NULL; + } + xenbus_device_suspend(sc->sc_xbusd); aprint_verbose_dev(dev, "removed event channel %d\n", sc->sc_evtchn);