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

Re: [Xen-devel] [PATCH RFC V2 1/5] libxl: add pvusb definitions




>>> On 3/3/2015 at 07:10 PM, in message <1425381019.24959.87.camel@xxxxxxxxxx>, 
>>> Ian
Campbell <ian.campbell@xxxxxxxxxx> wrote: 
> On Mon, 2015-01-19 at 16:28 +0800, Chunyan Liu wrote: 
>  
> Sorry for the long delay in replying. 
>  
> > To attach a usb device, a virtual usb controller should be created first. 
> > This patch defines usbctrl and usbdevice related structs. 
>  
> Per <54CA17DF0200006600095E3D@xxxxxxxxxxxxxxxxxxxxxxx> please could you 
> mention here that the HVM guest related parts (i.e. 
> LIBXL_USBCTRL_TYPE_DEVICEMODEL) and libxl_usb_type are placeholders for 
> emulated HVM support. 

Yes, I agree it's better placed in libxl_usb_type rather than ctrl_type.

>  
> In fact I wonder if it should just be omitted, we will need a LIBXL_HAVE 
> for HVM USB support anyway once it is implemented so we can add the enum 
> then. 

It won't harm to omit it for current pvusb work. Acceptable to me to
add enum later when adding HVM qemu emulated usb device implementation.

>  
> Or will we -- do we think returning an error for such an HVM guest with 
> USB devices configured now is acceptable and for it to silently start 
> working at some point in the future is OK? 
>  
> >  
> > Signed-off-by: Chunyan Liu <cyliu@xxxxxxxx> 
> > Signed-off-by: Simon Cao <caobosimon@xxxxxxxxx> 
> > --- 
> >  tools/libxl/libxl_types.idl          | 58  
> +++++++++++++++++++++++++++++++++++- 
> >  tools/libxl/libxl_types_internal.idl |  1 + 
> >  2 files changed, 58 insertions(+), 1 deletion(-) 
> >  
> > diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl 
> > index 1214d2e..0639434 100644 
> > --- a/tools/libxl/libxl_types.idl 
> > +++ b/tools/libxl/libxl_types.idl 
> > @@ -521,6 +531,27 @@ libxl_device_pci = Struct("device_pci", [ 
> >      ("seize", bool), 
> >      ]) 
> >   
> > +libxl_device_usbctrl = Struct("device_usbctrl", [ 
> > +    ("name", string), 
> > +    ("type", libxl_usbctrl_type), 
> > +    ("backend_domid", libxl_domid), 
> > +    ("backend_domname", string), 
> > +    ("devid", libxl_devid), 
> > +    ("usb_version", uint8), 
> > +    ("num_ports", uint8), 
>  
> I think int would be fine for both of these last two (and is a bit 
> kinder to language bindings). 

OK. Will update.

>  
> > +    ]) 
> > + 
> > +libxl_device_usb = Struct("device_usb", [ 
> > +    ("ctrl", integer), 
>  
> Is this an index into something? If so what? 

To usb controller index.
A usb device should be connected to a usb port of a usb controller.
e.g.: there is 2 usb controllers in system, each with 8 ports, then:
1st usb controller index will be 0, port will be 1~8.
2nd usb controller index will be 1, port will be 1~8.
To attach a usb device through pvusb way, it should be pointed to
connect to which controller and which port.

>  
> There seems to be no usbctrl array added to the domain_config struct, so 
> I'm unsure how this is used. 
>  
> > +    ("port", integer), 
>  
> Port on the hub? 
> > +    ("intf", string), 
>  
> What is this one? (This may just be my lack of usb knowledge)

It means sysfs interface for the usb device under /sys/bus/usb/devices/,
like: 2-1.6.

>  
> > +    ("u", KeyedUnion(None, libxl_usb_type, "type", 
> > +        [("hostdev", Struct(None, [ 
> > +            ("hostbus",   integer), 
> > +            ("hostaddr",  integer) ])) 
> > +        ])) 
> > +    ]) 

This part is for HVM qemu emulated usb device too. Currently not used.

> > + 
> > @@ -547,6 +578,7 @@ libxl_domain_config = Struct("domain_config", [ 
> >      ("disks", Array(libxl_device_disk, "num_disks")), 
> >      ("nics", Array(libxl_device_nic, "num_nics")), 
> >      ("pcidevs", Array(libxl_device_pci, "num_pcidevs")), 
> > +    ("usbs", Array(libxl_device_usb, "num_usbs")), 
>  
> So, I'm unsure how this interacts with the controllers, which it doesn't 
> seem to be possible to specify at domain build time.

In domain config, user only needs to specify usb=['2-1.6'], by default, it will
create a default usb contoller, and probe the 1st available controller:port for
the usb device to attach. So, it can work to specify usbs here only.

Reason didn't include controller in libxl_domain_config: for HVM qemu emulated
usb device, all work is done in qemu (create usb controller and attach usb 
device),
no controller exists in libxl in that case.
 
>  
> You pointed me to 
> http://www.redhat.com/archives/libvir-list/2014-June/msg00038.html but 
> having had a look through I can't see it. 
>  
> For v3 please could you give an overview/summary of ow it fits together 
> in the 0/N patch. 

Sure. Thanks!

-Chunyan

>  
>  
>  


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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