* [Qemu-devel] [PATCH 0/3] xhci fixes
@ 2013-01-08 13:16 Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 1/3] xhci: create xhci_detach_slot helper function Gerd Hoffmann
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2013-01-08 13:16 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Hi,
Little patch series which makes sure xhci cancels inflight transfers
on device detach.
cheers,
Gerd
Gerd Hoffmann (3):
xhci: create xhci_detach_slot helper function
xhci: call xhci_detach_slot on root port detach too
xhci: nuke transfe5rs on detach
hw/usb/hcd-xhci.c | 31 +++++++++++++++++++++++++------
1 files changed, 25 insertions(+), 6 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 1/3] xhci: create xhci_detach_slot helper function
2013-01-08 13:16 [Qemu-devel] [PATCH 0/3] xhci fixes Gerd Hoffmann
@ 2013-01-08 13:16 ` Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 2/3] xhci: call xhci_detach_slot on root port detach too Gerd Hoffmann
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2013-01-08 13:16 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/hcd-xhci.c | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 9132920..5d4d876 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -2198,6 +2198,23 @@ static unsigned int xhci_get_slot(XHCIState *xhci, XHCIEvent *event, XHCITRB *tr
return slotid;
}
+/* cleanup slot state on usb device detach */
+static void xhci_detach_slot(XHCIState *xhci, USBPort *uport)
+{
+ int slot;
+
+ for (slot = 0; slot < xhci->numslots; slot++) {
+ if (xhci->slots[slot].uport == uport) {
+ break;
+ }
+ }
+ if (slot == xhci->numslots) {
+ return;
+ }
+
+ xhci->slots[slot].uport = NULL;
+}
+
static TRBCCode xhci_get_port_bandwidth(XHCIState *xhci, uint64_t pctx)
{
dma_addr_t ctx;
@@ -2971,13 +2988,8 @@ static void xhci_child_detach(USBPort *uport, USBDevice *child)
{
USBBus *bus = usb_bus_from_device(child);
XHCIState *xhci = container_of(bus, XHCIState, bus);
- int i;
- for (i = 0; i < xhci->numslots; i++) {
- if (xhci->slots[i].uport == uport) {
- xhci->slots[i].uport = NULL;
- }
- }
+ xhci_detach_slot(xhci, uport);
}
static USBPortOps xhci_uport_ops = {
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 2/3] xhci: call xhci_detach_slot on root port detach too
2013-01-08 13:16 [Qemu-devel] [PATCH 0/3] xhci fixes Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 1/3] xhci: create xhci_detach_slot helper function Gerd Hoffmann
@ 2013-01-08 13:16 ` Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 3/3] xhci: nuke transfe5rs on detach Gerd Hoffmann
2013-01-09 14:01 ` [Qemu-devel] [PATCH 0/3] xhci fixes Hans de Goede
3 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2013-01-08 13:16 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/hcd-xhci.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 5d4d876..b4736f5 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -2957,6 +2957,7 @@ static void xhci_detach(USBPort *usbport)
XHCIState *xhci = usbport->opaque;
XHCIPort *port = xhci_lookup_port(xhci, usbport);
+ xhci_detach_slot(xhci, usbport);
xhci_port_update(port, 1);
}
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 3/3] xhci: nuke transfe5rs on detach
2013-01-08 13:16 [Qemu-devel] [PATCH 0/3] xhci fixes Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 1/3] xhci: create xhci_detach_slot helper function Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 2/3] xhci: call xhci_detach_slot on root port detach too Gerd Hoffmann
@ 2013-01-08 13:16 ` Gerd Hoffmann
2013-01-09 14:01 ` [Qemu-devel] [PATCH 0/3] xhci fixes Hans de Goede
3 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2013-01-08 13:16 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/hcd-xhci.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index b4736f5..f8f5aeb 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -1197,6 +1197,7 @@ static int xhci_ep_nuke_xfers(XHCIState *xhci, unsigned int slotid,
ep = epctx->transfers[xferi].packet.ep;
}
killed += xhci_ep_nuke_one_xfer(&epctx->transfers[xferi]);
+ epctx->transfers[xferi].packet.ep = NULL;
xferi = (xferi + 1) % TD_QUEUE;
}
if (ep) {
@@ -2201,7 +2202,7 @@ static unsigned int xhci_get_slot(XHCIState *xhci, XHCIEvent *event, XHCITRB *tr
/* cleanup slot state on usb device detach */
static void xhci_detach_slot(XHCIState *xhci, USBPort *uport)
{
- int slot;
+ int slot, ep;
for (slot = 0; slot < xhci->numslots; slot++) {
if (xhci->slots[slot].uport == uport) {
@@ -2212,6 +2213,11 @@ static void xhci_detach_slot(XHCIState *xhci, USBPort *uport)
return;
}
+ for (ep = 0; ep < 31; ep++) {
+ if (xhci->slots[slot].eps[ep]) {
+ xhci_ep_nuke_xfers(xhci, slot+1, ep+1);
+ }
+ }
xhci->slots[slot].uport = NULL;
}
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] xhci fixes
2013-01-08 13:16 [Qemu-devel] [PATCH 0/3] xhci fixes Gerd Hoffmann
` (2 preceding siblings ...)
2013-01-08 13:16 ` [Qemu-devel] [PATCH 3/3] xhci: nuke transfe5rs on detach Gerd Hoffmann
@ 2013-01-09 14:01 ` Hans de Goede
3 siblings, 0 replies; 5+ messages in thread
From: Hans de Goede @ 2013-01-09 14:01 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel
Hi,
Other then the typo in the commit messages for the 3th patch,
this sets looks good. ACK series.
Regards,
Hans
On 01/08/2013 02:16 PM, Gerd Hoffmann wrote:
> Hi,
>
> Little patch series which makes sure xhci cancels inflight transfers
> on device detach.
>
> cheers,
> Gerd
>
> Gerd Hoffmann (3):
> xhci: create xhci_detach_slot helper function
> xhci: call xhci_detach_slot on root port detach too
> xhci: nuke transfe5rs on detach
>
> hw/usb/hcd-xhci.c | 31 +++++++++++++++++++++++++------
> 1 files changed, 25 insertions(+), 6 deletions(-)
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-01-09 13:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-08 13:16 [Qemu-devel] [PATCH 0/3] xhci fixes Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 1/3] xhci: create xhci_detach_slot helper function Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 2/3] xhci: call xhci_detach_slot on root port detach too Gerd Hoffmann
2013-01-08 13:16 ` [Qemu-devel] [PATCH 3/3] xhci: nuke transfe5rs on detach Gerd Hoffmann
2013-01-09 14:01 ` [Qemu-devel] [PATCH 0/3] xhci fixes Hans de Goede
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.