@@ -23,21 +23,6 @@ int hax_sync_vcpus(void)
return 0;
}
-void hax_disable(int disable)
-{
- return;
-}
-
-int hax_pre_init(uint64_t ram_size)
-{
- return 0;
-}
-
-int hax_get_max_ram(uint64_t *max_ram)
-{
- return 0;
-}
-
int hax_populate_ram(uint64_t va, uint32_t size)
{
return -ENOSYS;
@@ -25,13 +25,9 @@
#include "config-host.h"
#include "qemu-common.h"
-int hax_pre_init(uint64_t ram_size);
int hax_sync_vcpus(void);
-void hax_disable(int disable);
int hax_init_vcpu(CPUState *cpu);
int hax_smp_cpu_exec(CPUState *cpu);
-/* get the max haxm ram even before haxm library is initialized */
-int hax_get_max_ram(uint64_t *max_ram);
int hax_populate_ram(uint64_t va, uint32_t size);
void hax_cpu_synchronize_state(CPUState *cpu);
@@ -36,6 +36,7 @@
#include "exec/address-spaces.h"
#include "qemu/main-loop.h"
#include "hax-slot.h"
+#include "hw/boards.h"
static const char kHaxVcpuSyncFailed[] = "Failed to sync HAX vcpu context";
#define derror(msg) do { fprintf(stderr, (msg)); } while (0)
@@ -66,7 +67,7 @@ const uint32_t hax_min_version = 0x3;
#define HAX_EMULATE_STATE_NONE 0x3
#define HAX_EMULATE_STATE_INITIAL 0x4
-bool hax_allowed;
+static bool hax_allowed;
static void hax_vcpu_sync_state(CPUArchState *env, int modified);
static int hax_arch_get_registers(CPUArchState *env);
@@ -75,20 +76,11 @@ static int hax_handle_io(CPUArchState *env, uint32_t df, uint16_t port,
static int hax_handle_fastmmio(CPUArchState *env, struct hax_fastmmio *hft);
struct hax_state hax_global;
-int ret_hax_init;
-static int hax_disabled = 1;
-
-int hax_support = -1;
/* Called after hax_init */
int hax_enabled(void)
{
- return !hax_disabled && hax_support;
-}
-
-void hax_disable(int disable)
-{
- hax_disabled = disable;
+ return hax_allowed;
}
static int hax_prepare_emulation(CPUArchState *env)
@@ -456,32 +448,17 @@ static void hax_handle_interrupt(CPUState *cpu, int mask)
}
}
-int hax_pre_init(uint64_t ram_size)
-{
- struct hax_state *hax = NULL;
-
- fprintf(stdout, "Hax is %s\n", hax_disabled ? "disabled" : "enabled");
- if (hax_disabled) {
- return 0;
- }
- hax = &hax_global;
- memset(hax, 0, sizeof(struct hax_state));
- hax->mem_quota = ram_size;
- fprintf(stdout, "Hax ram_size 0x%llx\n", ram_size);
-
- return 0;
-}
-
-static int hax_init(void)
+static int hax_init(ram_addr_t ram_size)
{
struct hax_state *hax = NULL;
struct hax_qemu_version qversion;
int ret;
- hax_support = 0;
-
hax = &hax_global;
+ memset(hax, 0, sizeof(struct hax_state));
+ hax->mem_quota = ram_size;
+
hax->fd = hax_mod_open();
if (hax_invalid_fd(hax->fd)) {
hax->fd = 0;
@@ -519,7 +496,6 @@ static int hax_init(void)
qversion.min_version = hax_min_version;
hax_notify_qemu_version(hax->vm->fd, &qversion);
cpu_interrupt_handler = hax_handle_interrupt;
- hax_support = 1;
return ret;
error:
@@ -535,17 +511,16 @@ static int hax_init(void)
static int hax_accel_init(MachineState *ms)
{
- ret_hax_init = hax_init();
+ int ret = hax_init(ms->ram_size);
- if (ret_hax_init && (ret_hax_init != -ENOSPC)) {
+ if (ret && (ret != -ENOSPC)) {
fprintf(stderr, "No accelerator found.\n");
- return ret_hax_init;
} else {
fprintf(stdout, "HAX is %s and emulator runs in %s mode.\n",
- !ret_hax_init ? "working" : "not working",
- !ret_hax_init ? "fast virt" : "emulation");
- return 0;
+ !ret ? "working" : "not working",
+ !ret ? "fast virt" : "emulation");
}
+ return ret;
}
static int hax_handle_fastmmio(CPUArchState *env, struct hax_fastmmio *hft)
@@ -54,26 +54,6 @@ static int hax_open_device(hax_fd *fd)
return 0;
}
-int hax_get_max_ram(uint64_t *max_ram)
-{
- DWORD dSize = 0;
- struct hax_capabilityinfo cap;
- hax_fd fd = hax_mod_open();
- if (fd == NULL) {
- return -1;
- }
- int result = DeviceIoControl(fd, HAX_IOCTL_CAPABILITY, NULL, 0, &cap,
- sizeof(cap), &dSize, (LPOVERLAPPED) NULL);
- CloseHandle(fd);
-
- if (!result) {
- return -2;
- }
- *max_ram = cap.mem_quota;
-
- return 0;
-}
-
/* hax_fd hax_mod_open */
hax_fd hax_mod_open(void)
{
remove the leftovers from the Android specific code, and use the AccelClass allowed field as expected. then we can simplify the remaining logic and remove the hax_pre_init callback. Signed-off-by: Vincent Palatin <vpalatin@chromium.org> --- hax-stub.c | 15 --------------- include/sysemu/hax.h | 4 ---- target-i386/hax-all.c | 49 ++++++++++++----------------------------------- target-i386/hax-windows.c | 20 ------------------- 4 files changed, 12 insertions(+), 76 deletions(-)