summaryrefslogtreecommitdiffstats
path: root/hw/i386/vmport.c
diff options
context:
space:
mode:
authorLiran Alon2020-03-12 17:54:20 +0100
committerPaolo Bonzini2020-06-10 18:09:44 +0200
commit2fd2f799f874a4d4156c4c7287c92cfbbae5bdb2 (patch)
tree4812ffba7b872df66519a7077ec317b74e6ca082 /hw/i386/vmport.c
parenthw/i386/vmport: Set EAX to -1 on failed and unsupported commands (diff)
downloadqemu-2fd2f799f874a4d4156c4c7287c92cfbbae5bdb2.tar.gz
qemu-2fd2f799f874a4d4156c4c7287c92cfbbae5bdb2.tar.xz
qemu-2fd2f799f874a4d4156c4c7287c92cfbbae5bdb2.zip
hw/i386/vmport: Introduce vmware-vmx-version property
vmware-vmx-version is a number returned from CMD_GETVERSION which specifies to guest VMware Tools the the host VMX version. If the host reports a number that is different than what the guest VMware Tools expects, it may force guest to upgrade VMware Tools. (See comment above VERSION_MAGIC and VmCheck_IsVirtualWorld() function in open-vm-tools open-source code). For better readability and allow maintaining compatability for guests which may expect different vmware-vmx-version, make vmware-vmx-version a VMPort object property. This would allow user to control it's value via "-global vmport.vmware-vmx-version=X". Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com> Signed-off-by: Liran Alon <liran.alon@oracle.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200312165431.82118-6-liran.alon@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/i386/vmport.c')
-rw-r--r--hw/i386/vmport.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 730b61fcaa..dfebaf5b73 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -60,6 +60,8 @@ typedef struct VMPortState {
VMPortReadFunc *func[VMPORT_ENTRIES];
void *opaque[VMPORT_ENTRIES];
+ uint32_t vmware_vmx_version;
+
uint32_t compat_flags;
} VMPortState;
@@ -138,7 +140,7 @@ static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr)
X86CPU *cpu = X86_CPU(current_cpu);
cpu->env.regs[R_EBX] = VMPORT_MAGIC;
- return 6;
+ return port_state->vmware_vmx_version;
}
static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
@@ -179,6 +181,11 @@ static Property vmport_properties[] = {
VMPORT_COMPAT_READ_SET_EAX_BIT, true),
DEFINE_PROP_BIT("x-signal-unsupported-cmd", VMPortState, compat_flags,
VMPORT_COMPAT_SIGNAL_UNSUPPORTED_CMD_BIT, true),
+
+ /* Default value taken from open-vm-tools code VERSION_MAGIC definition */
+ DEFINE_PROP_UINT32("vmware-vmx-version", VMPortState,
+ vmware_vmx_version, 6),
+
DEFINE_PROP_END_OF_LIST(),
};