From: Hans de Goede <hdegoede@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: Hans de Goede <hdegoede@redhat.com>, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 7/7] usb-hcd-xhci: Update endpoint context dequeue pointer for streams too
Date: Mon, 23 Sep 2013 20:54:07 +0200 [thread overview]
Message-ID: <1379962447-5431-8-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1379962447-5431-1-git-send-email-hdegoede@redhat.com>
With streams the endpoint context dequeue pointer should point to the
dequeue value for the currently active stream.
At least Linux guests expect it to point to value set by an set_ep_dequeue
upon completion of the set_ep_dequeue (before kicking the ep).
Otherwise the Linux kernel will complain (and things won't work):
xhci_hcd 0000:00:05.0: Mismatch between completed Set TR Deq Ptr command & xHCI internal state.
xhci_hcd 0000:00:05.0: ep deq seg = ffff8800366f0880, deq ptr = ffff8800366ec010
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
hw/usb/hcd-xhci.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 4890344..0bbf296 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -1216,6 +1216,7 @@ static XHCIStreamContext *xhci_find_stream(XHCIEPContext *epctx,
static void xhci_set_ep_state(XHCIState *xhci, XHCIEPContext *epctx,
XHCIStreamContext *sctx, uint32_t state)
{
+ XHCIRing *ring = NULL;
uint32_t ctx[5];
uint32_t ctx2[2];
@@ -1226,6 +1227,7 @@ static void xhci_set_ep_state(XHCIState *xhci, XHCIEPContext *epctx,
/* update ring dequeue ptr */
if (epctx->nr_pstreams) {
if (sctx != NULL) {
+ ring = &sctx->ring;
xhci_dma_read_u32s(xhci, sctx->pctx, ctx2, sizeof(ctx2));
ctx2[0] &= 0xe;
ctx2[0] |= sctx->ring.dequeue | sctx->ring.ccs;
@@ -1233,8 +1235,12 @@ static void xhci_set_ep_state(XHCIState *xhci, XHCIEPContext *epctx,
xhci_dma_write_u32s(xhci, sctx->pctx, ctx2, sizeof(ctx2));
}
} else {
- ctx[2] = epctx->ring.dequeue | epctx->ring.ccs;
- ctx[3] = (epctx->ring.dequeue >> 16) >> 16;
+ ring = &epctx->ring;
+ }
+ if (ring) {
+ ctx[2] = ring->dequeue | ring->ccs;
+ ctx[3] = (ring->dequeue >> 16) >> 16;
+
DPRINTF("xhci: set epctx: " DMA_ADDR_FMT " state=%d dequeue=%08x%08x\n",
epctx->pctx, state, ctx[3], ctx[2]);
}
--
1.8.3.1
next prev parent reply other threads:[~2013-09-23 18:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-23 18:54 [Qemu-devel] [PATCH 0/7] usb: host-libusb and xhci fixes Hans de Goede
2013-09-23 18:54 ` [Qemu-devel] [PATCH 1/7] usb-host-libusb: Fix reset handling Hans de Goede
2013-09-23 18:54 ` [Qemu-devel] [PATCH 2/7] usb-host-libusb: Configuration 0 may be a valid configuration Hans de Goede
2013-09-23 18:54 ` [Qemu-devel] [PATCH 3/7] usb-host-libusb: Detach kernel drivers earlier Hans de Goede
2013-09-23 18:54 ` [Qemu-devel] [PATCH 4/7] usb-hcd-xhci: Remove unused sstreamsm member from XHCIStreamContext Hans de Goede
2013-09-24 9:37 ` Gerd Hoffmann
2013-10-08 19:36 ` Hans de Goede
2013-09-23 18:54 ` [Qemu-devel] [PATCH 5/7] usb-hcd-xhci: Remove unused cancelled member from XHCITransfer Hans de Goede
2013-09-23 18:54 ` [Qemu-devel] [PATCH 6/7] usb-hcd-xhci: Report completion of active transfer with CC_STOPPED on ep stop Hans de Goede
2013-09-23 18:54 ` Hans de Goede [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-10-24 13:11 [Qemu-devel] [PULL for-1.7 0/7] usb fixes Gerd Hoffmann
2013-10-24 13:11 ` [Qemu-devel] [PATCH 7/7] usb-hcd-xhci: Update endpoint context dequeue pointer for streams too Gerd Hoffmann
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=1379962447-5431-8-git-send-email-hdegoede@redhat.com \
--to=hdegoede@redhat.com \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.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).