Re: USB autosuspend vs. URB submission

From: Alan Stern
Date: Thu Jan 10 2013 - 10:20:28 EST


On Thu, 10 Jan 2013, Oliver Neukum wrote:

> On Thursday 10 January 2013 00:05:55 Laurent Pinchart wrote:
>
> > I've had a quick look at the trace posted at
> > https://bugzilla.redhat.com/show_bug.cgi?id=879462 but usbmon only shows URBs
> > that are successfully submitted. I'm not sure what useful information I could
> > get from the trace.
>
> The test is at the very start of usb_submit_urb()
>
> if (!urb || !urb->complete)
> return -EINVAL;
> if (urb->hcpriv) {
> WARN_ONCE(1, "URB %p submitted while active\n", urb);
> return -EBUSY;
> }
>
> usbmon will never see such URBs

Not quite -- it will see them the first time they are submitted, when
the submission succeeds.

> I suggest that for debugging you change the WARN_ONCE into a WARN and compare
> the URB pointers of usbmon and dmesg.

Good idea.

> In the long run it is probably a good idea to pass duplicated URBs to usbmon by
> a special code path.

I'd prefer to add extra information to the WARN_ONCE message. Even
though it would require the extra effort of correlating the dmesg
output with the usbmon output.

You know, it's possible that the URB really was not submitted before
but instead the urb->hcpriv field got overwritten. Of course, that
would also be a bug.

Alan Stern

--
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/