[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 26/34] Resolves WHPX breaking changes in SDK 17095
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 26/34] Resolves WHPX breaking changes in SDK 17095 |
Date: |
Tue, 6 Mar 2018 14:19:22 +0100 |
From: "Justin Terry (VM) via Qemu-devel" <address@hidden>
1. Fixes the changes required to the WHvTryMmioEmulation, WHvTryIoEmulation, and
WHvEmulatorCreateEmulator based on the new VpContext forwarding.
2. Removes the WHvRunVpExitReasonAlerted case.
Signed-off-by: Justin Terry (VM) <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Justin Terry (VM) via Qemu-devel <address@hidden>
---
target/i386/whpx-all.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/target/i386/whpx-all.c b/target/i386/whpx-all.c
index eeee43e..969c2f5 100644
--- a/target/i386/whpx-all.c
+++ b/target/i386/whpx-all.c
@@ -613,6 +613,7 @@ static HRESULT CALLBACK whpx_emu_translate_callback(
}
static const WHV_EMULATOR_CALLBACKS whpx_emu_callbacks = {
+ .Size = sizeof(WHV_EMULATOR_CALLBACKS),
.WHvEmulatorIoPortCallback = whpx_emu_ioport_callback,
.WHvEmulatorMemoryCallback = whpx_emu_memio_callback,
.WHvEmulatorGetVirtualProcessorRegisters = whpx_emu_getreg_callback,
@@ -626,7 +627,9 @@ static int whpx_handle_mmio(CPUState *cpu,
WHV_MEMORY_ACCESS_CONTEXT *ctx)
struct whpx_vcpu *vcpu = get_whpx_vcpu(cpu);
WHV_EMULATOR_STATUS emu_status;
- hr = WHvEmulatorTryMmioEmulation(vcpu->emulator, cpu, ctx, &emu_status);
+ hr = WHvEmulatorTryMmioEmulation(vcpu->emulator, cpu,
+ &vcpu->exit_ctx.VpContext, ctx,
+ &emu_status);
if (FAILED(hr)) {
__debugbreak();
error_report("WHPX: Failed to parse MMIO access, hr=%08lx", hr);
@@ -649,7 +652,9 @@ static int whpx_handle_portio(CPUState *cpu,
struct whpx_vcpu *vcpu = get_whpx_vcpu(cpu);
WHV_EMULATOR_STATUS emu_status;
- hr = WHvEmulatorTryIoEmulation(vcpu->emulator, cpu, ctx, &emu_status);
+ hr = WHvEmulatorTryIoEmulation(vcpu->emulator, cpu,
+ &vcpu->exit_ctx.VpContext, ctx,
+ &emu_status);
if (FAILED(hr)) {
__debugbreak();
error_report("WHPX: Failed to parse PortIO access, hr=%08lx", hr);
@@ -905,18 +910,8 @@ static int whpx_vcpu_run(CPUState *cpu)
whpx_vcpu_kick(cpu);
}
- for (;;) {
- hr = WHvRunVirtualProcessor(whpx->partition, cpu->cpu_index,
- &vcpu->exit_ctx, whpx->exit_ctx_size);
-
- if (SUCCEEDED(hr) && (vcpu->exit_ctx.ExitReason ==
- WHvRunVpExitReasonAlerted)) {
- WHvCancelRunVirtualProcessor(whpx->partition, cpu->cpu_index,
- 0);
- } else {
- break;
- }
- }
+ hr = WHvRunVirtualProcessor(whpx->partition, cpu->cpu_index,
+ &vcpu->exit_ctx, whpx->exit_ctx_size);
if (FAILED(hr)) {
error_report("WHPX: Failed to exec a virtual processor,"
@@ -956,7 +951,6 @@ static int whpx_vcpu_run(CPUState *cpu)
case WHvRunVpExitReasonX64MsrAccess:
case WHvRunVpExitReasonX64Cpuid:
case WHvRunVpExitReasonException:
- case WHvRunVpExitReasonAlerted:
default:
error_report("WHPX: Unexpected VP exit code %d",
vcpu->exit_ctx.ExitReason);
@@ -1068,7 +1062,7 @@ int whpx_init_vcpu(CPUState *cpu)
return -ENOMEM;
}
- hr = WHvEmulatorCreateEmulator(whpx_emu_callbacks, &vcpu->emulator);
+ hr = WHvEmulatorCreateEmulator(&whpx_emu_callbacks, &vcpu->emulator);
if (FAILED(hr)) {
error_report("WHPX: Failed to setup instruction completion support,"
" hr=%08lx", hr);
--
1.8.3.1
- [Qemu-devel] [PULL 22/34] checkpatch: add a warning for basename/dirname, (continued)
- [Qemu-devel] [PULL 22/34] checkpatch: add a warning for basename/dirname, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 18/34] address_space_read: address_space_to_flatview needs RCU lock, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 16/34] memory: inline some performance-sensitive accessors, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 20/34] address_space_map: address_space_to_flatview needs RCU lock, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 21/34] address_space_rw: address_space_to_flatview needs RCU lock, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 23/34] checkpatch: add check for `while` and `for`, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 24/34] Revert "build-sys: compile with -Og or -O1 when --enable-debug", Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 25/34] Fixing WHPX casing to match SDK, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 27/34] Remove unnecessary WHPX __debugbreak();, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 26/34] Resolves WHPX breaking changes in SDK 17095,
Paolo Bonzini <=
- [Qemu-devel] [PULL 29/34] Fix WHPX typo in 'mmio', Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 30/34] Fix WHPX issue leaking tpr values, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 34/34] use g_path_get_basename instead of basename, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 31/34] WHXP Removes the use of WHvGetExitContextSize, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 32/34] WHPX improve interrupt notification registration, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 33/34] balloon: Fix documentation of the --balloon parameter and deprecate it, Paolo Bonzini, 2018/03/06
- [Qemu-devel] [PULL 28/34] Fix WHPX additional lock acquisition, Paolo Bonzini, 2018/03/06
- Re: [Qemu-devel] [PULL 00/34] Misc patches for 2018-03-06, no-reply, 2018/03/06
- Re: [Qemu-devel] [PULL 00/34] Misc patches for 2018-03-06, Peter Maydell, 2018/03/06
- Re: [Qemu-devel] [PULL 00/34] Misc patches for 2018-03-06, Thomas Huth, 2018/03/07