qemu-patch-raspberry4/hw/usb
Hans de Goede 579967bea6 combined-packet: Add a workaround for Linux usbfs + live migration
Older versions (anything but the latest) of Linux usbfs + libusb(x),
will submit larger (bulk) transfers split into multiple 16k submissions,
which means that rather then all tds getting linked into the queue in
one atomic operarion they get linked in a bunch at a time, which could
cause problems if:
1) We scan the queue while libusb is in the middle of submitting a split
   bulk transfer
2) While this bulk transfer is pending we migrate to another host.

The problem is that after 2, the new host will rescan the queue and
combine the packets in one large transfer, where as 1) has caused the
original host to see them as 2 transfers. This patch fixes this by stopping
combinging if we detect a 16k transfer with its int_req flag set.

This should not adversely effect performance for other cases as:
1) Linux never sets the interrupt flag on packets other then the last
2) Windows does set the in_req flag on each td, but will submit large
transfers in 20k tds thus never triggering the check

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-01 15:17:58 +01:00
..
bus.c usb: Add USB_RET_ADD_TO_QUEUE packet result code 2012-10-25 09:08:09 +02:00
combined-packet.c combined-packet: Add a workaround for Linux usbfs + live migration 2012-11-01 15:17:58 +01:00
core.c usb: Add packet combining functions 2012-11-01 15:17:58 +01:00
desc.c usb3: bos decriptor 2012-09-11 07:43:01 +02:00
desc.h usb3: bos decriptor 2012-09-11 07:43:01 +02:00
dev-audio.c usb-audio: fix usb version 2012-09-11 07:43:00 +02:00
dev-bluetooth.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
dev-hid.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
dev-hub.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
dev-network.c net: fix usbnet_receive() packet drops 2012-09-14 08:40:32 +01:00
dev-serial.c usb-serial: only expose device in guest when the chardev is open 2012-10-22 13:26:42 -05:00
dev-smartcard-reader.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
dev-storage.c usb-storage: usb3 support 2012-09-11 07:43:01 +02:00
dev-uas.c cleanup useless return sentence 2012-10-05 15:10:21 +02:00
dev-wacom.c Allow machines to configure the QEMU_VERSION that's exposed via hardware 2012-06-19 13:36:56 -05:00
hcd-ehci-pci.c usb/ehci-pci: add helper to create ich9 usb controllers 2012-11-01 15:17:58 +01:00
hcd-ehci-sysbus.c usb/ehci: add sysbus variant 2012-11-01 13:10:10 +01:00
hcd-ehci.c usb/ehci: split into multiple source files 2012-11-01 13:10:10 +01:00
hcd-ehci.h usb/ehci: split into multiple source files 2012-11-01 13:10:10 +01:00
hcd-musb.c usb: Add an int_req flag to USBPacket 2012-10-25 09:08:10 +02:00
hcd-ohci.c usb: Add an int_req flag to USBPacket 2012-10-25 09:08:10 +02:00
hcd-uhci.c uhci: Don't crash on device disconnect 2012-11-01 15:17:58 +01:00
hcd-xhci.c xhci: allow address slot being called multiple times 2012-11-01 13:10:09 +01:00
host-bsd.c usb: the big rename 2012-03-13 10:15:32 +01:00
host-linux.c usb: Move short-not-ok handling to the core 2012-10-25 09:08:10 +02:00
host-stub.c usb: the big rename 2012-03-13 10:15:32 +01:00
libhw.c usb: Fix usb_packet_map() in the presence of IOMMUs 2012-09-26 09:24:42 +02:00
Makefile.objs usb: Add packet combining functions 2012-11-01 15:17:58 +01:00
redirect.c usb: Move short-not-ok handling to the core 2012-10-25 09:08:10 +02:00