Browse Source

accel/whpx: Expose whpx_enabled() to common code

Currently whpx_enabled() is restricted to target-specific code.
By defining CONFIG_WHPX_IS_POSSIBLE we allow its use anywhere.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250703173248.44995-26-philmd@linaro.org>
pull/292/head
Philippe Mathieu-Daudé 10 months ago
parent
commit
d5a407a576
  1. 1
      MAINTAINERS
  2. 1
      accel/stubs/meson.build
  3. 12
      accel/stubs/whpx-stub.c
  4. 23
      include/system/whpx.h
  5. 7
      target/i386/whpx/whpx-all.c

1
MAINTAINERS

@ -540,6 +540,7 @@ WHPX CPUs
M: Sunil Muthuswamy <sunilmut@microsoft.com>
S: Supported
F: target/i386/whpx/
F: accel/stubs/whpx-stub.c
F: include/system/whpx.h
X86 Instruction Emulator

1
accel/stubs/meson.build

@ -4,5 +4,6 @@ system_stubs_ss.add(when: 'CONFIG_KVM', if_false: files('kvm-stub.c'))
system_stubs_ss.add(when: 'CONFIG_TCG', if_false: files('tcg-stub.c'))
system_stubs_ss.add(when: 'CONFIG_HVF', if_false: files('hvf-stub.c'))
system_stubs_ss.add(when: 'CONFIG_NVMM', if_false: files('nvmm-stub.c'))
system_stubs_ss.add(when: 'CONFIG_WHPX', if_false: files('whpx-stub.c'))
specific_ss.add_all(when: ['CONFIG_SYSTEM_ONLY'], if_true: system_stubs_ss)

12
accel/stubs/whpx-stub.c

@ -0,0 +1,12 @@
/*
* WHPX stubs for QEMU
*
* Copyright (c) Linaro
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "qemu/osdep.h"
#include "system/whpx.h"
bool whpx_allowed;

23
include/system/whpx.h

@ -16,19 +16,20 @@
#define QEMU_WHPX_H
#ifdef COMPILING_PER_TARGET
# ifdef CONFIG_WHPX
# define CONFIG_WHPX_IS_POSSIBLE
# endif /* !CONFIG_WHPX */
#else
# define CONFIG_WHPX_IS_POSSIBLE
#endif /* COMPILING_PER_TARGET */
#ifdef CONFIG_WHPX
int whpx_enabled(void);
#ifdef CONFIG_WHPX_IS_POSSIBLE
extern bool whpx_allowed;
#define whpx_enabled() (whpx_allowed)
bool whpx_apic_in_platform(void);
#else /* CONFIG_WHPX */
#define whpx_enabled() (0)
#else /* !CONFIG_WHPX_IS_POSSIBLE */
#define whpx_enabled() 0
#define whpx_apic_in_platform() (0)
#endif /* CONFIG_WHPX */
#endif /* COMPILING_PER_TARGET */
#endif /* !CONFIG_WHPX_IS_POSSIBLE */
#endif /* QEMU_WHPX_H */

7
target/i386/whpx/whpx-all.c

@ -242,7 +242,7 @@ struct AccelCPUState {
WHV_RUN_VP_EXIT_CONTEXT exit_ctx;
};
static bool whpx_allowed;
bool whpx_allowed;
static bool whp_dispatch_initialized;
static HMODULE hWinHvPlatform, hWinHvEmulation;
static uint32_t max_vcpu_index;
@ -2688,11 +2688,6 @@ error:
return ret;
}
int whpx_enabled(void)
{
return whpx_allowed;
}
bool whpx_apic_in_platform(void) {
return whpx_global.apic_in_platform;
}

Loading…
Cancel
Save