On 17/09/17(Sun) 17:00, Martin Pieuchot wrote:
> On 17/09/17(Sun) 08:33, Bryan Steele wrote:
> > On Sun, Sep 17, 2017 at 12:14:06PM +0200, Marc Espie wrote:
> > > This is on current, I get this on repeat very regularly.
> > > 
> > > wsmouse0 detached
> > > ums0 detached
> > > uhidev0 detached
> > > splassert: usb_transfer_complete: want 5 have 6
> > > splassert: usb_transfer_complete: want 5 have 6
> > > splassert: usb_transfer_complete: want 5 have 6
> 
> Could you post a trace?  You'll need a kernel with the diff below.

Thanks to krw@ I got a trace.  The problem comes from ohci_intr1() which
calls usb_transfer_complete() directly at IPL_BIO.

This problem is visible since I changed the old SPLUSBCHECK macro into a
real splsoftassert().  Since this problem was already present before,
I'll simply disable the check for release and revisit it later.

Could you confirm this makes your console usable again?

Index: usbdi.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdi.c,v
retrieving revision 1.95
diff -u -p -r1.95 usbdi.c
--- usbdi.c     15 May 2017 10:52:08 -0000      1.95
+++ usbdi.c     19 Sep 2017 10:14:34 -0000
@@ -718,7 +718,10 @@ usb_transfer_complete(struct usbd_xfer *
        int polling = pipe->device->bus->use_polling;
        int status, flags;
 
+#if 0
+       /* XXX ohci_intr1() calls usb_transfer_complete() for RHSC. */
        splsoftassert(IPL_SOFTUSB);
+#endif
 
        DPRINTFN(5, ("usb_transfer_complete: pipe=%p xfer=%p status=%d "
                     "actlen=%d\n", pipe, xfer, xfer->status, xfer->actlen));

Reply via email to