linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [syzbot] INFO: rcu detected stall in tx
@ 2021-05-20 21:25 Guido Kiener
  2021-05-21  1:24 ` Alan Stern
  0 siblings, 1 reply; 17+ messages in thread
From: Guido Kiener @ 2021-05-20 21:25 UTC (permalink / raw)
  To: Alan Stern; +Cc: dpenkler, USB list, Guido Kiener, Thinh.Nguyen, mathias.nyman

Sorry for the messing "RE: Re: ....". One should be enough.
Next mails I'll send from my private account again, since I can't change the company rules.
This thread continues from my last mail.
Alan, please see below and add other recipient if required.

> > > Otherwise I see only the other approach to change hundred drivers
> > > and add the cases EPROTO, EILSEQ and ETIME in each callback handler.
> > > The usbtmc driver already respects the EILSEQ and ETIME, and only
> > > EPROTO is missing.
> > > The rest should be more a management task.
> > > BTW do you assume it is only a problem for INT pipes or is it also a
> > > problem for isochronous and bulk transfers?
> >
> > All of them.  Control too.
> >
> > > > Will you be able to test patches?
> > >
> > > I only can test the USBTMC function in some different PCs. I do not
> > > have automated regression tests for USB drivers or Linux kernels.
> > > Maybe there is company who could do that.
> >
> > Well then, if I do find time to write a patch, I'll ask you to try it
> > out with the usbtmc driver.
> 
> You mean that you will do a patch in urb.c or a host driver? Or just add a line in
> usbtmc.c?
> Anyhow there is no hurry. On May 20 I will send you a mail if I'm able to provoke one
> of these hardware errors EPROTO, EILSQ, or ETIME. Otherwise it doesn't make
> sense to test it.
> 
> -Guido

I've tested to pull the cable and I can easy produce the -EPROTO (-71) error in the usbtmc.c driver.
The error also happens when I have no traffic and just switch off the USBTMC device (which I can do from home office).
When there is traffic, the IN/OUT pipe will also show some -EPROTO errors from the flying urbs.

On my test PC the amount of error messages vary from 1 to ca. 10 error message issued by the INT pipe (see below).
Nevertheless I do not see the endless loop, since the USB disconnect stops the loop.
(Tested with USB 2.0, older kernel 4.15, but latest modified usbtmc.c driver using ehci-pci)
So I can test fixes (of course with latest kernel) and also setup a machine with USB 3.0.

1. Example
[1616527.017863] usbtmc 1-1.4:1.0: usbtmc_write_bulk_cb - nonzero write bulk status received: -71
[1616527.032489] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.053998] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.076145] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.098143] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.120244] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.142244] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.164440] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.186517] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.208175] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.230272] usbtmc 1-1.4:1.0: unknown status received: -71
[1616527.241982] usb 1-1.4: USB disconnect, device number 3

2. Example
[1622454.299131] usbtmc 1-1.4:1.0: unknown status received: -71
[1622454.305815] usbtmc 1-1.4:1.0: usbtmc_write_bulk_cb - nonzero write bulk status received: -71
[1622454.309921] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -71
[1622454.319121] usbtmc 1-1.4:1.0: unknown status received: -71
[1622454.341199] usbtmc 1-1.4:1.0: unknown status received: -71
[1622454.363336] usbtmc 1-1.4:1.0: unknown status received: -71
[1622454.385466] usbtmc 1-1.4:1.0: unknown status received: -71
[1622454.407576] usbtmc 1-1.4:1.0: unknown status received: -71
[1622454.422870] usb 1-1.4: USB disconnect, device number 7

3. Example
[1623429.713784] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -71
[1623429.714037] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.714279] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.714528] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.714778] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.715029] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.715278] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.715528] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.715777] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.716028] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.716277] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.718916] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.719168] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.722404] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.725666] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.725918] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero read bulk status received: -2
[1623429.727837] usbtmc 1-1.4:1.0: unknown status received: -71
[1623429.749949] usbtmc 1-1.4:1.0: unknown status received: -71
[1623429.772094] usbtmc 1-1.4:1.0: unknown status received: -71
[1623429.794184] usbtmc 1-1.4:1.0: unknown status received: -71
[1623429.816297] usbtmc 1-1.4:1.0: unknown status received: -71
[1623429.838479] usbtmc 1-1.4:1.0: unknown status received: -71
[1623429.838795] usb 1-1.4: USB disconnect, device number 8


^ permalink raw reply	[flat|nested] 17+ messages in thread
* RE: Re: Re: Re: Re: Re: [syzbot] INFO: rcu detected stall in tx
@ 2021-05-19 16:14 Guido Kiener
  2021-05-19 17:35 ` Alan Stern
  0 siblings, 1 reply; 17+ messages in thread
