All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.