qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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
* [Qemu-devel] [PATCH v2 00/10] igd passthrough chipset tweaks
@ 2015-12-14 11:39 Gerd Hoffmann
  2015-12-14 11:39 ` [Qemu-devel] [PATCH] ehci: make idt processing more robust Gerd Hoffmann
  0 siblings, 1 reply; 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

  Hi,

We have some code in our tree to support pci passthrough of intel
graphics devices (igd) on xen, which requires some chipset tweaks
for (a) the host bridge and (b) the lpc/isa-bridge to meat the
expectations of the guest driver.

For kvm we need pretty much the same, also the requirements for vgpu
(xengt/kvmgt) are very simliar.  This patch wires up the existing
support for kvm.  It also brings a bunch of bugfixes and cleanups.

Unfortunaly the oldish laptop I had planned to use for testing turned
out to have no working iommu support for igd, so this patch series
still has seen very light testing only.  Any testing feedback is very
welcome.

Testing with kvm/i440fx:
  Add '-M pc,igd-passthru=on -device igd-passthrough-isa-bridge,addr=1f'
  to turn on the chipset tweaks.  Passthrough the igd using vfio.

Testing with kvm/q35:
  Add '-M q35,igd-passthru=on' to turn on the the chipset tweaks.  Pick
  up the linux kernel patch referenced in patch #10, build a custom
  kernel with it.  Passthrough the igd using vfio.

Testing with xen:
  Existing setups should continue working ;)

Changes in v2:
  * Added igd-passthrough-isa-bridge support form kvm.
  * Added patch to drop has_igd_gfx_passthru.

TODO:
  * Possibly handle igd-passthrough-isa-bridge automatically (see patch 10).
  * Figure a way to handle the opregion, probably via vfio extension.
    Beyond the scope of this patch series, but probably needed to make
    laptop panels work correctly.

Gerd Hoffmann (10):
  pc: wire up TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE for !xen
  pc: remove has_igd_gfx_passthru global
  pc: move igd support code to igd.c
  igd: switch TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE to realize
  igd: TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE: call parent realize
  igd: use defines for standard pci config space offsets
  igd: revamp host config read
  igd: add q35 support
  igd: move igd-passthrough-isa-bridge to igd.c too
  igd: handle igd-passthrough-isa-bridge setup in realize()

 hw/i386/pc_piix.c         | 124 ++-----------------------------
 hw/pci-host/Makefile.objs |   3 +
 hw/pci-host/igd.c         | 181 ++++++++++++++++++++++++++++++++++++++++++++++
 hw/pci-host/piix.c        |  88 ----------------------
 hw/pci-host/q35.c         |   6 +-
 hw/xen/xen_pt.h           |   3 +-
 vl.c                      |  10 ---
 7 files changed, 195 insertions(+), 220 deletions(-)
 create mode 100644 hw/pci-host/igd.c

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 3+ messages in thread
* [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

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 --
2015-12-14 10:56 [Qemu-devel] [PATCH] ehci: make idt processing more robust Gerd Hoffmann
  -- 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
2016-04-17 15:58 Jon Doe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).