[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100119162746.04ba6d9e@lxorguk.ukuu.org.uk>
Date: Tue, 19 Jan 2010 16:27:46 +0000
From: Alan Cox <alan@...rguk.ukuu.org.uk>
To: Johan Hovold <jhovold@...il.com>
Cc: Oliver Neukum <oliver@...kum.org>,
Matthew Garrett <mjg59@...f.ucam.org>, dvomlehn@...co.com,
gregkh@...e.de, linux-usb@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [REGRESSION] "USB: use kfifo to buffer usb-generic serial
writes" causes gobi_loader to hang
On Tue, 19 Jan 2010 16:25:36 +0100
Johan Hovold <jhovold@...il.com> wrote:
> > > The log shows no call to usb_serial_generic_write_room()
> > > Do you consider this a bug in the tty layer?
> >
> > Actually this all makes sense because of where it was hanging. A reply of
> > 0 to the tty->ops->write will cause it to either return (O_NONBLOCK) or
> > sleep in the n_tty write code waiting for a write_wait wakeup
> > (tty_wakeup(tty))
> >
> > So the fix does indeed look correct.
>
> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists