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

Re: [Xen-devel] [RFC 4/7] libxl: Add "stubdomain_version" to domain_build_info.



On Tue, 3 Feb 2015, Eric Shelton wrote:
> This enum gives the ability to select between a MiniOS-based QEMU
> traditional stub domain and a Linux-based QEMU upstream stub domain.  To
> use the Linux-based stubdomain, the following two lines should be
> included in the appropriate xl.cfg file:
> 
> device_model_version="qemu-xen"
> device_model_stubdomain_override=1
> 
> To use the MiniOS-based stubdomain, the following is used instead:
> 
> device_model_version="qemu-xen-traditional"
> device_model_stubdomain_override=1
> 
> Signed-off-by: Eric Shelton <eshelton@xxxxxxxxx>
> ---
>  tools/libxl/libxl_create.c  | 34 +++++++++++++++++++++++++++++-----
>  tools/libxl/libxl_types.idl |  7 +++++++
>  2 files changed, 36 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index 98687bd..15258fa 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -181,12 +181,36 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
>      }
>  
>      if (b_info->type == LIBXL_DOMAIN_TYPE_HVM &&
> -        b_info->device_model_version !=
> -            LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL &&
>          libxl_defbool_val(b_info->device_model_stubdomain)) {
> -        LIBXL__LOG(CTX, XTL_ERROR,
> -            "device model stubdomains require \"qemu-xen-traditional\"");
> -        return ERROR_INVAL;
> +        if (!b_info->stubdomain_version) {
> +            switch (b_info->device_model_version) {
> +            case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL:
> +                b_info->stubdomain_version = LIBXL_STUBDOMAIN_VERSION_MINIOS;
> +                break;
> +            case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN:
> +                b_info->stubdomain_version = LIBXL_STUBDOMAIN_VERSION_LINUX;
> +                break;
> +            default: abort();
> +            }
> +        }
> +
> +        switch (b_info->device_model_version) {
> +        case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL:
> +            if (b_info->stubdomain_version != 
> LIBXL_STUBDOMAIN_VERSION_MINIOS) {
> +                LIBXL__LOG(CTX, XTL_ERROR,
> +                  "\"qemu-xen-traditional\" require \"minios\" as 
> stubdomain");
> +                return ERROR_INVAL;
> +            }
> +            break;
> +        case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN:
> +            if (b_info->stubdomain_version != 
> LIBXL_STUBDOMAIN_VERSION_LINUX) {
> +                LIBXL__LOG(CTX, XTL_ERROR,
> +                           "\"qemu-xen\" require \"linux\" as stubdomain");
> +                return ERROR_INVAL;
> +            }
> +            break;
> +        default: abort();
> +        }
>      }
>  
>      if (!b_info->max_vcpus)
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 02be466..8d0ac3b 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -83,6 +83,12 @@ libxl_device_model_version = 
> Enumeration("device_model_version", [
>      (2, "QEMU_XEN"),             # Upstream based qemu-xen device model
>      ])
>  
> +# Give the kernel running in the stub-domain
> +libxl_stubdomain_version = Enumeration("stubdomain_version", [

This should just be called stubdomain_version.


> +    (1, "MINIOS"),
> +    (2, "LINUX"),
> +    ])
> +
>  libxl_console_type = Enumeration("console_type", [
>      (0, "UNKNOWN"),
>      (1, "SERIAL"),
> @@ -379,6 +385,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
>      
>      ("device_model_version", libxl_device_model_version),
>      ("device_model_stubdomain", libxl_defbool),
> +    ("stubdomain_version", libxl_stubdomain_version),
>      # if you set device_model you must set device_model_version too
>      ("device_model",     string),
>      ("device_model_ssidref", uint32),
> -- 
> 1.8.5.5
> 

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