qemu-e2k/hw/usb
Evgeny Yakovlev 72aa364b1d ehci: faster frame index calculation for skipped frames
ehci_update_frindex takes time linearly proportional to a number
of uframes to calculate new frame index and raise FLR interrupts,
which is a problem for large amounts of uframes.

If we experience large delays between echi timer callbacks (i.e. because
other periodic handlers have taken a lot of time to complete) we
get a lot of skipped frames which then delay ehci timer callback more
and this leads to deadlocking the system when ehci schedules next
callback to be too soon.

Observable behaviour is qemu consuming 100% host CPU time while guest
is unresponsive. This misbehavior could happen for a while and QEMU does
not get out from this state automatically without the patch.

This change makes ehci_update_frindex execute in constant time.

Signed-off-by: Evgeny Yakovlev <eyakovlev@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Message-id: 1469638520-32706-1-git-send-email-den@openvz.org
CC: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2016-08-02 13:35:24 +02:00
..
Makefile.objs xen: add pvUSB backend 2016-05-23 13:30:03 +02:00
bus.c usb: Add QOM property "attached". 2016-06-22 12:53:26 +02:00
ccid-card-emulated.c event-notifier: Add "is_external" parameter 2016-04-22 16:43:56 +02:00
ccid-card-passthru.c Passthru CCID card: QOMify 2016-02-11 15:15:47 +03:00
ccid.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
combined-packet.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
core.c usb: check RNDIS message length 2016-02-23 10:38:00 +01:00
desc-msos.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
desc.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
desc.h all: Clean up includes 2016-02-23 12:43:05 +00:00
dev-audio.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
dev-bluetooth.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
dev-hid.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
dev-hub.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
dev-mtp.c usb-mtp: fix usb_mtp_get_device_info so that libmtp on the guest doesn't complain 2016-05-11 10:33:49 +02:00
dev-network.c net: Use correct type for bool flag 2016-07-19 20:18:27 +02:00
dev-serial.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
dev-smartcard-reader.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
dev-storage.c block/qdev: Allow configuring WCE with qdev properties 2016-07-13 13:32:27 +02:00
dev-uas.c usb-uas: hotplug support 2016-06-22 12:53:26 +02:00
dev-wacom.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
hcd-ehci-pci.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
hcd-ehci-sysbus.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
hcd-ehci.c ehci: faster frame index calculation for skipped frames 2016-08-02 13:35:24 +02:00
hcd-ehci.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
hcd-musb.c Replaced get_tick_per_sec() by NANOSECONDS_PER_SECOND 2016-03-22 22:20:17 +01:00
hcd-ohci.c remove useless muldiv64() 2016-06-07 18:02:49 +03:00
hcd-uhci.c usb/uhci: move pid check 2016-04-25 12:05:05 +01:00
hcd-xhci.c xhci: Fix possible side effect from assert() 2016-07-20 13:31:09 +02:00
host-legacy.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
host-libusb.c wxx: Fix compilation of host-libusb.c 2016-08-02 13:33:47 +02:00
host-stub.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
host.h usb-host: move legacy cmd line bits 2013-02-19 12:30:05 +01:00
libhw.c usb: Clean up includes 2016-01-29 15:07:23 +00: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 usb: Clean up includes 2016-01-29 15:07:23 +00:00
quirks.h usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
redirect.c usbredir: add streams property 2016-07-20 13:31:20 +02:00
trace-events trace: split out trace events for hw/usb/ directory 2016-06-20 17:22:15 +01:00
tusb6010.c Replaced get_tick_per_sec() by NANOSECONDS_PER_SECOND 2016-03-22 22:20:17 +01:00
xen-usb.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00