NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/48270: umass / ehci effectively hangs system during stresstest



On 10/04/13 06:55, m.ramakers%gmail.com@localhost wrote:

Number:         48270
Synopsis:       umass / ehci effectively hangs system during stresstest


Hi,

Can you see if the attached patch helps it recover, please?

Why it needs to recover is another matter.

Nick
Index: sys/dev/usb/usbdi.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdi.c,v
retrieving revision 1.159
diff -u -p -r1.159 usbdi.c
--- sys/dev/usb/usbdi.c 4 Oct 2013 12:47:04 -0000       1.159
+++ sys/dev/usb/usbdi.c 16 Oct 2013 07:22:10 -0000
@@ -296,10 +296,16 @@ usbd_transfer(usbd_xfer_handle xfer)
        if (!(flags & USBD_NO_COPY) && size != 0 && !usbd_xfer_isread(xfer))
                memcpy(KERNADDR(dmap, 0), xfer->buffer, size);
 
-       /* xfer is not valid after the transfer method unless synchronous */
+       /*
+        * xfer is not valid after the transfer method unless synchronous, or
+        * there was and error
+        */
        err = pipe->methods->transfer(xfer);
 
        if (err != USBD_IN_PROGRESS && err) {
+               pipe->running = 0;
+               SIMPLEQ_REMOVE_HEAD(&pipe->queue, next);
+
                /* The transfer has not been queued, so free buffer. */
                if (xfer->rqflags & URQ_AUTO_DMABUF) {
                        struct usbd_bus *bus = pipe->device->bus;



Home | Main Index | Thread Index | Old Index