* [Qemu-devel] [PATCH] ehci: make idt processing more robust
@ 2016-04-17 15:58 Jon Doe
0 siblings, 0 replies; 3+ messages in thread
From: Jon Doe @ 2016-04-17 15:58 UTC (permalink / raw)
To: kraxel, qemu-devel
This patch causes a regression in FreeBSD guests. Kernel dmesg reports:
usbus3: Run timeout
ehci0: USB init failed err=18
and USB 2.0 passthrough does not work. USB 1.0 still works though.
On a (possibly) related note, choosing any machine type above
pc-i440fx-2.0 causes 100% CPU in host.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH] ehci: make idt processing more robust
2015-12-14 11:39 [Qemu-devel] [PATCH v2 00/10] igd passthrough chipset tweaks Gerd Hoffmann
@ 2015-12-14 11:39 ` Gerd Hoffmann
0 siblings, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2015-12-14 11:39 UTC (permalink / raw)
To: qemu-devel
Cc: igvt-g, xen-devel, Eduardo Habkost, Stefano Stabellini,
Gerd Hoffmann, vfio-users
Make ehci_process_itd return an error in case we didn't do any actual
iso transfer because we've found no active transaction. That'll avoid
ehci happily run in circles forever if the guest builds a loop out of
idts.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/hcd-ehci.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 4e2161b..d07f228 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -1389,7 +1389,7 @@ static int ehci_process_itd(EHCIState *ehci,
{
USBDevice *dev;
USBEndpoint *ep;
- uint32_t i, len, pid, dir, devaddr, endp;
+ uint32_t i, len, pid, dir, devaddr, endp, xfers = 0;
uint32_t pg, off, ptr1, ptr2, max, mult;
ehci->periodic_sched_active = PERIODIC_ACTIVE;
@@ -1479,9 +1479,10 @@ static int ehci_process_itd(EHCIState *ehci,
ehci_raise_irq(ehci, USBSTS_INT);
}
itd->transact[i] &= ~ITD_XACT_ACTIVE;
+ xfers++;
}
}
- return 0;
+ return xfers ? 0 : -1;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH] ehci: make idt processing more robust
@ 2015-12-14 10:56 Gerd Hoffmann
0 siblings, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2015-12-14 10:56 UTC (permalink / raw)
To: qemu-devel; +Cc: luodalongde, Gerd Hoffmann, ppandit
Make ehci_process_itd return an error in case we didn't do any actual
iso transfer because we've found no active transaction. That'll avoid
ehci happily run in circles forever if the guest builds a loop out of
idts.
Reported-by: Qinghao Tang <luodalongde@gmail.com>
Tested-by: P J P <ppandit@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/hcd-ehci.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 4e2161b..d07f228 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -1389,7 +1389,7 @@ static int ehci_process_itd(EHCIState *ehci,
{
USBDevice *dev;
USBEndpoint *ep;
- uint32_t i, len, pid, dir, devaddr, endp;
+ uint32_t i, len, pid, dir, devaddr, endp, xfers = 0;
uint32_t pg, off, ptr1, ptr2, max, mult;
ehci->periodic_sched_active = PERIODIC_ACTIVE;
@@ -1479,9 +1479,10 @@ static int ehci_process_itd(EHCIState *ehci,
ehci_raise_irq(ehci, USBSTS_INT);
}
itd->transact[i] &= ~ITD_XACT_ACTIVE;
+ xfers++;
}
}
- return 0;
+ return xfers ? 0 : -1;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-04-17 15:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-17 15:58 [Qemu-devel] [PATCH] ehci: make idt processing more robust Jon Doe
-- strict thread matches above, loose matches on Subject: below --
2015-12-14 11:39 [Qemu-devel] [PATCH v2 00/10] igd passthrough chipset tweaks Gerd Hoffmann
2015-12-14 11:39 ` [Qemu-devel] [PATCH] ehci: make idt processing more robust Gerd Hoffmann
2015-12-14 10:56 Gerd Hoffmann
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.