Am 8. August 2025 06:54:06 UTC schrieb Mohamed Mediouni 
<[email protected]>:
>winhvemulation is x86_64 only.
>
>In the future, we might want to get rid of winhvemulation usage
>entirely.
>
>Signed-off-by: Mohamed Mediouni <[email protected]>
>
>Reviewed-by: Pierrick Bouvier <[email protected]>
>---
> accel/whpx/whpx-common.c       | 14 ++++++++++++--
> include/system/whpx-common.h   |  2 ++
> include/system/whpx-internal.h |  7 ++++++-
> 3 files changed, 20 insertions(+), 3 deletions(-)
>
>diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c
>index 66c9238586..e2d692126a 100644
>--- a/accel/whpx/whpx-common.c
>+++ b/accel/whpx/whpx-common.c
>@@ -41,7 +41,9 @@
> bool whpx_allowed;
> static bool whp_dispatch_initialized;
> static HMODULE hWinHvPlatform;
>+#ifdef __x86_64__
> static HMODULE hWinHvEmulation;
>+#endif
> 
> struct whpx_state whpx_global;
> struct WHPDispatch whp_dispatch;
>@@ -236,8 +238,10 @@ void whpx_destroy_vcpu(CPUState *cpu)
>     struct whpx_state *whpx = &whpx_global;
> 
>     whp_dispatch.WHvDeleteVirtualProcessor(whpx->partition, cpu->cpu_index);
>+#ifdef __x86_64__
>     AccelCPUState *vcpu = cpu->accel;
>     whp_dispatch.WHvEmulatorDestroyEmulator(vcpu->emulator);
>+#endif
>     g_free(cpu->accel);
> }
> 
>@@ -412,8 +416,12 @@ static bool load_whp_dispatch_fns(HMODULE *handle,
>         LIST_WINHVPLATFORM_FUNCTIONS(WHP_LOAD_FIELD)
>         break;
>     case WINHV_EMULATION_FNS_DEFAULT:
>+#ifdef __x86_64__
>         WHP_LOAD_LIB(WINHV_EMULATION_DLL, hLib)
>         LIST_WINHVEMULATION_FUNCTIONS(WHP_LOAD_FIELD)
>+#else
>+        abort();

In the sense of g_assert_not_reached()? Then it is preferred.

>+#endif
>         break;
>     case WINHV_PLATFORM_FNS_SUPPLEMENTAL:
>         WHP_LOAD_LIB(WINHV_PLATFORM_DLL, hLib)
>@@ -539,11 +547,11 @@ bool init_whp_dispatch(void)
>     if (!load_whp_dispatch_fns(&hWinHvPlatform, WINHV_PLATFORM_FNS_DEFAULT)) {
>         goto error;
>     }
>-
>+#ifdef __x86_64__
>     if (!load_whp_dispatch_fns(&hWinHvEmulation, 
> WINHV_EMULATION_FNS_DEFAULT)) {
>         goto error;
>     }
>-
>+#endif
>     assert(load_whp_dispatch_fns(&hWinHvPlatform,
>         WINHV_PLATFORM_FNS_SUPPLEMENTAL));
>     whp_dispatch_initialized = true;
>@@ -553,9 +561,11 @@ error:
>     if (hWinHvPlatform) {
>         FreeLibrary(hWinHvPlatform);
>     }
>+#ifdef __x86_64__
>     if (hWinHvEmulation) {
>         FreeLibrary(hWinHvEmulation);
>     }
>+#endif
>     return false;
> }
> 
>diff --git a/include/system/whpx-common.h b/include/system/whpx-common.h
>index e549c7539c..7a7c607e0a 100644
>--- a/include/system/whpx-common.h
>+++ b/include/system/whpx-common.h
>@@ -3,7 +3,9 @@
> #define SYSTEM_WHPX_COMMON_H
> 
> struct AccelCPUState {
>+#ifdef __x86_64__
>     WHV_EMULATOR_HANDLE emulator;
>+#endif
>     bool window_registered;
>     bool interruptable;
>     bool ready_for_pic_interrupt;
>diff --git a/include/system/whpx-internal.h b/include/system/whpx-internal.h
>index e61375d554..e57d2c8526 100644
>--- a/include/system/whpx-internal.h
>+++ b/include/system/whpx-internal.h
>@@ -4,8 +4,9 @@
> 
> #include <windows.h>
> #include <winhvplatform.h>
>+#ifdef __x86_64__
> #include <winhvemulation.h>
>-
>+#endif
> typedef enum WhpxBreakpointState {
>     WHPX_BP_CLEARED = 0,
>     WHPX_BP_SET_PENDING,
>@@ -98,12 +99,16 @@ void whpx_apic_get(DeviceState *s);
> 
> /* Define function typedef */
> LIST_WINHVPLATFORM_FUNCTIONS(WHP_DEFINE_TYPE)
>+#ifdef __x86_64__
> LIST_WINHVEMULATION_FUNCTIONS(WHP_DEFINE_TYPE)
>+#endif
> LIST_WINHVPLATFORM_FUNCTIONS_SUPPLEMENTAL(WHP_DEFINE_TYPE)
> 
> struct WHPDispatch {
>     LIST_WINHVPLATFORM_FUNCTIONS(WHP_DECLARE_MEMBER)
>+#ifdef __x86_64__
>     LIST_WINHVEMULATION_FUNCTIONS(WHP_DECLARE_MEMBER)
>+#endif
>     LIST_WINHVPLATFORM_FUNCTIONS_SUPPLEMENTAL(WHP_DECLARE_MEMBER)
> };
> 

Reply via email to