Minor changes

This commit is contained in:
Satoshi Tanda
2020-03-05 07:21:03 -08:00
parent 3245a658a7
commit f6937071b3
4 changed files with 53 additions and 29 deletions

View File

@@ -849,7 +849,7 @@ HandleVmExit (
DumpGuestState();
DumpHostState();
DumpControl();
LOG_DEBUG("VM-exit reason (Full) = %x", vmExitReason.Flags);
LOG_DEBUG("VM-exit reason (Full) = %08x", vmExitReason.Flags);
MV_PANIC();
}
@@ -894,7 +894,7 @@ typedef struct _EXCEPTION_STACK
UINT64 ErrorCode;
UINT64 Rip;
UINT64 Cs;
UINT64 Rflags;
RFLAGS Rflags;
} EXCEPTION_STACK;
/*!
@@ -917,16 +917,38 @@ HandleHostException (
DumpHostState();
DumpControl();
LOG_ERROR("Exception or interrupt 0x%llx(0x%llx)", Stack->InterruptNumber, Stack->ErrorCode);
LOG_ERROR("RIP - %016llx, CS - %016llx, RFLAGS - %016llx", Stack->Rip, Stack->Cs, Stack->Rflags);
LOG_ERROR("RIP - %016llx, CS - %016llx, RFLAGS - %016llx", Stack->Rip, Stack->Cs, Stack->Rflags.Flags);
LOG_ERROR("RAX - %016llx, RCX - %016llx, RDX - %016llx", Stack->Rax, Stack->Rcx, Stack->Rdx);
LOG_ERROR("RBX - %016llx, RSP - %016llx, RBP - %016llx", Stack->Rbx, 0ull, Stack->Rbp);
LOG_ERROR("RSI - %016llx, RDI - %016llx", Stack->Rsi, Stack->Rdi);
LOG_ERROR("R8 - %016llx, R9 - %016llx, R10 - %016llx", Stack->R8, Stack->R9, Stack->R10);
LOG_ERROR("R11 - %016llx, R12 - %016llx, R13 - %016llx", Stack->R11, Stack->R12, Stack->R13);
LOG_ERROR("R14 - %016llx, R15 - %016llx", Stack->R14, Stack->R15);
LOG_ERROR("CR2 - %016llx", __readcr2());
MV_PANIC();
}
typedef struct _VMENTRY_FAILURE_STACK
{
UINT64 R15;
UINT64 R14;
UINT64 R13;
UINT64 R12;
UINT64 R11;
UINT64 R10;
UINT64 R9;
UINT64 R8;
UINT64 Rdi;
UINT64 Rsi;
UINT64 Rbp;
UINT64 Rbx;
UINT64 Rdx;
UINT64 Rcx;
UINT64 Rax;
RFLAGS Rflags;
} VMENTRY_FAILURE_STACK;
/*!
@brief Handles error occurred on attempt to exit to the guest.
@@ -935,20 +957,27 @@ HandleHostException (
*/
VOID
HandleVmExitFailure (
_In_ CONST INITIAL_HYPERVISOR_STACK* Stack
_In_ CONST VMENTRY_FAILURE_STACK* Stack
)
{
VMX_ERROR_NUMBER vmxErrorNumber;
VMX_VMEXIT_REASON vmExitReason;
UNREFERENCED_PARAMETER(Stack);
vmxErrorNumber = (VMX_ERROR_NUMBER)VmxRead(VMCS_VM_INSTRUCTION_ERROR);
vmExitReason.Flags = (UINT32)VmxRead(VMCS_EXIT_REASON);
if (Stack->Rflags.ZeroFlag != FALSE)
{
vmxErrorNumber = (VMX_ERROR_NUMBER)VmxRead(VMCS_VM_INSTRUCTION_ERROR);
}
else
{
vmxErrorNumber = 0;
}
DumpGuestState();
DumpHostState();
DumpControl();
LOG_ERROR("VM-exit reason (full) = %x, Error = %ul", vmExitReason.Flags, vmxErrorNumber);
LOG_ERROR("VM-exit reason (full) = %08x, Error = %u",
vmExitReason.Flags,
vmxErrorNumber);
MV_PANIC();
}