From: Guido Kiener @ 2021-05-19 16:14 UTC (permalink / raw)
  To: Alan Stern, dave penkler
  Cc: Dmitry Vyukov, syzbot, Greg Kroah-Hartman, lee.jones, USB list,
	bp, dwmw, hpa, linux-kernel, luto, mingo, syzkaller-bugs, tglx,
	x86

> On Wed, May 19, 2021 at 10:48:29AM +0200, dave penkler wrote:
> > On Sat, 8 May 2021 at 16:29, Alan Stern <stern@rowland.harvard.edu> wrote:
> > >
> > > On Sat, May 08, 2021 at 10:14:41AM +0200, dave penkler wrote:
> > > > When the host driver detects a protocol error while processing an
> > > > URB it completes the URB with EPROTO status and marks the endpoint
> > > > as halted.
> > >
> > > Not true.  It does not mark the endpoint as halted, not unless it
> > > receives a STALL handshake from the device.  A STALL is not a
> > > protocol error.
> > >
> > > > When the class driver resubmits the URB and the if the host driver
> > > > finds the endpoint still marked as halted it should return EPIPE
> > > > status on the resubmitted URB
> > >
> > > Irrelevant.
> > Not at all. The point is that when an application is talking to an
> > instrument over the usbtmc driver, the underlying host controller and
> > its driver will detect and silence a babbling endpoint.
> 
> No, they won't.  That is, they will detect a babble error and return an error status, but
> they won't silence the endpoint.  What makes you think they will?

Maybe there is a misunderstanding. I guess that Dave wanted to propose:
"EPROTO is a link level issue and needs to be handled by the host driver.
When the host driver detects a protocol error while processing an
URB it SHOULD complete the URB with EPROTO status and SHOULD mark the endpoint
as halted."
Is this a realistic fix for all host drivers?

-Guido

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2021-09-04  7:55 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <000000000000a9b79905c04e25a0@google.com>
2021-04-19  7:27 ` [syzbot] INFO: rcu detected stall in tx Dmitry Vyukov
2021-06-28  6:38   ` Zhang, Qiang
2021-06-28 14:17     ` Alan Stern
2021-06-27 20:20 ` syzbot
2021-09-04  7:55 ` syzbot
2021-05-20 21:25 Guido Kiener
2021-05-21  1:24 ` Alan Stern
2021-05-21 22:17   ` guido
2021-05-22  2:13     ` Alan Stern
  -- strict thread matches above, loose matches on Subject: below --
2021-05-19 16:14 Re: Re: Re: Re: " Guido Kiener
2021-05-19 17:35 ` Alan Stern
2021-05-19 19:38   ` Thinh Nguyen
2021-05-20  2:01     ` Alan Stern
2021-05-20 20:30       ` Thinh Nguyen
2021-05-24 15:18         ` Mathias Nyman
2021-05-24 18:55           ` Alan Stern
2021-05-24 19:23             ` Thinh Nguyen
2021-05-24 22:16               ` Mathias Nyman
2021-05-24 22:48                 ` Thinh Nguyen

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).