whpx: move internal definitions to whpx-internal.h

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>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20201219090637.1700900-3-pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2020-12-19 04:06:37 -05:00
parent 9102c96821
commit 84f4ef17ae
3 changed files with 23 additions and 21 deletions

View File

@ -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 */

View File

@ -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);

View File

@ -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) \