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

Re: [Xen-devel] [PATCH V8 7/7] domcreate: support pvusb in configuration file




>>> On 11/13/2015 at 12:10 AM, in message
<CAFLBxZZ_KN0vMr77+dfRTgGEWW3LSbv8m__AWfvEeCH1WBRrYw@xxxxxxxxxxxxxx>, George
Dunlap <George.Dunlap@xxxxxxxxxxxxx> wrote: 
> On Wed, Oct 21, 2015 at 10:08 AM, Chunyan Liu <cyliu@xxxxxxxx> wrote: 
> > Add code to support pvusb in domain config file. One could specify 
> > usbctrl and usb in domain's configuration file and create domain, 
> > then usb controllers will be created and usb device would be attached 
> > to guest automatically. 
> > 
> > One could specify usb controllers and usb devices in config file 
> > like this: 
> > usbctrl=['version=2,ports=4', 'version=1, ports=4', ] 
> > usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ] 
> > 
> > Signed-off-by: Chunyan Liu <cyliu@xxxxxxxx> 
> > Signed-off-by: Simon Cao <caobosimon@xxxxxxxxx> 
> > 
> > --- 
> > changes: 
> >   - change parse_usb_config and parse_usbctrl_config, following 
> >     parse_nic_config way, and move to previous patch 
> >   - update user interface to specify hostbus, hostaddr instead of 
> >     hostbus.hostaddr for future extension 
> > 
> >  docs/man/xl.cfg.pod.5        | 81  
> ++++++++++++++++++++++++++++++++++++++++++++ 
> >  tools/libxl/libxl_create.c   | 73 +++++++++++++++++++++++++++++++++++++-- 
> >  tools/libxl/libxl_device.c   |  4 +++ 
> >  tools/libxl/libxl_internal.h |  8 +++++ 
> >  tools/libxl/xl_cmdimpl.c     | 54 ++++++++++++++++++++++++++++- 
> >  5 files changed, 216 insertions(+), 4 deletions(-) 
> > 
> > diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 
> > index b63846a..f24c008 100644 
> > --- a/docs/man/xl.cfg.pod.5 
> > +++ b/docs/man/xl.cfg.pod.5 
> > @@ -722,6 +722,87 @@ Note this may be overridden by rdm_policy option in 
> > PCI  
> device configuration. 
> > 
> >  =back 
> > 
> > +=item B<usbctrl=[ "USBCTRL_SPEC_STRING", "USBCTRL_SPEC_STRING", ... ]> 
> > + 
> > +Specifies the USB controllers created for this guest. Each 
> > +B<USB_SPEC_STRING> has the form C<KEY=VALUE,KEY=VALUE,...> where: 
> > + 
> > +=over 4 
> > + 
> > +=item B<KEY=VALUE> 
> > + 
> > +Possible B<KEY>s are: 
> > + 
> > +=over 4 
> > + 
> > +=item B<type=TYPE> 
> > + 
> > +Specifies the protocol to implement USB controller, could be "pv"  
> (indicates 
> > +PVUSB) or "qemu" (indicates QEMU emulated). Currently only "pv" is  
> supported. 
>  
> I think most of these should basically be copied from the descriptions 
> of the arguments in patch 5. 

I'll check.

>  
> > +=item B<version=VERSION> 
> > + 
> > +Specifies version of the USB controller, could be 1 (USB1.1) or 2  
> (USB2.0). 
> > +Default is 2 (USB2.0). 
> > + 
> > +=item B<ports=PORTS> 
> > + 
> > +Specifies port number of the USB controller. Default is 8. 
> > + 
> > +Each USB controller will have an index starting from 0. On the same 
> > +controller, each port will have an index starting from 1. 
>  
> I'd say: 
>  
> "USB controler ids start from 0.  In line with the USB spec, however, 
> ports on a controller start from 1." 

Much better. Thanks!

>  
> > + 
> > +E.g. 
> > +usbctrl=["version=1,ports=4", "version=2,ports=8",] 
> > +The first controller has: 
> > +controller index = 0, and port 1,2,3,4. 
> > +The second controller has: 
> > +controller index = 1, and port 1,2,3,4,5,6,7,8. 
>  
> The example is good, but I'd use "controller id" rather than "controller  
> index".

Take it.
 
>  
> > +=back 
> > + 
> > +=back 
> > + 
> > +=item B<usbdev=[ "USB_SPEC_STRING", "USB_SPEC_STRING", ... ]> 
> > + 
> > +Specifies the host USB devices to passthrough to this guest. Each 
> > +B<USB_SPEC_STRING> has the form C<KEY=VALUE,KEY=VALUE,...> where: 
>  
> "Specifiec the USB devices to be attached to the guest at boot." 
> (i.e., don't assume all devices are hostdev.) 

Thanks, I'll update.

>  
> > +=over 4 
> > + 
> > +=item B<KEY=VALUE> 
> > + 
> > +Possible B<KEY>s are: 
> > + 
> > +=over 4 
> > + 
> > +=item B<devtype=hostdev> 
> > + 
> > +Specifies USB device type. Currently only support 'hostdev'. 
> > + 
> > +=item B<hostbus=busnum> 
> > + 
> > +Specifies busnum of the USB device from the host perspective. 
> > + 
> > +=item B<hostaddr=devnum> 
> > + 
> > +Specifies devnum of the USB device from the host perspective. 
> > + 
> > +=item B<controller=CONTROLLER> 
> > + 
> > +Specifies USB controller index, to which controller the USB device is  
> attached. 
> > + 
> > +=item B<port=PORT> 
> > + 
> > +Specifies USB port index, to which port the USB device is attached.  
> B<port=PORT> 
> > +is valid only when B<controller=CONTROLLER> is specified. Without 
> > +B<controller=CONTROLLER>, it will find the first available USB  
> controller:port 
> > +and use it. If there is no controller at all, it will create one. 
>  
> I think the last sentence should be a separate paragraph, probably 
> after the "=back".  And a more idiomatic way to write it might be: 
>  
> "If no controller is specified, an available controller:port 
> combination will be used.  If there are no available controller:port 
> options, a new controller will be created." 

Thanks very much! Much better.

>  
> Only one other minor comment from me: 
>  
> > +    if (!xlu_cfg_get_list(config, "usbctrl", &usbctrls, 0, 0)) { 
> > +        d_config->num_usbctrls = 0; 
> > +        d_config->usbctrls = NULL; 
> > +        while ((buf = xlu_cfg_get_listitem(usbctrls,  
> d_config->num_usbctrls)) 
> > +               != NULL) { 
>  
> I don't know what the other maintainers think, but particularly given 
> that this is spanning a line, I would personally take out the 
> comparison, and just make it 
>  
>  while ((buf = ...)) { 
>  ... 
> } 
>  
> Other than that, this one looks good to me. 
>  
>  -George 
>  
> _______________________________________________ 
> Xen-devel mailing list 
> Xen-devel@xxxxxxxxxxxxx 
> http://lists.xen.org/xen-devel 
>  
>  


_______________________________________________
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®.