linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johan Hovold <jhovold@gmail.com>
To: Oliver Neukum <oliver@neukum.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Johan Hovold <jhovold@gmail.com>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	dvomlehn@cisco.com, gregkh@suse.de, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [REGRESSION] "USB: use kfifo to buffer usb-generic serial writes" causes gobi_loader to hang
Date: Tue, 19 Jan 2010 20:45:55 +0100	[thread overview]
Message-ID: <20100119194555.GB21373@localhost> (raw)
In-Reply-To: <201001191944.54622.oliver@neukum.org>

On Tue, Jan 19, 2010 at 07:44:54PM +0100, Oliver Neukum wrote:
> Am Dienstag, 19. Januar 2010 17:27:46 schrieb Alan Cox:
> > On Tue, 19 Jan 2010 16:25:36 +0100
> > Johan Hovold <jhovold@gmail.com> 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.

But that is the correct behaviour: for every kfifo_get, exactly one urb
is submitted and on completion softint (tty_wake) is called. I guess we
could call softint from usb_serial_generic_write_start (after the
kfifo_get is made) but we would still have a 1-1 mapping.

In the log posted earlier everything looks fine with respect to fifo
put/get. What is apparent though is that the last write urb submitted
never completes (and consequently, the writing process is never woken).

And by the way, as the application in question is doing megabyte writes
at a time, isn't the fifo quite likely to be full most of the time?

/Johan


  reply	other threads:[~2010-01-19 19:46 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-17  2:55 [REGRESSION] "USB: use kfifo to buffer usb-generic serial writes" causes gobi_loader to hang Matthew Garrett
2010-01-17  8:13 ` Marcel Holtmann
2010-01-17  9:14 ` Oliver Neukum
2010-01-18  1:58   ` Matthew Garrett
2010-01-18 17:25     ` Oliver Neukum
2010-01-18 20:14       ` Matthew Garrett
2010-01-19 13:20         ` Oliver Neukum
2010-01-19 13:29           ` Alan Cox
2010-01-19 13:57             ` Oliver Neukum
2010-01-19 14:21               ` Alan Cox
2010-01-19 15:15                 ` Oliver Neukum
2010-01-19 14:26               ` Alan Cox
2010-01-19 15:25                 ` Johan Hovold
2010-01-19 15:52                   ` Johan Hovold
2010-01-19 16:27                   ` Alan Cox
2010-01-19 18:44                     ` Oliver Neukum
2010-01-19 19:45                       ` Johan Hovold [this message]
2010-01-28 17:45           ` Greg KH
2010-01-28 18:40             ` Oliver Neukum
2010-01-28 22:32               ` Greg KH
2010-02-03 16:46           ` Matthew Garrett
2010-02-03 17:21             ` Oliver Neukum
2010-02-03 22:37               ` Matthew Garrett
2010-02-03 22:58                 ` Oliver Neukum
2010-02-05 19:58                   ` Matthew Garrett
2010-02-05 21:35                     ` Matthew Garrett
2010-02-08 19:00                       ` Oliver Neukum
2010-02-05 21:59                     ` Oliver Neukum
2010-02-13  2:09                       ` Anssi Hannula
2010-02-13  2:50                         ` Alan Stern
2010-02-13  7:11                           ` Oliver Neukum
2010-02-13 13:35                             ` Anssi Hannula
2010-02-13 19:01                               ` Anssi Hannula
2010-02-15 13:08                                 ` Oliver Neukum
2010-02-20 16:03                                   ` Anssi Hannula
2010-02-20 18:19                                     ` Oliver Neukum
2010-02-21 21:28                                       ` Alan Stern
2010-02-21 21:42                                         ` Anssi Hannula
2010-02-21 22:12                                           ` Oliver Neukum
2010-02-21 23:06                                             ` Anssi Hannula
2010-02-21 23:13                                               ` Anssi Hannula
2010-02-21 23:21                                                 ` Anssi Hannula
2010-02-22 15:28                                                   ` Alan Stern
2010-02-22 18:35                                                     ` Anssi Hannula
2010-02-22 19:10                                                       ` Alan Stern
2010-02-22 19:14                                                         ` Matthew Garrett
2010-02-22 20:12                                                           ` Alan Stern
2010-02-24  2:33                                                             ` Anssi Hannula
2010-02-22 19:24                                                         ` Anssi Hannula
2010-02-22 20:10                                                           ` Alan Stern
2010-02-22 21:24                                                           ` Alan Cox
2010-02-22 21:23                                                             ` Matthew Garrett
2010-02-22 23:26                                                       ` Oliver Neukum
2010-02-23  1:55                                                         ` Anssi Hannula
2010-02-21 22:09                                         ` Oliver Neukum
2010-02-21 21:37                                       ` Anssi Hannula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100119194555.GB21373@localhost \
    --to=jhovold@gmail.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=dvomlehn@cisco.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=oliver@neukum.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).