Re: Question: drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback()

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

 



On Tue, Apr 07, 2015 at 06:57:09PM +0000, Mark Enstone wrote:
> linux-usb,
> 
> Apologies if I've come at this the wrong way, I've read MAINTAINERS
> and usb-serial.txt to get your name.
> 
> Kernel 3.15 added logic to usb_serial_generic_read_bulk_callback() to
> resubmit read URBs in the general/default fail case (for failures
> other than urb->status = ENOENT, ECONNRESET, ESHUTDOWN. Also EPIPE).
> 
> On Raspberry Pi, running a 3.18 kernel, I am seeing -EPROTO as the
> urb->status  in usb_serial_generic_read_bulk_callback()  when the last
> CP210X USB-UART device is removed from a hub (the hub remains attached
> to the Raspberry Pi).  ((removing a non-last CP210X from the hub, does
> not return EPROTO, does return one of the specifically identified
> errnos)).  The URB is retried, which fails again with EPROTO, is
> retried, fails in the same way again, etc. "forever".
> 
> I am not seeing this same behavior on a similarly configured Dell
> Optiplex desktop.  Thus far, only on RPi.
> 
> Question: have you seen such behavior? 

Yes, I just debugged a related issue where using large unaligned buffers
could prevent the hub driver from processing the disconnect event. This
could also be triggered by enabling debugging, which would print the
-EPROTO error message to my slow serial console.

I just realised that this debug message used to be an error before 3.19,
and could therefore trigger the bug you're experiencing on systems with
a slow console.

Could you try updating to 3.19 (or later) or to cherry pick aa8e22128b40
("usb: serial: silence all non-critical read errors") and see if that
helps?

We should backport that one to stable either way.

Thanks,
Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux