Index: xbd_xenbus.c =================================================================== RCS file: /cvsroot/src/sys/arch/xen/xen/xbd_xenbus.c,v retrieving revision 1.82 diff -u -p -r1.82 xbd_xenbus.c --- xbd_xenbus.c 15 Aug 2018 15:49:15 -0000 1.82 +++ xbd_xenbus.c 20 Aug 2018 19:43:17 -0000 @@ -932,6 +932,7 @@ xbd_diskstart(device_t self, struct buf vaddr_t va; int nsects, nbytes, seg; int notify, error = 0; + int s; DPRINTF(("xbd_diskstart(%p): b_bcount = %ld\n", bp, (long)bp->b_bcount)); @@ -947,6 +948,8 @@ xbd_diskstart(device_t self, struct buf goto err; } + s = splbio(); /* XXX SMP */ + if (__predict_false( sc->sc_backend_status == BLKIF_STATE_SUSPENDED)) { /* device is suspended, do not consume buffer */ @@ -1024,6 +1027,7 @@ out: RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->sc_ring, notify); if (notify) hypervisor_notify_via_evtchn(sc->sc_evtchn); + splx(s); /* XXXSMP */ err: return error; }