From mboxrd@z Thu Jan 1 00:00:00 1970 From: Don Slutz Subject: [PATCH v13 3/8] tools: Add vmware_hwver support Date: Sat, 28 Nov 2015 16:45:00 -0500 Message-ID: <1448747105-19966-4-git-send-email-Don.Slutz@Gmail.com> References: <1448747105-19966-1-git-send-email-Don.Slutz@Gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1448747105-19966-1-git-send-email-Don.Slutz@Gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Jun Nakajima , Wei Liu , Kevin Tian , Keir Fraser , Ian Campbell , George Dunlap , Andrew Cooper , Stefano Stabellini , Eddie Dong , Don Slutz , Don Slutz , Tim Deegan , Aravind Gopalakrishnan , Jan Beulich , Suravee Suthikulpanit , Boris Ostrovsky , Ian Jackson List-Id: xen-devel@lists.xenproject.org From: Don Slutz This is used to set xen_arch_domainconfig vmware_hw. It is set to the emulated VMware virtual hardware version. Currently 0, 3-4, 6-11 are good values. However the code only checks for == 0, != 0, or < 7. Signed-off-by: Don Slutz CC: Don Slutz Acked-by: Ian Campbell --- v13: Added: Acked-by: Ian Campbell v12: I'm not sure this hunk has anything to do with this patch, nor what the semantic difference between the old and new text is supposed to be. Dropped comment change. v11: Dropped "If non-zero then default VGA to VMware's VGA" v10: LIBXL_HAVE_LIBXL_VGA_INTERFACE_TYPE_VMWARE & LIBXL_HAVE_BUILDINFO_HVM_VMWARE_HWVER are arriving together a single umbrella could be used. Since I split the LIBXL_VGA_INTERFACE_TYPE_VMWARE into it's own patch, this is not longer true. But I did use 1 for the 2 c_info changes. Please use GCSPRINTF. Remove vga=vmware from here. v9: I assumed that s/vmware_hw/vmware_hwver/ is not a big enough change to drop the Reviewed-by. Did a minor edit to the commit message to add 7 to the list of values checked. v7: Default handling of hvm.vga.kind bad. Fixed. Default of vmware_port should be based on vmware_hw. Done. v5: Anything looking for Xen according to the Xen cpuid instructions... Adjusted doc to new wording. docs/man/xl.cfg.pod.5 | 17 +++++++++++++++++ tools/libxl/libxl_create.c | 4 +++- tools/libxl/libxl_types.idl | 1 + tools/libxl/libxl_x86.c | 3 +-- tools/libxl/xl_cmdimpl.c | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 index 9a5744d..088ea00 100644 --- a/docs/man/xl.cfg.pod.5 +++ b/docs/man/xl.cfg.pod.5 @@ -1506,6 +1506,23 @@ The viridian option can be specified as a boolean. A value of true (1) is equivalent to the list [ "defaults" ], and a value of false (0) is equivalent to an empty list. +=item B + +Turns on or off the exposure of VMware cpuid. The number is +VMware's hardware version number, where 0 is off. A number >= 7 +is needed to enable exposure of VMware cpuid. + +The hardware version number (vmware_hwver) comes from VMware config files. + +=over 4 + +In a .vmx it is virtualHW.version + +In a .ovf it is part of the value of vssd:VirtualSystemType. +For vssd:VirtualSystemType == vmx-07, vmware_hwver = 7. + +=back + =back =head3 Emulated VGA Graphics Device diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 8770486..291c569 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -423,7 +423,7 @@ int libxl__domain_build(libxl__gc *gc, vments[4] = "start_time"; vments[5] = GCSPRINTF("%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); - localents = libxl__calloc(gc, 9, sizeof(char *)); + localents = libxl__calloc(gc, 11, sizeof(char *)); i = 0; localents[i++] = "platform/acpi"; localents[i++] = libxl_defbool_val(info->u.hvm.acpi) ? "1" : "0"; @@ -431,6 +431,8 @@ int libxl__domain_build(libxl__gc *gc, localents[i++] = libxl_defbool_val(info->u.hvm.acpi_s3) ? "1" : "0"; localents[i++] = "platform/acpi_s4"; localents[i++] = libxl_defbool_val(info->u.hvm.acpi_s4) ? "1" : "0"; + localents[i++] = "platform/vmware_hwver"; + localents[i++] = GCSPRINTF("%"PRId64, d_config->c_info.vmware_hwver); if (info->u.hvm.mmio_hole_memkb) { uint64_t max_ram_below_4g = (1ULL << 32) - (info->u.hvm.mmio_hole_memkb << 10); diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 4f46594..4c4bb8c 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -372,6 +372,7 @@ libxl_domain_create_info = Struct("domain_create_info",[ ("run_hotplug_scripts",libxl_defbool), ("pvh", libxl_defbool), ("driver_domain",libxl_defbool), + ("vmware_hwver", uint64), ], dir=DIR_IN) libxl_domain_restore_params = Struct("domain_restore_params", [ diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index 51a10b8..03e717d 100644 --- a/tools/libxl/libxl_x86.c +++ b/tools/libxl/libxl_x86.c @@ -12,8 +12,7 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, else xc_config->emulation_flags = 0; - /* Note: will be changed in next patch (tools: Add ...). */ - xc_config->vmware_hwver = 0; + xc_config->vmware_hwver = d_config->c_info.vmware_hwver; return 0; } diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 93d5295..abd776e 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1485,6 +1485,8 @@ static void parse_config_data(const char *config_source, b_info->cmdline = parse_cmdline(config); xlu_cfg_get_defbool(config, "driver_domain", &c_info->driver_domain, 0); + if (!xlu_cfg_get_long(config, "vmware_hwver", &l, 1)) + c_info->vmware_hwver = l; switch(b_info->type) { case LIBXL_DOMAIN_TYPE_HVM: -- 1.8.3.1