|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] USB virtualization question
> Is it possible to differentiate multiple USB ports and assign one port to
> be used only by a specified virtual machine when doing usb virtualization?
>
> As USB devices are enumerated, I don't see a way to do that.
Domain 0 retains control of the USB host controller.
1. When you plug in a USB device, dom0 will do generic USB configuration
operations like assigning it an address.
2. Then it'll probe its device drivers to see if any of them are interested -
at this port, the USB backend driver will recognise that the device is
plugged into a port it's interested in.
3. The USB backend driver informs the frontend that there's a device on the
port.
4. The frontend domain does the generic config tasks like assigning an
address. The backend "fakes out" the SET_ADDRESS operation, otherwise dom0
won't know what address the device has ;-)
For data path operations, USB requests are queued into the device channel by
the frontend. The backend is responsible for checking that the requests are
safe (i.e. address only the correct domain's memory) and then proxying them
to the device itself.
The advantages of this design are:
1. flexible - give any attached device to a domain, from any individual port
2. safe - don't have to trust a domain not to access forbidden memory
(although you do trust the device itself isn't malicious or exploitable)
3. dom0 doesn't have to have a driver for the device itself, as long as the
target domain can drive it.
HTH,
Mark
> Any insignts on this issue?
>
> Thanks in advance!
>
> -x
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|