[libvirt] [PATCH 08/10] Convert USB hostdevices over to -device

Daniel Veillard veillard at redhat.com
Thu Dec 17 09:17:18 UTC 2009


On Tue, Dec 15, 2009 at 03:14:48PM +0000, Daniel P. Berrange wrote:
> The old syntax was
> 
>    -usbdevice host:PRODUCT:VENDOR
> 
> Or
> 
>    -usbdevice host:BUS.DEV
> 
> The new syntax is
> 
>    -device usb-host,product=PRODUCT,vendor=VENDOR
> 
> Or
> 
>    -device usb-host,hostbus=BUS,hostaddr=DEV
> ---
>  src/qemu/qemu_conf.c |   39 ++++++++++++++++++++++++++++-----------
>  1 files changed, 28 insertions(+), 11 deletions(-)
> 
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index 7582319..ac322a7 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -2596,8 +2596,13 @@ int qemudBuildCommandLine(virConnectPtr conn,
>          virDomainInputDefPtr input = def->inputs[i];
>  
>          if (input->bus == VIR_DOMAIN_INPUT_BUS_USB) {
> -            ADD_ARG_LIT("-usbdevice");
> -            ADD_ARG_LIT(input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? "mouse" : "tablet");
> +            if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) {
> +                ADD_ARG_LIT("-device");
> +                ADD_ARG_LIT(input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? "usb-mouse" : "usb-tablet");
> +            } else {
> +                ADD_ARG_LIT("-usbdevice");
> +                ADD_ARG_LIT(input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? "mouse" : "tablet");
> +            }
>          }
>      }
>  
> @@ -2814,22 +2819,34 @@ int qemudBuildCommandLine(virConnectPtr conn,
>          /* USB */
>          if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
>              hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
> -            if(hostdev->source.subsys.u.usb.vendor) {
> -                    ret = virAsprintf(&usbdev, "host:%.4x:%.4x",
> -                               hostdev->source.subsys.u.usb.vendor,
> -                               hostdev->source.subsys.u.usb.product);
>  
> +            if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) {
> +                ADD_ARG_LIT("-device");
> +                if (hostdev->source.subsys.u.usb.vendor) {
> +                    ret = virAsprintf(&usbdev, "usb-host,vendor=%.4x,product=%.4x",
> +                                      hostdev->source.subsys.u.usb.vendor,
> +                                      hostdev->source.subsys.u.usb.product);
> +                } else {
> +                    ret = virAsprintf(&usbdev, "usb-host,hostbus=%.3d,hostaddr=%.3d",
> +                                      hostdev->source.subsys.u.usb.bus,
> +                                      hostdev->source.subsys.u.usb.device);
> +                }
>              } else {
> +                ADD_ARG_LIT("-usbdevice");
> +                if (hostdev->source.subsys.u.usb.vendor) {
> +                    ret = virAsprintf(&usbdev, "host:%.4x:%.4x",
> +                                      hostdev->source.subsys.u.usb.vendor,
> +                                      hostdev->source.subsys.u.usb.product);
> +                } else {
>                      ret = virAsprintf(&usbdev, "host:%.3d.%.3d",
> -                               hostdev->source.subsys.u.usb.bus,
> -                               hostdev->source.subsys.u.usb.device);
> +                                      hostdev->source.subsys.u.usb.bus,
> +                                      hostdev->source.subsys.u.usb.device);
> +                }
>              }
>              if (ret < 0)
>                  goto error;
>  
> -            ADD_ARG_LIT("-usbdevice");
> -            ADD_ARG_LIT(usbdev);
> -            VIR_FREE(usbdev);
> +            ADD_ARG(usbdev);
>          }
>  
>          /* PCI */

  ACK

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list