From: Paul Bolle <pebolle@tiscali.nl>
To: qemu-devel@nongnu.org
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Mark Burkley <qemu@emutex.com>,
Max Krasnyansky <maxk@qualcomm.com>
Subject: [Qemu-devel] [PATCH] usb-linux: return USB_RET_STALL on -EPIPE
Date: Tue, 13 Oct 2009 13:40:08 +0200 [thread overview]
Message-ID: <1255434008.1817.40.camel@localhost.localdomain> (raw)
0) This is an attempt to get an issue in usb-linux.c, for which a patch
was posted about a year ago, finally fixed.
1) Mark Burkley submitted a "EHCI emulation module" for review in in
October 2008 (see:
http://lists.gnu.org/archive/html/qemu-devel/2008-10/msg01326.html). No
EHCI emulation module was ever committed to qemu.
2) Part of that (large) patch was a fix for a separate issue in
usb-linux.c. Max Krasnyansky has ACK'ed that fix (see:
http://lists.gnu.org/archive/html/qemu-devel/2008-11/msg00032.html).
3) I already asked whether this fix was ready to be committed in last
April (see:
http://lists.gnu.org/archive/html/qemu-devel/2009-04/msg01763.html)
4) Maybe submitting this fix as a separate patch (with a really long
commit message but without a Signed-off-by) and cc-ing everbody involved
will help if actually getting this issue fixed.
Paul Bolle
---
usb-linux: return USB_RET_STALL on -EPIPE
Max Krasnyansky wrote:
> Anthony Liguori wrote:
>> Mark Burkley wrote:
>>> Hi Anthony,
>>> [...]
>>> I am seeing an issue with a
>>> memory key I am using for testing. ioctl returns EPIPE (which I
>>> would have thought was a STALL) to an asynchronous IN completion in
>>> usb-linux.c but then this is returned as USB_RET_NAK to EHCI which
>>> confuses my WinXP target because the transfer is then never
>>> completed.
>>>
>>> Can I just check that it was intentional to return NAK for EPIPE
>>> returns in asynchronous completions? If so, then I will try to
>>> detect the stall in my implementation and treat differently to a
>>> NAK. It's just that if I modify usb-linux.c to return
>>> USB_RET_STALL on -EPIPE then it works fine.
>
> I just looked at the usb-linuc.c:async_complete() code and it looks like
> it was intentional but I cannot remember why I wrote that way. And what
> you're saying makes sense. ie It should be a STALL. In fact I think that
> might fix the regression with USB storage devices that some people have
> reported.
> I'll play some more with this later today. I want to make sure that the
> change we're talking about does not break existing devices that I
> thoroughly tested as part of the usb async re-write. If everything works
> as expected then we'll change it.
Ok. I just tested that change (ie returning STALL instead of NAK on EPIPE)
with a bunch of devices: USB serial adapter, CF card reader, USB webcam (MS
VX-3000) and MS USB mouse. All that stuff was hooked up to XP-SP3 and all of
them are perfectly usable at the same time.
In other words here is my ACK :)
Acked-by: Max Krasnyansky <maxk@qualcomm.com>
Tested-by: Paul Bolle <pebolle@tiscali.nl>
---
usb-linux.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/usb-linux.c b/usb-linux.c
index 9e5d9c4..d712134 100644
--- a/usb-linux.c
+++ b/usb-linux.c
@@ -275,7 +275,9 @@ static void async_complete(void *opaque)
case -EPIPE:
set_halt(s, p->devep);
- /* fall through */
+ p->len = USB_RET_STALL;
+ break;
+
default:
p->len = USB_RET_NAK;
break;
--
1.6.5.rc2
next reply other threads:[~2009-10-13 11:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-13 11:40 Paul Bolle [this message]
2009-10-13 13:46 ` [Qemu-devel] Re: [PATCH] usb-linux: return USB_RET_STALL on -EPIPE Anthony Liguori
2009-10-13 15:52 ` Paul Bolle
2009-10-13 16:04 ` Anthony Liguori
2009-10-13 16:12 ` Paul Bolle
2009-10-13 16:22 ` Anthony Liguori
2009-10-13 17:23 ` Max Krasnyansky
2009-10-13 18:53 ` Paul Bolle
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=1255434008.1817.40.camel@localhost.localdomain \
--to=pebolle@tiscali.nl \
--cc=aliguori@us.ibm.com \
--cc=maxk@qualcomm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu@emutex.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.