File xen.xenalyze-EXIT_REASONS.patch of Package xen
From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 1 Jun 2023 12:15:43 +0000
Subject: xenalyze EXIT_REASONS
xenalyze: handle more potential exit reason values from vmx.h
Copy and use more constants from vmx.h, to turn numbers into strings.
Adjust the REASON_MAX value accordingly.
Remove the size constraint from string array, the compiler will grow it
as needed.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
tools/xentrace/xenalyze.c | 28 +++++++--
1 file changed, 24 insertions(+), 4 deletions(-)
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -473,38 +473,47 @@ struct {
#define EXIT_REASON_IO_INSTRUCTION 30
#define EXIT_REASON_MSR_READ 31
#define EXIT_REASON_MSR_WRITE 32
#define EXIT_REASON_INVALID_GUEST_STATE 33
#define EXIT_REASON_MSR_LOADING 34
#define EXIT_REASON_MWAIT_INSTRUCTION 36
#define EXIT_REASON_MONITOR_TRAP_FLAG 37
#define EXIT_REASON_MONITOR_INSTRUCTION 39
#define EXIT_REASON_PAUSE_INSTRUCTION 40
#define EXIT_REASON_MCE_DURING_VMENTRY 41
#define EXIT_REASON_TPR_BELOW_THRESHOLD 43
#define EXIT_REASON_APIC_ACCESS 44
+#define EXIT_REASON_EOI_INDUCED 45
#define EXIT_REASON_ACCESS_GDTR_OR_IDTR 46
#define EXIT_REASON_ACCESS_LDTR_OR_TR 47
#define EXIT_REASON_EPT_VIOLATION 48
#define EXIT_REASON_EPT_MISCONFIG 49
#define EXIT_REASON_INVEPT 50
#define EXIT_REASON_RDTSCP 51
#define EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED 52
#define EXIT_REASON_INVVPID 53
#define EXIT_REASON_WBINVD 54
#define EXIT_REASON_XSETBV 55
-
-#define HVM_VMX_EXIT_REASON_MAX (EXIT_REASON_XSETBV+1)
-
-const char * hvm_vmx_exit_reason_name[HVM_VMX_EXIT_REASON_MAX] = {
+#define EXIT_REASON_APIC_WRITE 56
+#define EXIT_REASON_INVPCID 58
+#define EXIT_REASON_VMFUNC 59
+#define EXIT_REASON_PML_FULL 62
+#define EXIT_REASON_XSAVES 63
+#define EXIT_REASON_XRSTORS 64
+#define EXIT_REASON_BUS_LOCK 74
+#define EXIT_REASON_NOTIFY 75
+
+#define HVM_VMX_EXIT_REASON_MAX (EXIT_REASON_NOTIFY+1)
+
+const char * hvm_vmx_exit_reason_name[] = {
[EXIT_REASON_EXCEPTION_NMI]="EXCEPTION_NMI",
[EXIT_REASON_EXTERNAL_INTERRUPT]="EXTERNAL_INTERRUPT",
[EXIT_REASON_TRIPLE_FAULT]="TRIPLE_FAULT",
[EXIT_REASON_INIT]="INIT",
[EXIT_REASON_SIPI]="SIPI",
[EXIT_REASON_IO_SMI]="IO_SMI",
[EXIT_REASON_OTHER_SMI]="OTHER_SMI",
[EXIT_REASON_PENDING_VIRT_INTR]="PENDING_VIRT_INTR",
[EXIT_REASON_PENDING_VIRT_NMI]="PENDING_VIRT_NMI",
[EXIT_REASON_TASK_SWITCH]="TASK_SWITCH",
[EXIT_REASON_CPUID]="CPUID",
[EXIT_REASON_GETSEC]="GETSEC",
@@ -529,32 +538,43 @@ const char * hvm_vmx_exit_reason_name[HVM_VMX_EXIT_REASON_MAX] = {
[EXIT_REASON_IO_INSTRUCTION]="IO_INSTRUCTION",
[EXIT_REASON_MSR_READ]="MSR_READ",
[EXIT_REASON_MSR_WRITE]="MSR_WRITE",
[EXIT_REASON_INVALID_GUEST_STATE]="INVALID_GUEST_STATE",
[EXIT_REASON_MSR_LOADING]="MSR_LOADING",
[EXIT_REASON_MWAIT_INSTRUCTION]="MWAIT_INSTRUCTION",
[EXIT_REASON_MONITOR_TRAP_FLAG]="MONITOR_TRAP_FLAG",
[EXIT_REASON_MONITOR_INSTRUCTION]="MONITOR_INSTRUCTION",
[EXIT_REASON_PAUSE_INSTRUCTION]="PAUSE_INSTRUCTION",
[EXIT_REASON_MCE_DURING_VMENTRY]="MCE_DURING_VMENTRY",
[EXIT_REASON_TPR_BELOW_THRESHOLD]="TPR_BELOW_THRESHOLD",
[EXIT_REASON_APIC_ACCESS]="APIC_ACCESS",
+ [EXIT_REASON_EOI_INDUCED]="EOI_INDUCED",
+ [EXIT_REASON_ACCESS_GDTR_OR_IDTR]="ACCESS_GDTR_OR_IDTR",
+ [EXIT_REASON_ACCESS_LDTR_OR_TR]="ACCESS_LDTR_OR_TR",
[EXIT_REASON_EPT_VIOLATION]="EPT_VIOLATION",
[EXIT_REASON_EPT_MISCONFIG]="EPT_MISCONFIG",
[EXIT_REASON_INVEPT]="INVEPT",
[EXIT_REASON_RDTSCP]="RDTSCP",
[EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED]="VMX_PREEMPTION_TIMER_EXPIRED",
[EXIT_REASON_INVVPID]="INVVPID",
[EXIT_REASON_WBINVD]="WBINVD",
[EXIT_REASON_XSETBV]="XSETBV",
+ [EXIT_REASON_APIC_WRITE]="APIC_WRITE",
+ [EXIT_REASON_INVPCID]="INVPCID",
+ [EXIT_REASON_VMFUNC]="VMFUNC",
+ [EXIT_REASON_PML_FULL]="PML_FULL",
+ [EXIT_REASON_XSAVES]="XSAVES",
+ [EXIT_REASON_XRSTORS]="XRSTORS",
+ [EXIT_REASON_BUS_LOCK]="BUS_LOCK",
+ [EXIT_REASON_NOTIFY]="NOTIFY",
};
/* SVM data */
enum VMEXIT_EXITCODE
{
/* control register read exitcodes */
VMEXIT_CR0_READ = 0,
VMEXIT_CR1_READ = 1,
VMEXIT_CR2_READ = 2,
VMEXIT_CR3_READ = 3,
VMEXIT_CR4_READ = 4,
VMEXIT_CR5_READ = 5,