qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 1/3] WHPX Add signature CPUID
@ 2018-05-15 17:35 petrutlucian94
  2018-05-15 17:35 ` [Qemu-devel] [PATCH v2 2/3] WHPX: dynamically load WHP libraries petrutlucian94
  2018-05-15 17:35 ` [Qemu-devel] [PATCH v2 3/3] WHPX: fix some compiler warnings petrutlucian94
  0 siblings, 2 replies; 8+ messages in thread
From: petrutlucian94 @ 2018-05-15 17:35 UTC (permalink / raw)
  Cc: Lucian Petrut, Alessandro Pilotti, Justin Terry, Paolo Bonzini,
	Richard Henderson, Eduardo Habkost, open list:All patches CC here

From: Lucian Petrut <lpetrut@cloudbasesolutions.com>

Adds the CPUID trap for CPUID 0x40000000, sending the WHPX signature
to the guest upon request. This is consistent with other QEMU
accelerators (KVM).

Signed-off-by: Alessandro Pilotti <apilotti@cloudbasesolutions.com>
Signed-off-by: Justin Terry (VM) <juterry@microsoft.com>
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
---
 target/i386/whpx-all.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/target/i386/whpx-all.c b/target/i386/whpx-all.c
index 5843517..64ef79a 100644
--- a/target/i386/whpx-all.c
+++ b/target/i386/whpx-all.c
@@ -29,6 +29,8 @@
 #include <WinHvPlatform.h>
 #include <WinHvEmulation.h>
 
+#define WHPX_CPUID_SIGNATURE 0x40000000
+
 struct whpx_state {
     uint64_t mem_quota;
     WHV_PARTITION_HANDLE partition;
@@ -1349,6 +1351,27 @@ static int whpx_accel_init(MachineState *ms)
         goto error;
     }
 
+    UINT32 signature[3] = {0};
+    memcpy(signature, "WHPXWHPXWHPX", 12);
+
+    WHV_X64_CPUID_RESULT cpuidResultList[1] = {0};
+    cpuidResultList[0].Function = WHPX_CPUID_SIGNATURE;
+    cpuidResultList[0].Eax = 0;
+    cpuidResultList[0].Ebx = signature[0];
+    cpuidResultList[0].Ecx = signature[1];
+    cpuidResultList[0].Edx = signature[2];
+    hr = WHvSetPartitionProperty(whpx->partition,
+                                 WHvPartitionPropertyCodeCpuidResultList,
+                                 cpuidResultList,
+                                 RTL_NUMBER_OF(cpuidResultList) *
+                                    sizeof(WHV_X64_CPUID_RESULT));
+    if (FAILED(hr)) {
+        error_report("WHPX: Failed to set partition CpuidResultList hr=%08lx",
+                     hr);
+        ret = -EINVAL;
+        goto error;
+    }
+
     hr = WHvSetupPartition(whpx->partition);
     if (FAILED(hr)) {
         error_report("WHPX: Failed to setup partition, hr=%08lx", hr);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 3/3] WHPX: fix some compiler warnings
@ 2018-05-16 10:21 Lucian Petrut
  2018-05-16 10:41 ` Paolo Bonzini
  0 siblings, 1 reply; 8+ messages in thread
From: Lucian Petrut @ 2018-05-16 10:21 UTC (permalink / raw)
  To: Paolo Bonzini, petrutlucian94@gmail.com
  Cc: Alessandro Pilotti, Justin Terry, Richard Henderson,
	Eduardo Habkost, open list:All patches CC here

Hi,

Thanks for reviewing those changes.

“can you send a patch with the bugfix only”

By “the bugfix only” you mean the previous commit, the one that dynamically loads the DLLs?
FWIW, without this patch, i386 targets won’t compile, so I’d consider that an improvement. Probably I should’ve explicitly mentioned this in the commit message.

Regards,
Lucian Petrut

From: Paolo Bonzini<mailto:pbonzini@redhat.com>
Sent: Wednesday, May 16, 2018 1:13 PM
To: petrutlucian94@gmail.com<mailto:petrutlucian94@gmail.com>
Cc: Lucian Petrut<mailto:lpetrut@cloudbasesolutions.com>; Alessandro Pilotti<mailto:apilotti@cloudbasesolutions.com>; Justin Terry<mailto:juterry@microsoft.com>; Richard Henderson<mailto:rth@twiddle.net>; Eduardo Habkost<mailto:ehabkost@redhat.com>; open list:All patches CC here<mailto:qemu-devel@nongnu.org>
Subject: Re: [PATCH v2 3/3] WHPX: fix some compiler warnings

On 15/05/2018 19:35, petrutlucian94@gmail.com wrote:
> From: Lucian Petrut <lpetrut@cloudbasesolutions.com>
>
> This patch fixes a few compiler warnings, especially in case of
> x86 targets, where the number of registers was not properly handled
> and could cause an overflow.
>
> Signed-off-by: Alessandro Pilotti <apilotti@cloudbasesolutions.com>
> Signed-off-by: Justin Terry (VM) <juterry@microsoft.com>
> Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
> ---
>  target/i386/whpx-all.c | 49 +++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 35 insertions(+), 14 deletions(-)
>
> diff --git a/target/i386/whpx-all.c b/target/i386/whpx-all.c
> index 0a29d56..2fd3397 100644
> --- a/target/i386/whpx-all.c
> +++ b/target/i386/whpx-all.c
> @@ -226,24 +226,31 @@ static void whpx_set_registers(CPUState *cpu)
>      struct whpx_vcpu *vcpu = get_whpx_vcpu(cpu);
>      struct CPUX86State *env = (CPUArchState *)(cpu->env_ptr);
>      X86CPU *x86_cpu = X86_CPU(cpu);
> -    struct whpx_register_set vcxt = {0};
> +    struct whpx_register_set vcxt;
>      HRESULT hr;
> -    int idx = 0;
> +    int idx;
> +    int idx_next;
>      int i;
>      int v86, r86;
>
>      assert(cpu_is_stopped(cpu) || qemu_cpu_is_self(cpu));
>
> +    memset(&vcxt, 0, sizeof(struct whpx_register_set));

This change does not seem like an improvement, can you send a patch with
the bugfix only?

Thanks,

Paolo


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-05-16 10:45 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-15 17:35 [Qemu-devel] [PATCH v2 1/3] WHPX Add signature CPUID petrutlucian94
2018-05-15 17:35 ` [Qemu-devel] [PATCH v2 2/3] WHPX: dynamically load WHP libraries petrutlucian94
2018-05-16 10:13   ` Paolo Bonzini
2018-05-15 17:35 ` [Qemu-devel] [PATCH v2 3/3] WHPX: fix some compiler warnings petrutlucian94
2018-05-16 10:13   ` Paolo Bonzini
  -- strict thread matches above, loose matches on Subject: below --
2018-05-16 10:21 Lucian Petrut
2018-05-16 10:41 ` Paolo Bonzini
2018-05-16 10:44   ` Lucian Petrut

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).