Only leave the external interface in sysemu/whpx.h. whpx_apic_in_platform
is moved to a .c file because it needs whpx_state.
Reported-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/sysemu/whpx.h | 22 +---------------------
target/i386/whpx/whpx-all.c | 4 ++++
target/i386/whpx/whpx-internal.h | 18 ++++++++++++++++++
3 files changed, 23 insertions(+), 21 deletions(-)
diff --git a/include/sysemu/whpx.h b/include/sysemu/whpx.h
index 9346fd92e9..8ca1c1c4ac 100644
--- a/include/sysemu/whpx.h
+++ b/include/sysemu/whpx.h
@@ -15,28 +15,8 @@
#ifdef CONFIG_WHPX
-#include "whp-dispatch.h"
-
-struct whpx_state {
- uint64_t mem_quota;
- WHV_PARTITION_HANDLE partition;
- bool kernel_irqchip_allowed;
- bool kernel_irqchip_required;
- bool apic_in_platform;
-};
-
-struct whpx_lapic_state {
- struct {
- uint32_t data;
- uint32_t padding[3];
- } fields[256];
-};
-
-extern struct whpx_state whpx_global;
int whpx_enabled(void);
-
-void whpx_apic_get(DeviceState *s);
-#define whpx_apic_in_platform() (whpx_global.apic_in_platform)
+bool whpx_apic_in_platform(void);
#else /* CONFIG_WHPX */
diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
index 12f79e2cd6..985ceba8f8 100644
--- a/target/i386/whpx/whpx-all.c
+++ b/target/i386/whpx/whpx-all.c
@@ -1866,6 +1866,10 @@ int whpx_enabled(void)
return whpx_allowed;
}
+bool whpx_apic_in_platform(void) {
+ return whpx_global.apic_in_platform;
+}
+
static void whpx_accel_class_init(ObjectClass *oc, void *data)
{
AccelClass *ac = ACCEL_CLASS(oc);
diff --git a/target/i386/whpx/whpx-internal.h b/target/i386/whpx/whpx-internal.h
index e0a9ea1dce..8cfaaef141 100644
--- a/target/i386/whpx/whpx-internal.h
+++ b/target/i386/whpx/whpx-internal.h
@@ -5,6 +5,24 @@
#include <WinHvPlatform.h>
#include <WinHvEmulation.h>
+struct whpx_state {
+ uint64_t mem_quota;
+ WHV_PARTITION_HANDLE partition;
+ bool kernel_irqchip_allowed;
+ bool kernel_irqchip_required;
+ bool apic_in_platform;
+};
+
+struct whpx_lapic_state {
+ struct {
+ uint32_t data;
+ uint32_t padding[3];
+ } fields[256];
+};
+
+extern struct whpx_state whpx_global;
+void whpx_apic_get(DeviceState *s);
+
#define WHV_E_UNKNOWN_CAPABILITY 0x80370300L
#define LIST_WINHVPLATFORM_FUNCTIONS(X) \
--
2.26.2
On Sat, Dec 19, 2020 at 1:06 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
> Only leave the external interface in sysemu/whpx.h. whpx_apic_in_platform
> is moved to a .c file because it needs whpx_state.
>
> Reported-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
> include/sysemu/whpx.h | 22 +---------------------
> target/i386/whpx/whpx-all.c | 4 ++++
> target/i386/whpx/whpx-internal.h | 18 ++++++++++++++++++
> 3 files changed, 23 insertions(+), 21 deletions(-)
>
> diff --git a/include/sysemu/whpx.h b/include/sysemu/whpx.h
> index 9346fd92e9..8ca1c1c4ac 100644
> --- a/include/sysemu/whpx.h
> +++ b/include/sysemu/whpx.h
> @@ -15,28 +15,8 @@
>
> #ifdef CONFIG_WHPX
>
> -#include "whp-dispatch.h"
> -
> -struct whpx_state {
> - uint64_t mem_quota;
> - WHV_PARTITION_HANDLE partition;
> - bool kernel_irqchip_allowed;
> - bool kernel_irqchip_required;
> - bool apic_in_platform;
> -};
> -
> -struct whpx_lapic_state {
> - struct {
> - uint32_t data;
> - uint32_t padding[3];
> - } fields[256];
> -};
> -
> -extern struct whpx_state whpx_global;
> int whpx_enabled(void);
> -
> -void whpx_apic_get(DeviceState *s);
> -#define whpx_apic_in_platform() (whpx_global.apic_in_platform)
> +bool whpx_apic_in_platform(void);
>
> #else /* CONFIG_WHPX */
>
> diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
> index 12f79e2cd6..985ceba8f8 100644
> --- a/target/i386/whpx/whpx-all.c
> +++ b/target/i386/whpx/whpx-all.c
> @@ -1866,6 +1866,10 @@ int whpx_enabled(void)
> return whpx_allowed;
> }
>
> +bool whpx_apic_in_platform(void) {
> + return whpx_global.apic_in_platform;
> +}
> +
> static void whpx_accel_class_init(ObjectClass *oc, void *data)
> {
> AccelClass *ac = ACCEL_CLASS(oc);
> diff --git a/target/i386/whpx/whpx-internal.h
> b/target/i386/whpx/whpx-internal.h
> index e0a9ea1dce..8cfaaef141 100644
> --- a/target/i386/whpx/whpx-internal.h
> +++ b/target/i386/whpx/whpx-internal.h
> @@ -5,6 +5,24 @@
> #include <WinHvPlatform.h>
> #include <WinHvEmulation.h>
>
> +struct whpx_state {
> + uint64_t mem_quota;
> + WHV_PARTITION_HANDLE partition;
> + bool kernel_irqchip_allowed;
> + bool kernel_irqchip_required;
> + bool apic_in_platform;
> +};
> +
> +struct whpx_lapic_state {
> + struct {
> + uint32_t data;
> + uint32_t padding[3];
> + } fields[256];
> +};
> +
> +extern struct whpx_state whpx_global;
> +void whpx_apic_get(DeviceState *s);
> +
> #define WHV_E_UNKNOWN_CAPABILITY 0x80370300L
>
> #define LIST_WINHVPLATFORM_FUNCTIONS(X) \
> --
> 2.26.2
>
>
On 12/19/20 10:06 AM, Paolo Bonzini wrote: > Only leave the external interface in sysemu/whpx.h. whpx_apic_in_platform > is moved to a .c file because it needs whpx_state. > > Reported-by: Marc-André Lureau <marcandre.lureau@redhat.com> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/sysemu/whpx.h | 22 +--------------------- > target/i386/whpx/whpx-all.c | 4 ++++ > target/i386/whpx/whpx-internal.h | 18 ++++++++++++++++++ > 3 files changed, 23 insertions(+), 21 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
© 2016 - 2026 Red Hat, Inc.