diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2016-05-23 02:43:31 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-05-24 06:11:08 -0400 |
commit | 079d08555cd116e3e04cb588aad1fd6f08b2a31b (patch) | |
tree | ea12a173b11c6463cf08658fb02f797f28211c5d | |
parent | cfc5abbcd043752c426740e61700010abfcc71e1 (diff) |
KVM: SVM: Add more SVM_EXIT_REASONS
Useful when tracing nested setups where the guest may trigger more than
the host usually does. But even some typical host exits were missing.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | arch/x86/include/uapi/asm/svm.h | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/arch/x86/include/uapi/asm/svm.h b/arch/x86/include/uapi/asm/svm.h index b9e9bb2c6089..3725e145aa58 100644 --- a/arch/x86/include/uapi/asm/svm.h +++ b/arch/x86/include/uapi/asm/svm.h | |||
@@ -2,10 +2,12 @@ | |||
2 | #define _UAPI__SVM_H | 2 | #define _UAPI__SVM_H |
3 | 3 | ||
4 | #define SVM_EXIT_READ_CR0 0x000 | 4 | #define SVM_EXIT_READ_CR0 0x000 |
5 | #define SVM_EXIT_READ_CR2 0x002 | ||
5 | #define SVM_EXIT_READ_CR3 0x003 | 6 | #define SVM_EXIT_READ_CR3 0x003 |
6 | #define SVM_EXIT_READ_CR4 0x004 | 7 | #define SVM_EXIT_READ_CR4 0x004 |
7 | #define SVM_EXIT_READ_CR8 0x008 | 8 | #define SVM_EXIT_READ_CR8 0x008 |
8 | #define SVM_EXIT_WRITE_CR0 0x010 | 9 | #define SVM_EXIT_WRITE_CR0 0x010 |
10 | #define SVM_EXIT_WRITE_CR2 0x012 | ||
9 | #define SVM_EXIT_WRITE_CR3 0x013 | 11 | #define SVM_EXIT_WRITE_CR3 0x013 |
10 | #define SVM_EXIT_WRITE_CR4 0x014 | 12 | #define SVM_EXIT_WRITE_CR4 0x014 |
11 | #define SVM_EXIT_WRITE_CR8 0x018 | 13 | #define SVM_EXIT_WRITE_CR8 0x018 |
@@ -80,10 +82,12 @@ | |||
80 | 82 | ||
81 | #define SVM_EXIT_REASONS \ | 83 | #define SVM_EXIT_REASONS \ |
82 | { SVM_EXIT_READ_CR0, "read_cr0" }, \ | 84 | { SVM_EXIT_READ_CR0, "read_cr0" }, \ |
85 | { SVM_EXIT_READ_CR2, "read_cr2" }, \ | ||
83 | { SVM_EXIT_READ_CR3, "read_cr3" }, \ | 86 | { SVM_EXIT_READ_CR3, "read_cr3" }, \ |
84 | { SVM_EXIT_READ_CR4, "read_cr4" }, \ | 87 | { SVM_EXIT_READ_CR4, "read_cr4" }, \ |
85 | { SVM_EXIT_READ_CR8, "read_cr8" }, \ | 88 | { SVM_EXIT_READ_CR8, "read_cr8" }, \ |
86 | { SVM_EXIT_WRITE_CR0, "write_cr0" }, \ | 89 | { SVM_EXIT_WRITE_CR0, "write_cr0" }, \ |
90 | { SVM_EXIT_WRITE_CR2, "write_cr2" }, \ | ||
87 | { SVM_EXIT_WRITE_CR3, "write_cr3" }, \ | 91 | { SVM_EXIT_WRITE_CR3, "write_cr3" }, \ |
88 | { SVM_EXIT_WRITE_CR4, "write_cr4" }, \ | 92 | { SVM_EXIT_WRITE_CR4, "write_cr4" }, \ |
89 | { SVM_EXIT_WRITE_CR8, "write_cr8" }, \ | 93 | { SVM_EXIT_WRITE_CR8, "write_cr8" }, \ |
@@ -91,26 +95,57 @@ | |||
91 | { SVM_EXIT_READ_DR1, "read_dr1" }, \ | 95 | { SVM_EXIT_READ_DR1, "read_dr1" }, \ |
92 | { SVM_EXIT_READ_DR2, "read_dr2" }, \ | 96 | { SVM_EXIT_READ_DR2, "read_dr2" }, \ |
93 | { SVM_EXIT_READ_DR3, "read_dr3" }, \ | 97 | { SVM_EXIT_READ_DR3, "read_dr3" }, \ |
98 | { SVM_EXIT_READ_DR4, "read_dr4" }, \ | ||
99 | { SVM_EXIT_READ_DR5, "read_dr5" }, \ | ||
100 | { SVM_EXIT_READ_DR6, "read_dr6" }, \ | ||
101 | { SVM_EXIT_READ_DR7, "read_dr7" }, \ | ||
94 | { SVM_EXIT_WRITE_DR0, "write_dr0" }, \ | 102 | { SVM_EXIT_WRITE_DR0, "write_dr0" }, \ |
95 | { SVM_EXIT_WRITE_DR1, "write_dr1" }, \ | 103 | { SVM_EXIT_WRITE_DR1, "write_dr1" }, \ |
96 | { SVM_EXIT_WRITE_DR2, "write_dr2" }, \ | 104 | { SVM_EXIT_WRITE_DR2, "write_dr2" }, \ |
97 | { SVM_EXIT_WRITE_DR3, "write_dr3" }, \ | 105 | { SVM_EXIT_WRITE_DR3, "write_dr3" }, \ |
106 | { SVM_EXIT_WRITE_DR4, "write_dr4" }, \ | ||
98 | { SVM_EXIT_WRITE_DR5, "write_dr5" }, \ | 107 | { SVM_EXIT_WRITE_DR5, "write_dr5" }, \ |
108 | { SVM_EXIT_WRITE_DR6, "write_dr6" }, \ | ||
99 | { SVM_EXIT_WRITE_DR7, "write_dr7" }, \ | 109 | { SVM_EXIT_WRITE_DR7, "write_dr7" }, \ |
110 | { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, \ | ||
100 | { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, \ | 111 | { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, \ |
101 | { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, \ | 112 | { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, \ |
113 | { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, \ | ||
114 | { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, \ | ||
102 | { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, \ | 115 | { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, \ |
103 | { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, \ | ||
104 | { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, \ | 116 | { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, \ |
117 | { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, \ | ||
118 | { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, \ | ||
119 | { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, \ | ||
120 | { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, \ | ||
121 | { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, \ | ||
122 | { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, \ | ||
123 | { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, \ | ||
105 | { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, \ | 124 | { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, \ |
106 | { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, \ | 125 | { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, \ |
126 | { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, \ | ||
107 | { SVM_EXIT_INTR, "interrupt" }, \ | 127 | { SVM_EXIT_INTR, "interrupt" }, \ |
108 | { SVM_EXIT_NMI, "nmi" }, \ | 128 | { SVM_EXIT_NMI, "nmi" }, \ |
109 | { SVM_EXIT_SMI, "smi" }, \ | 129 | { SVM_EXIT_SMI, "smi" }, \ |
110 | { SVM_EXIT_INIT, "init" }, \ | 130 | { SVM_EXIT_INIT, "init" }, \ |
111 | { SVM_EXIT_VINTR, "vintr" }, \ | 131 | { SVM_EXIT_VINTR, "vintr" }, \ |
112 | { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, \ | 132 | { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, \ |
133 | { SVM_EXIT_IDTR_READ, "read_idtr" }, \ | ||
134 | { SVM_EXIT_GDTR_READ, "read_gdtr" }, \ | ||
135 | { SVM_EXIT_LDTR_READ, "read_ldtr" }, \ | ||
136 | { SVM_EXIT_TR_READ, "read_rt" }, \ | ||
137 | { SVM_EXIT_IDTR_WRITE, "write_idtr" }, \ | ||
138 | { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, \ | ||
139 | { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, \ | ||
140 | { SVM_EXIT_TR_WRITE, "write_rt" }, \ | ||
141 | { SVM_EXIT_RDTSC, "rdtsc" }, \ | ||
142 | { SVM_EXIT_RDPMC, "rdpmc" }, \ | ||
143 | { SVM_EXIT_PUSHF, "pushf" }, \ | ||
144 | { SVM_EXIT_POPF, "popf" }, \ | ||
113 | { SVM_EXIT_CPUID, "cpuid" }, \ | 145 | { SVM_EXIT_CPUID, "cpuid" }, \ |
146 | { SVM_EXIT_RSM, "rsm" }, \ | ||
147 | { SVM_EXIT_IRET, "iret" }, \ | ||
148 | { SVM_EXIT_SWINT, "swint" }, \ | ||
114 | { SVM_EXIT_INVD, "invd" }, \ | 149 | { SVM_EXIT_INVD, "invd" }, \ |
115 | { SVM_EXIT_PAUSE, "pause" }, \ | 150 | { SVM_EXIT_PAUSE, "pause" }, \ |
116 | { SVM_EXIT_HLT, "hlt" }, \ | 151 | { SVM_EXIT_HLT, "hlt" }, \ |
@@ -119,6 +154,7 @@ | |||
119 | { SVM_EXIT_IOIO, "io" }, \ | 154 | { SVM_EXIT_IOIO, "io" }, \ |
120 | { SVM_EXIT_MSR, "msr" }, \ | 155 | { SVM_EXIT_MSR, "msr" }, \ |
121 | { SVM_EXIT_TASK_SWITCH, "task_switch" }, \ | 156 | { SVM_EXIT_TASK_SWITCH, "task_switch" }, \ |
157 | { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, \ | ||
122 | { SVM_EXIT_SHUTDOWN, "shutdown" }, \ | 158 | { SVM_EXIT_SHUTDOWN, "shutdown" }, \ |
123 | { SVM_EXIT_VMRUN, "vmrun" }, \ | 159 | { SVM_EXIT_VMRUN, "vmrun" }, \ |
124 | { SVM_EXIT_VMMCALL, "hypercall" }, \ | 160 | { SVM_EXIT_VMMCALL, "hypercall" }, \ |
@@ -127,14 +163,16 @@ | |||
127 | { SVM_EXIT_STGI, "stgi" }, \ | 163 | { SVM_EXIT_STGI, "stgi" }, \ |
128 | { SVM_EXIT_CLGI, "clgi" }, \ | 164 | { SVM_EXIT_CLGI, "clgi" }, \ |
129 | { SVM_EXIT_SKINIT, "skinit" }, \ | 165 | { SVM_EXIT_SKINIT, "skinit" }, \ |
166 | { SVM_EXIT_RDTSCP, "rdtscp" }, \ | ||
167 | { SVM_EXIT_ICEBP, "icebp" }, \ | ||
130 | { SVM_EXIT_WBINVD, "wbinvd" }, \ | 168 | { SVM_EXIT_WBINVD, "wbinvd" }, \ |
131 | { SVM_EXIT_MONITOR, "monitor" }, \ | 169 | { SVM_EXIT_MONITOR, "monitor" }, \ |
132 | { SVM_EXIT_MWAIT, "mwait" }, \ | 170 | { SVM_EXIT_MWAIT, "mwait" }, \ |
133 | { SVM_EXIT_XSETBV, "xsetbv" }, \ | 171 | { SVM_EXIT_XSETBV, "xsetbv" }, \ |
134 | { SVM_EXIT_NPF, "npf" }, \ | 172 | { SVM_EXIT_NPF, "npf" }, \ |
135 | { SVM_EXIT_RSM, "rsm" }, \ | ||
136 | { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, \ | 173 | { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, \ |
137 | { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" } | 174 | { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, \ |
175 | { SVM_EXIT_ERR, "invalid_guest_state" } | ||
138 | 176 | ||
139 | 177 | ||
140 | #endif /* _UAPI__SVM_H */ | 178 | #endif /* _UAPI__SVM_H */ |