Our ehci code has is capable of significantly lowering the wakeup rate for the hcd emulation while the device is idle. It is possible to add similar code ot the uhci emulation, but that simply is not there atm, and there is no reason why a (virtual) usb device can not be a USB-2 device.
Making usb-hid devices connect to the emulated ehci controller instead of the emulated uhci controller on vms which have both lowers the cpuload for a fully idle vm from 20% to 2-3% (on my laptop). Signed-off-by: Hans de Goede <hdego...@redhat.com> --- hw/usb/dev-hid.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 69f89ff..96ba0c0 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -97,7 +97,7 @@ static const USBDescIface desc_iface_mouse = { .bEndpointAddress = USB_DIR_IN | 0x01, .bmAttributes = USB_ENDPOINT_XFER_INT, .wMaxPacketSize = 4, - .bInterval = 0x0a, + .bInterval = 8, }, }, }; @@ -127,7 +127,7 @@ static const USBDescIface desc_iface_tablet = { .bEndpointAddress = USB_DIR_IN | 0x01, .bmAttributes = USB_ENDPOINT_XFER_INT, .wMaxPacketSize = 8, - .bInterval = 0x0a, + .bInterval = 8, }, }, }; @@ -158,7 +158,7 @@ static const USBDescIface desc_iface_keyboard = { .bEndpointAddress = USB_DIR_IN | 0x01, .bmAttributes = USB_ENDPOINT_XFER_INT, .wMaxPacketSize = 8, - .bInterval = 0x0a, + .bInterval = 8, }, }, }; @@ -224,6 +224,7 @@ static const USBDesc desc_mouse = { .iSerialNumber = STR_SERIALNUMBER, }, .full = &desc_device_mouse, + .high = &desc_device_mouse, .str = desc_strings, }; @@ -237,6 +238,7 @@ static const USBDesc desc_tablet = { .iSerialNumber = STR_SERIALNUMBER, }, .full = &desc_device_tablet, + .high = &desc_device_tablet, .str = desc_strings, }; @@ -250,6 +252,7 @@ static const USBDesc desc_keyboard = { .iSerialNumber = STR_SERIALNUMBER, }, .full = &desc_device_keyboard, + .high = &desc_device_keyboard, .str = desc_strings, }; -- 1.7.12.1