On Wed, 2016-01-20 at 12:57 +0100, Roger Pau Monne wrote:
> And use it as the default value for the VGA kind. This allows libxl to
> set
> it to the default value later on when the domain type is known. For HVM
> guests the default value is LIBXL_VGA_INTERFACE_TYPE_CIRRUS while for
> HVMlite the default value is LIBXL_VGA_INTERFACE_TYPE_NONE.

Most enums in lixl_type.idl call this value "UNKNOWN" rather than "UNDEF".
We should be consistent.

You will also need to add the usual #define LIBXL_HAVE to libxl.h.

Everything else looks ok to me.

> 
> Signed-off-by: Roger Pau Monné <roger....@citrix.com>
> ---
> Cc: Ian Jackson <ian.jack...@eu.citrix.com>
> Cc: Ian Campbell <ian.campb...@citrix.com>
> Cc: Wei Liu <wei.l...@citrix.com>
> ---
>  tools/libxl/libxl_create.c  | 8 ++++++--
>  tools/libxl/libxl_dm.c      | 6 ++++++
>  tools/libxl/libxl_types.idl | 3 ++-
>  3 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index e491d83..61a4001 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -206,8 +206,12 @@ int libxl__domain_build_info_setdefault(libxl__gc
> *gc,
>          if (b_info->u.hvm.mmio_hole_memkb == LIBXL_MEMKB_DEFAULT)
>              b_info->u.hvm.mmio_hole_memkb = 0;
>  
> -        if (!b_info->u.hvm.vga.kind)
> -            b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
> +        if (b_info->u.hvm.vga.kind == LIBXL_VGA_INTERFACE_TYPE_UNDEF) {
> +            if (b_info->device_model_version ==
> LIBXL_DEVICE_MODEL_VERSION_NONE)
> +                b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_NONE;
> +            else
> +                b_info->u.hvm.vga.kind =
> LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
> +        }
>  
>          if (!b_info->u.hvm.hdtype)
>              b_info->u.hvm.hdtype = LIBXL_HDTYPE_IDE;
> diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
> index a088d71..9aa0cc8 100644
> --- a/tools/libxl/libxl_dm.c
> +++ b/tools/libxl/libxl_dm.c
> @@ -531,6 +531,9 @@ static int
> libxl__build_device_model_args_old(libxl__gc *gc,
>              break;
>          case LIBXL_VGA_INTERFACE_TYPE_QXL:
>              break;
> +        default:
> +            LOG(ERROR, "Invalid emulated video card specified");
> +            return ERROR_INVAL;
>          }
>  
>          if (b_info->u.hvm.boot) {
> @@ -970,6 +973,9 @@ static int
> libxl__build_device_model_args_new(libxl__gc *gc,
>                  GCSPRINTF("qxl-
> vga,vram_size_mb=%"PRIu64",ram_size_mb=%"PRIu64,
>                  (b_info->video_memkb/2/1024), (b_info-
> >video_memkb/2/1024) ) );
>              break;
> +        default:
> +            LOG(ERROR, "Invalid emulated video card specified");
> +            return ERROR_INVAL;
>          }
>  
>          if (b_info->u.hvm.boot) {
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 9ad7eba..92c95e5 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -204,11 +204,12 @@ libxl_shutdown_reason =
> Enumeration("shutdown_reason", [
>      ], init_val = "LIBXL_SHUTDOWN_REASON_UNKNOWN")
>  
>  libxl_vga_interface_type = Enumeration("vga_interface_type", [
> +    (0, "UNDEF"),
>      (1, "CIRRUS"),
>      (2, "STD"),
>      (3, "NONE"),
>      (4, "QXL"),
> -    ], init_val = "LIBXL_VGA_INTERFACE_TYPE_CIRRUS")
> +    ], init_val = "LIBXL_VGA_INTERFACE_TYPE_UNDEF")
>  
>  libxl_vendor_device = Enumeration("vendor_device", [
>      (0, "NONE"),
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to