qemu-patch-raspberry4/hw/usb
Anthony PERARD ccee80c68d usb/hcd-ehci: Fix error handling on missing device for iTD
The EHCI Host Controller emulation attempt to locate the device
associated with a periodic isochronous transfer description (iTD) and
when this fail the host controller is reset.

But according the EHCI spec 1.0 section 5.15.2.4 Host System
Error, the host controller is supposed to reset itself only when it
failed to communicate with the Host (Operating System), like when
there's an error on the PCI bus. If a transaction fails, there's
nothing in the spec that say to reset the host controller.

This patch rework the error path so that the host controller can keep
working when the OS setup a bogus transaction, it also revert to the
behavior of the EHCI emulation to before commits:
e94682f1fe ("ehci: check device is not NULL before calling usb_ep_get()")
7011baece2 ("usb: remove unnecessary NULL device check from usb_ep_get()")

The issue has been found while trying to passthrough a USB device to a
Windows Server 2012 Xen guest via "usb-ehci", which prevent the USB
device from working in Windows. ("usb-ehci" alone works, windows only
setup this weird periodic iTD to device 127 endpoint 15 when the USB
device is passthrough.)

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Message-id: 20201014104106.2962640-1-anthony.perard@citrix.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2020-10-19 09:17:08 +02:00
..
bus.c usb/bus: Remove dead assignment in usb_get_fw_dev_path() 2020-09-01 12:03:39 +02:00
ccid-card-emulated.c hw/usb: Use lock guard macros 2020-09-28 13:13:58 +02:00
ccid-card-passthru.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
ccid.h Use OBJECT_DECLARE_TYPE when possible 2020-09-18 14:12:32 -04:00
chipidea.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
combined-packet.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
core.c usb: fix setup_len init (CVE-2020-14364) 2020-08-31 08:23:39 +02:00
desc-msos.c usb: use local path for local headers 2018-06-01 19:20:38 +03:00
desc.c usb: use local path for local headers 2018-06-01 19:20:38 +03:00
desc.h all: Clean up includes 2016-02-23 12:43:05 +00:00
dev-audio.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-hid.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-hub.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-mtp.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-network.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-serial.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-smartcard-reader.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-storage.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
dev-uas.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-wacom.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-dwc2.c usb: hcd-dwc2: change assert()s to qemu_log_mask(LOG_GUEST_ERROR...) 2020-10-19 09:12:20 +02:00
hcd-dwc2.h Use OBJECT_DECLARE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-ehci-pci.c qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
hcd-ehci-sysbus.c hw/arm/allwinner-h3: add USB host controller 2020-03-12 16:27:33 +00:00
hcd-ehci.c usb/hcd-ehci: Fix error handling on missing device for iTD 2020-10-19 09:17:08 +02:00
hcd-ehci.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-musb.c exec/cpu-common: Move MUSB specific typedefs to 'hw/usb/hcd-musb.h' 2020-06-12 11:20:15 -04:00
hcd-ohci-pci.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-ohci.c hw: usb: hcd-ohci: check for processed TD before retire 2020-09-21 09:44:54 +02:00
hcd-ohci.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-uhci.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
hcd-xhci-nec.c usb/hcd-xhci: Split pci wrapper for xhci base model 2020-09-28 12:40:11 +02:00
hcd-xhci-pci.c usb/hcd-xhci: Split pci wrapper for xhci base model 2020-09-28 12:40:11 +02:00
hcd-xhci-pci.h usb/hcd-xhci: Split pci wrapper for xhci base model 2020-09-28 12:40:11 +02:00
hcd-xhci-sysbus.c usb: hcd-xhci-sysbus: Attach xhci to sysbus device 2020-09-28 12:40:11 +02:00
hcd-xhci-sysbus.h usb: hcd-xhci-sysbus: Attach xhci to sysbus device 2020-09-28 12:40:11 +02:00
hcd-xhci.c usb/hcd-xhci: Split pci wrapper for xhci base model 2020-09-28 12:40:11 +02:00
hcd-xhci.h usb: hcd-xhci-sysbus: Attach xhci to sysbus device 2020-09-28 12:40:11 +02:00
host-libusb.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
host-stub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
host.h usb-host: move legacy cmd line bits 2013-02-19 12:30:05 +01:00
imx-usb-phy.c hw/usb: Add basic i.MX USB Phy support 2020-03-17 11:23:14 +00:00
Kconfig usb: hcd-xhci-sysbus: Attach xhci to sysbus device 2020-09-28 12:40:11 +02:00
libhw.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
meson.build usb: hcd-xhci-sysbus: Attach xhci to sysbus device 2020-09-28 12:40:11 +02:00
quirks-ftdi-ids.h usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
quirks-pl2303-ids.h usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
quirks.c hw/usb/quirks: Use smaller types to reduce .rodata by 10KiB 2020-03-16 23:02:25 +01:00
quirks.h hw/usb/quirks: Use smaller types to reduce .rodata by 10KiB 2020-03-16 23:02:25 +01:00
redirect.c trivial patches pull request 20200911 2020-09-12 14:23:15 +01:00
trace-events trace-events: Fix attribution of trace points to source 2020-09-09 17:17:58 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
tusb6010.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
u2f-emulated.c usb: fix u2f build 2020-09-21 09:44:54 +02:00
u2f-passthru.c util: rename qemu_open() to qemu_open_old() 2020-09-16 10:33:48 +01:00
u2f.c hw/usb: Add U2F key base class implementation 2020-08-31 08:10:47 +02:00
u2f.h hw/usb: Add U2F key base class 2020-08-31 08:10:47 +02:00
xen-usb.c xen: Fix and improve handling of device_add usb-host errors 2020-05-27 07:45:17 +02:00