From: Hans de Goede <hdegoede@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>, qemu-devel@nongnu.org
Cc: Markus Armbruster <armbru@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2] xhci: add property to turn on/off streams support
Date: Tue, 28 Oct 2014 10:59:58 +0100 [thread overview]
Message-ID: <544F691E.9080300@redhat.com> (raw)
In-Reply-To: <1414490237-27815-1-git-send-email-kraxel@redhat.com>
Hi,
On 10/28/2014 10:57 AM, Gerd Hoffmann wrote:
> streams support in usb-redir and usb-host works only with recent enough
> versions of the support libraries (libusbredir and libusbx). Failure
> mode is rather unelegant: Any stream usb transfers will throw stall
> errors. Turning off support for streams in the xhci host controller
> will work better as the guest can figure beforehand that streams are
> not going to work.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Looks good:
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Regards,
Hans
> ---
> hw/usb/hcd-xhci.c | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
> index a27c9d3..2930b72 100644
> --- a/hw/usb/hcd-xhci.c
> +++ b/hw/usb/hcd-xhci.c
> @@ -459,6 +459,7 @@ struct XHCIState {
> uint32_t numintrs;
> uint32_t numslots;
> uint32_t flags;
> + uint32_t max_pstreams_mask;
>
> /* Operational Registers */
> uint32_t usbcmd;
> @@ -500,6 +501,7 @@ enum xhci_flags {
> XHCI_FLAG_USE_MSI_X,
> XHCI_FLAG_SS_FIRST,
> XHCI_FLAG_FORCE_PCIE_ENDCAP,
> + XHCI_FLAG_ENABLE_STREAMS,
> };
>
> static void xhci_kick_ep(XHCIState *xhci, unsigned int slotid,
> @@ -1384,7 +1386,7 @@ static void xhci_init_epctx(XHCIEPContext *epctx,
> epctx->pctx = pctx;
> epctx->max_psize = ctx[1]>>16;
> epctx->max_psize *= 1+((ctx[1]>>8)&0xff);
> - epctx->max_pstreams = (ctx[0] >> 10) & 0xf;
> + epctx->max_pstreams = (ctx[0] >> 10) & epctx->xhci->max_pstreams_mask;
> epctx->lsa = (ctx[0] >> 15) & 1;
> if (epctx->max_pstreams) {
> xhci_alloc_streams(epctx, dequeue);
> @@ -2956,9 +2958,9 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, unsigned size)
> break;
> case 0x10: /* HCCPARAMS */
> if (sizeof(dma_addr_t) == 4) {
> - ret = 0x00087000;
> + ret = 0x00080000 | (xhci->max_pstreams_mask << 12);
> } else {
> - ret = 0x00087001;
> + ret = 0x00080001 | (xhci->max_pstreams_mask << 12);
> }
> break;
> case 0x14: /* DBOFF */
> @@ -3590,6 +3592,11 @@ static int usb_xhci_initfn(struct PCIDevice *dev)
> if (xhci->numslots < 1) {
> xhci->numslots = 1;
> }
> + if (xhci_get_flag(xhci, XHCI_FLAG_ENABLE_STREAMS)) {
> + xhci->max_pstreams_mask = 7; /* == 256 primary streams */
> + } else {
> + xhci->max_pstreams_mask = 0;
> + }
>
> xhci->mfwrap_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, xhci_mfwrap_timer, xhci);
>
> @@ -3853,6 +3860,8 @@ static Property xhci_properties[] = {
> XHCIState, flags, XHCI_FLAG_SS_FIRST, true),
> DEFINE_PROP_BIT("force-pcie-endcap", XHCIState, flags,
> XHCI_FLAG_FORCE_PCIE_ENDCAP, false),
> + DEFINE_PROP_BIT("streams", XHCIState, flags,
> + XHCI_FLAG_ENABLE_STREAMS, true),
> DEFINE_PROP_UINT32("intrs", XHCIState, numintrs, MAXINTRS),
> DEFINE_PROP_UINT32("slots", XHCIState, numslots, MAXSLOTS),
> DEFINE_PROP_UINT32("p2", XHCIState, numports_2, 4),
>
prev parent reply other threads:[~2014-10-28 10:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-28 9:57 [Qemu-devel] [PATCH v2] xhci: add property to turn on/off streams support Gerd Hoffmann
2014-10-28 9:59 ` Hans de Goede [this message]
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=544F691E.9080300@redhat.com \
--to=hdegoede@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@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 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.