Hi,
The KVM folks suggested that it would be good to get USB and
virtualization developers together to talk about how to virtualize the
xHCI host controller. The xHCI spec architect worked closely with
VMWare to get some extra goodies in the spec to help virtualization, and
I'd like to see the other virtualization developers take advantage of
that. I'd also like us to hash out any issues they have been finding in
the USB core or xHCI driver during the virtualization effort.
Do people really want to virtualize the whole xHCI controller, or just
specific ports or devices to the guest operating system?
SR/IOV support is an optional xHCI feature. As I understand it you can
create a VF which looks like a real xHCI controller. This is partly
done in hardware and partly by software. Then you can assign it some
ressources (specific ports) and pass it to the guest.
If just specific ports, would something like usbip be better for virtual
machines, with the USB traffic going over the network connection between
the guest/host?
There are several ways depending on the use case. Usually the guest
sees a (fully software emulated) host adapter with usb devices
connected, where the usb devices can be (a) emulated too or (b) real usb
devices passed through to the guest. The later is done by passing the
guests requests to the real device via usbfs.
One problem with emulating usb fully in software is the polling design
of the hardware which makes the emulation quite cpu intensive. Using a
xHCI VF should help here alot, but works for the pass through use case
only of course.
cheers,
Gerd
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html