qemu-devel
[Top][All Lists]
Advanced

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

Re: [PULL 027/115] hw/i386/vmport: Propagate IOPort read to vCPU EAX reg


From: Liran Alon
Subject: Re: [PULL 027/115] hw/i386/vmport: Propagate IOPort read to vCPU EAX register
Date: Tue, 23 Jun 2020 12:34:59 +0300
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:68.0) Gecko/20100101 Thunderbird/68.9.0


On 23/06/2020 11:46, Laurent Vivier wrote:
On 11/06/2020 21:43, Paolo Bonzini wrote:
From: Liran Alon <liran.alon@oracle.com>

vmport_ioport_read() returns the value that should propagate to vCPU EAX
register when guest reads VMPort IOPort (i.e. By x86 IN instruction).

However, because vmport_ioport_read() calls cpu_synchronize_state(), the
returned value gets overridden by the value in QEMU vCPU EAX register.
i.e. cpu->env.regs[R_EAX].

To fix this issue, change vmport_ioport_read() to explicitly override
cpu->env.regs[R_EAX] with the value it wish to propagate to vCPU EAX
register.

Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
Message-Id: <20200312165431.82118-4-liran.alon@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
  hw/core/machine.c |  1 +
  hw/i386/vmport.c  | 32 +++++++++++++++++++++++++++++---
  2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index bb3a7b18b1..83f0fe5c91 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -43,6 +43,7 @@ GlobalProperty hw_compat_4_2[] = {
      { "qxl", "revision", "4" },
      { "qxl-vga", "revision", "4" },
      { "fw_cfg", "acpi-mr-restore", "false" },
+    { "vmport", "x-read-set-eax", "off" },
This is modifying the hw_compat_4_2 properties while qemu-5.0 has been
already released. I think all the vmport property updates [1] should go
to hw_compat_5_0.

Liran? Paolo?

When I submitted these patches, QEMU 5.0 wasn't released yet. That's why I updated hw_compat_4_2[].

Having said that, I believe the compatibility risk here is very small and therefore because QEMU 5.0 was released for a very short time-span before these patches were merged, I'm not sure it's really preferable to move these flags to hw_compat_5_0[]. But I will leave this for Paolo to decide. (Note that moving these flags will also risk in comparability people running with current patches and
specifying explicitly machine-type 5.0...)

-Liran


Thanks,
Laurent

[1]

b889212973da hw/i386/vmport: Propagate IOPort read to vCPU EAX register
0342ee761ef2 hw/i386/vmport: Set EAX to -1 on failed and unsupported
commands
f8bdc550370f hw/i386/vmport: Report vmware-vmx-type in CMD_GETVERSION
aaacf1c15a22 hw/i386/vmport: Add support for CMD_GETBIOSUUID

     { "vmport", "x-read-set-eax", "off" },
     { "vmport", "x-signal-unsupported-cmd", "off" },
     { "vmport", "x-report-vmx-type", "off" },
     { "vmport", "x-cmds-v2", "off" },




reply via email to

[Prev in Thread] Current Thread [Next in Thread]