Re: [REGRESSION] "USB: use kfifo to buffer usb-generic serial writes" causes gobi_loader to hang

From: Oliver Neukum
Date: Tue Jan 19 2010 - 13:44:20 EST


Am Dienstag, 19. Januar 2010 17:27:46 schrieb Alan Cox:
> On Tue, 19 Jan 2010 16:25:36 +0100
> Johan Hovold <jhovold@xxxxxxxxx> wrote:

> > Is it really a fix? If the fifo is already full the write urb should be
> > in use and Oliver's patch would amount to only a minor optimisation as
> > usb_serial_generic_write_start would return 0 anyway.
>
> IF the write returns a zero then it will sleep in n_tty waiting for a
> wakeup when the FIFO level drops sufficiently. If that isn't working
> check that all cases where data is cleared from the FIFO called
> tty_wakeup and do so *after* the FIFO has been partly emptied and the
> locking has ensured the space is visible to the write side.
>
usb_serial_generic_write_bulk_callback() always calls the softint
in the single URB case. Therefore the test with the patch I sent.
It is unlikely to be chance that the hang happens just as the FIFO
is full.

Regards
Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/