[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Usb passthrough with upstream qemu question

Il 28/10/2013 17:19, Fabio Fantoni ha scritto:
Il 07/10/2013 12:41, George Dunlap ha scritto:
On Fri, Oct 4, 2013 at 3:59 PM, Fabio Fantoni <fabio.fantoni@xxxxxxx> wrote:
Il 04/10/2013 16:25, George Dunlap ha scritto:

On 04/10/13 15:00, Fabio Fantoni wrote:
Il 04/10/2013 15:30, George Dunlap ha scritto:
On 04/10/13 14:16, Fabio Fantoni wrote:
Il 04/10/2013 11:59, George Dunlap ha scritto:
On 25/09/13 15:11, Pasi Kärkkäinen wrote:
On Tue, Sep 24, 2013 at 10:59:18AM +0100, George Dunlap wrote:
On 09/23/2013 03:46 PM, Fabio Fantoni wrote:
I tested my latest patches about usb controllers (1-2-3) and usb redirection (from Spice client) support for upstream qemu and are
I also tested usb passthrough (from dom0) but seems that with older
-usbdevice paraters is not working.
I see the qemu docs/qdev-device-use.txt and based on this I tried
new parameters, for example:

device_model_args=["-device","usb-host,vendorid=0x058f,productid=0x6387"] With new parameters usb passthrough is working, also with new usb
controller and also with usb redirection enabled.
I did all tests using latest xen and qemu version (1.6).
I think should be good to change upstream qemu parameters for usb
passthrough on libxl with the new ones.
Yes, I think it would be better. The main difficulty is that the
libxl parameter is basically the old-style usbdevice parameter
passed straight through.  To support the current libxl parameter
with the new qemu would mean interpreting the usbdevice parameter
and translating it into the new-style parameter.

My USB hot-plug series begins to introduce a more reasonable
interface for USB devices. Once that's in, we can think about
introducing a similar new interface for creating domains, that
should match the new way of specifying devices better. Then we
could just say, "If you're using spice, you have to use the new

Unfortunately, it's looking like the USB hot-plug series may not
make it into 4.4 unless someone else can pick it up (or unless we
slip the feature freeze).


Is the latest version of the usb hotplug series posted to xen-devel,
or are these not-yet-posted changes in your (private) tree?

Just wondering if someone else wants to take a look at that.

The latest patches I posted were version 6; the 1/2 can be found here:


I can't remember if I went through and made any changes as a result of
comments or not; My latest local version can be found here:



Thanks for reply, I see your patches but I didn't found changes on "xl
create" parts.
Please could you keep an eye on my yesterday's mail about "xl create"
part changes?
For now I'm trying to do patch for basic spice support to pv.
After that I'll try to do a patch for changes usb qemu parameters to make usb passthrough full working also with usb2,usb3 and usb redirection
enabled ifno one else can do.

So at the moment, USB devices specified in the config file are added to the guest on the qemu command line. However, most devices aren't like that: if you specify a PCI pass-through device, it will create the guest, and then the domain creation will call the pci add functions, just as it would if you
were hot-plugging the device afterwards.

So the idea would be that once the new USB hotplug interface was fully functional, then you'd do the same thing: just specify the USB controller on the qemu command line, and add in the other USB devices afterwards (i.e.,
after qemu had come up but before actually unpausing the guest).


If I'm not wrong on what you mean, usb controller definition should be right with my patch "usbversion" while actual usbpassthrough part should be
replaced/remade in order to have devices passed by usbdevice and
usbdevice_list added after qemu launch with hotplug function you had already
did with your patches.
Did you mean something else?

I thought the "usbpassthrough" stuff had to do with spice.

In any case, what you describe it sounds pretty close, with one caveat: Because usbdevice and usbdevice_list are basically just passing through strings that qemu understands on its command line, I don't think we can re-use them: I think we'd have to introduce another config option that would have a new interface which matches the new libxl interface better. We'd have to keep the old ones around for backwards compatibility, but we can
deprecate them.


So to be sure, you mean to keep the old parameters usbdevice and
usbdevice_list with only usb1 (making them deprecated), and introduce a new parameter storing the devices usbpassthrough list (from dom0) which will use the new usb1-2-3 controller (with usbversion) and your usbhotplug functions?
Is it right?
Yes, except that I think ideally you'd design the new interface not
only for pass-through devices, but for emulated devices as well --
tablets, mice, keyboard, &c.  The patches I posted should be
expandable to include things like that.


I redid and posted some times ago usbversion and usbredirection patches:
Today I refreshed your patches of usb hot-plug, also fixed one bug and tested it. Seems full working (usb-attach, usb-list, usb-detach) and also with usbredirection enabled no problem found.
Here the latest version of all usb patches:

About adding the missing cases (vendor and model id and other emulated usb devices) in new usb hot-plug functionalities what can it be the best choice? About emulated usb devices, according to qemu docs, they should be: ccid, keyboard, mouse, tablet, wacom-tablet. Can it be good to add one enumeration on libxl_device_usb_type for each emulated device and have for example on xl command "xl [-vfN] usb-attach <Domain> tablet". Or would it be better to have just one enameration for all emulated devices and on xl command for example "xl [-vfN] usb-attach <Domain> emudev:tablet"? About adding vendor and model id for usb passghtrough, should we maintain the syntax hostdev:<hostbus.hostaddr>|<vendorid.modelid> and tell them apart by the number of characters (4 for vendor and model) or should we use another method? Can someone also review the latest version of my usbversion and usbredirection patches already posted some time ago without replies (links above)?
Thanks for any reply.

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.