Blame SOURCES/kvm-xhci-Init-a-transfers-xhci-slotid-and-epid-member-on.patch

958e1b
From 0302db9f99761bc53e99cd1c3fbdcec3a3fd13c5 Mon Sep 17 00:00:00 2001
958e1b
From: Gerd Hoffmann <kraxel@redhat.com>
958e1b
Date: Fri, 11 Jul 2014 14:20:43 +0200
958e1b
Subject: [PATCH 09/43] xhci: Init a transfers xhci, slotid and epid member on
958e1b
 epctx alloc
958e1b
958e1b
Message-id: <1405088470-24115-11-git-send-email-kraxel@redhat.com>
958e1b
Patchwork-id: 59823
958e1b
O-Subject: [RHEL-7.1 qemu-kvm PATCH 10/37] xhci: Init a transfers xhci, slotid and epid member on epctx alloc
958e1b
Bugzilla: 1075846
958e1b
RH-Acked-by: Dr. David Alan Gilbert (git) <dgilbert@redhat.com>
958e1b
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
958e1b
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
958e1b
958e1b
From: Hans de Goede <hdegoede@redhat.com>
958e1b
958e1b
Transfers are part of an epctx, which is part of a slot, which is part of
958e1b
a xhci. Transfers cannot dynamically be moved from one epctx to another,
958e1b
so once created their xhci, slotid and epid are constant, so lets set these
958e1b
up at creation time, rather then re-initializing them with the same
958e1b
value each time a transfer gets submitted.
958e1b
958e1b
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
958e1b
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
958e1b
(cherry picked from commit 4c5d82ecf1e8fd0720137f7d09fc77d65b51b4d0)
958e1b
---
958e1b
 hw/usb/hcd-xhci.c | 6 +++---
958e1b
 1 file changed, 3 insertions(+), 3 deletions(-)
958e1b
958e1b
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
958e1b
---
958e1b
 hw/usb/hcd-xhci.c | 6 +++---
958e1b
 1 file changed, 3 insertions(+), 3 deletions(-)
958e1b
958e1b
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
958e1b
index 61f5329..2daf334 100644
958e1b
--- a/hw/usb/hcd-xhci.c
958e1b
+++ b/hw/usb/hcd-xhci.c
958e1b
@@ -1247,6 +1247,9 @@ static XHCIEPContext *xhci_alloc_epctx(XHCIState *xhci,
958e1b
     epctx->epid = epid;
958e1b
 
958e1b
     for (i = 0; i < ARRAY_SIZE(epctx->transfers); i++) {
958e1b
+        epctx->transfers[i].xhci = xhci;
958e1b
+        epctx->transfers[i].slotid = slotid;
958e1b
+        epctx->transfers[i].epid = epid;
958e1b
         usb_packet_init(&epctx->transfers[i].packet);
958e1b
     }
958e1b
     epctx->kick_timer = qemu_new_timer_ns(vm_clock, xhci_ep_kick_timer, epctx);
958e1b
@@ -2062,9 +2065,6 @@ static void xhci_kick_ep(XHCIState *xhci, unsigned int slotid,
958e1b
         for (i = 0; i < length; i++) {
958e1b
             assert(xhci_ring_fetch(xhci, ring, &xfer->trbs[i], NULL));
958e1b
         }
958e1b
-        xfer->xhci = xhci;
958e1b
-        xfer->epid = epid;
958e1b
-        xfer->slotid = slotid;
958e1b
         xfer->streamid = streamid;
958e1b
 
958e1b
         if (epid == 1) {
958e1b
-- 
958e1b
1.8.3.1
958e1b