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));