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

Re: [Xen-devel] [PATCH v2 3/3] libxl: add domain config parameter to force start of qemu



On Tue, Mar 22, 2016 at 08:29:23AM +0100, Juergen Gross wrote:
> Today the device model (qemu) is started for a pv domain only in case
> a device requiring qemu is specified in the domain configuration
> (qdisk, vfb, channel). If there is no such device the device model
> isn't started and hence it is possible to add such a device to the
> domain later.
> 
> Add a domain configuration parameter to specify the device model is
> to be started in any case. This will enable adding devices with a
> qemu based backend later.

.. s/devices/PV devices/

As surely PV guests can't use emulated devices. Or could they? That
would be quite interesting in a not kind of fun way.

> 
> While the optimal solution would be to start the device model
> automatically when needed this would require some major rework of
> libxl at multiple places.

But you are not using this now (late start of QEMU), so why this patch?

> 
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
>  docs/man/xl.cfg.pod.5       | 6 ++++++
>  tools/libxl/libxl_create.c  | 1 +
>  tools/libxl/libxl_dm.c      | 5 +++++
>  tools/libxl/libxl_types.idl | 1 +
>  tools/libxl/xl_cmdimpl.c    | 3 +++
>  5 files changed, 16 insertions(+)
> 
> diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
> index a4cc1b3..a3611a6 100644
> --- a/docs/man/xl.cfg.pod.5
> +++ b/docs/man/xl.cfg.pod.5
> @@ -1956,6 +1956,12 @@ xen-qemudepriv-domid$domid or xen-qemudepriv-shared or 
> root.
>  Please note that running QEMU as non-root causes migration and PCI
>  passthrough not to work properly.
>  
> +=item B<device_model_always=BOOLEAN>
> +
> +If true, start the device model for paravirtualized domains even if this 
> isn't
> +required according to the configured devices. This allows to add such devices
> +later when the domain is already running.
> +
>  =back
>  
>  =head2 Keymaps
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index 0e2b0a0..52a0a2f 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -73,6 +73,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
>          return ERROR_INVAL;
>      }
>  
> +    libxl_defbool_setdefault(&b_info->device_model_always, false);
>      libxl_defbool_setdefault(&b_info->device_model_stubdomain, false);
>  
>      if (libxl_defbool_val(b_info->device_model_stubdomain) &&
> diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
> index 361e584..767959d 100644
> --- a/tools/libxl/libxl_dm.c
> +++ b/tools/libxl/libxl_dm.c
> @@ -2115,6 +2115,11 @@ int libxl__need_xenpv_qemu(libxl__gc *gc, 
> libxl_domain_config *d_config)
>      if (libxl__get_domid(gc, &domid))
>          goto out;
>  
> +    if (libxl_defbool_val(d_config->b_info.device_model_always)) {
> +        ret = 1;
> +        goto out;
> +    }
> +
>      if (d_config->num_vfbs > 0) {
>          ret = 1;
>          goto out;
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 304aa11..8ff9050 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -451,6 +451,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
>      ("device_model_ssidref", uint32),
>      ("device_model_ssid_label", string),
>      ("device_model_user", string),
> +    ("device_model_always", libxl_defbool),
>  
>      # extra parameters pass directly to qemu, NULL terminated
>      ("extra",            libxl_string_list),
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index a3610fc..0fdca73 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -2269,6 +2269,9 @@ skip_usbdev:
>      }
>  
>      /* parse device model arguments, this works for pv, hvm and stubdom */
> +    xlu_cfg_get_defbool (config, "device_model_always",
> +                         &b_info->device_model_always, 0);
> +
>      if (!xlu_cfg_get_string (config, "device_model", &buf, 0)) {
>          fprintf(stderr,
>                  "WARNING: ignoring device_model directive.\n"
> -- 
> 2.6.2
> 
> 
> _______________________________________________
> 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®.