public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: "Tomita, Haruo" <haruo.tomita@toshiba.co.jp>
Cc: Alan Stern <stern@rowland.harvard.edu>,
	USB development list <linux-usb-devel@lists.sourceforge.net>,
	SCSI development list <linux-scsi@vger.kernel.org>,
	"Tomita, Haruo" <htomita@pcs.pc.ome.toshiba.co.jp>
Subject: Re: usb-strage not working in the latest kernel 2.4
Date: Mon, 08 Sep 2003 09:04:43 -0700	[thread overview]
Message-ID: <3F5CA89B.8060003@pacbell.net> (raw)
In-Reply-To: <200309070128.KAA28169@toshiba.co.jp>

Tomita, Haruo wrote:
> It is because it is hard to generate an error in testing
> two simultaneously. When testing simultaneously,
> much time is required by the time it generates an error.

This is basically a good thing:  the root causes are
getting fixed one by one, so it needs more time before
one of the remaining problems appears.

Of course, that means it's harder to find/fix whatever
problem you're hitting ... :(



> The reason is not known.
> 
> Haruo> 1. Bulk command transfer result=-104
> 
> [skip]
> 
> Alan> This was the same sort of pattern we saw before.  No data was 
> Alan> transferred from the drive, and the command timed out
> > and was aborted.
> 
> I am also looking at this pattern repeatedly.

Some sort of USB-level trace would be very useful here,
such as from a CATC capture.


> It seems that a device does not answer in the case of kernel 2.4.
> However, when operating by kernel 2.6 and two or more devices
> are connected simultaneously, it operates. 
> I cannot think the error of a device.

I'd almost agree, except that the device stops responding;
and seems to stop responding to anything except (cases I've
seen) that it'll accept more OUT packets ... maybe treating
them as data to write to the disk (one hypothesis).

When a device stops responding, it's hard to think the
problem is anything other than with the device.  (Though
I still don't see where the storage class-specific reset
gets sent by usb-storage, maybe that'd clean up better.)


What's curious is that "two or more devices connected"
behavior.  Are they both doing I/O at the same time?
Having a second active device would change a few things:

  - The EHCI controller will switch between endpoints,
    doing some transfers from one device then the next.

    A second active device means longer gaps between
    packets going to the device ... so if one of those
    devices can't handle continuous streaming of high
    speed packets, it may lock up except when that
    second device increases those gaps.

    Yes, we DO seem to have started seeing such storage
    adapters.  Ones from GeneSys appear to have that
    problem with fast EHCI controllers, like the one in
    NForce2 (which can issue two or more back-to-back
    transfers using the "park" mechanism).

  - Since usb-storage on 2.4 doesn't stream usb-storage
    transfers (64 writes of one page, vs one big write
    of 64 pages), the EHCI controller spends lots of
    time unlinking bulk endpoints (QHs) from its i/o
    queue and linking them right back again.

    The VIA chips have been very sensitive, even buggy,
    in how they handle this logic.  I've been unable to
    convince myself the current EHCI driver has a bug in
    this area -- though maybe it's possible someone else
    would have better luck finding one.

    If this is a factor, then you should be able to
    change the behavior by increasing EHCI_SHRINK_JIFFIES
    (top of ehci-hcd.c), maybe to HZ/100 or so.  I know
    that increasing that from zero was a big win in some
    VT6202 (stability) and VT8235 (performance on 2.4)
    testing, but the other EHCI silicon didn't much care.

That's about all the insight I have to share on this
at the moment.

- Dave



  parent reply	other threads:[~2003-09-08 15:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-07  1:28 usb-strage not working in the latest kernel 2.4 Tomita, Haruo
2003-09-08 14:12 ` Alan Stern
2003-09-08 16:04 ` David Brownell [this message]
2003-09-08 19:42   ` Alan Stern
2003-09-09 17:18     ` David Brownell
  -- strict thread matches above, loose matches on Subject: below --
2003-09-10  7:41 Tomita, Haruo
2003-09-10 15:46 ` Alan Stern
2003-09-11  5:06 Tomita, Haruo
2003-09-11 14:39 ` Alan Stern
2003-09-12  4:46 Tomita, Haruo
2003-09-12 20:03 ` Alan Stern
2003-09-13  6:50 Tomita, Haruo
2003-09-13 15:14 ` Alan Stern
2003-09-17  6:50 Tomita, Haruo
2003-09-17 15:07 ` Alan Stern

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=3F5CA89B.8060003@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=haruo.tomita@toshiba.co.jp \
    --cc=htomita@pcs.pc.ome.toshiba.co.jp \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=stern@rowland.harvard.edu \
    /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