Changeset 61427 in vbox
- Timestamp:
- Jun 3, 2016 8:25:52 AM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 107744
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/HM.cpp
r61415 r61427 71 71 * Global Variables * 72 72 *********************************************************************************************************************************/ 73 # 74 # 73 #define EXIT_REASON(def, val, str) #def " - " #val " - " str 74 #define EXIT_REASON_NIL() NULL 75 75 /** Exit reason descriptions for VT-x, used to describe statistics. */ 76 76 static const char * const g_apszVTxExitReasons[MAX_EXITREASON_STAT] = … … 145 145 * 146 146 * @note AMD-V have annoyingly large gaps (e.g. \#NPF VMEXIT comes at 1024), 147 * this array doesn't contain the entire set of exit reasons. */ 147 * this array doesn't contain the entire set of exit reasons, we 148 * handle them via hmSvmGetSpecialExitReasonDesc(). */ 148 149 static const char * const g_apszAmdVExitReasons[MAX_EXITREASON_STAT] = 149 150 { 150 EXIT_REASON(SVM_EXIT_READ_CR0 151 EXIT_REASON(SVM_EXIT_READ_CR1 152 EXIT_REASON(SVM_EXIT_READ_CR2 153 EXIT_REASON(SVM_EXIT_READ_CR3 154 EXIT_REASON(SVM_EXIT_READ_CR4 155 EXIT_REASON(SVM_EXIT_READ_CR5 156 EXIT_REASON(SVM_EXIT_READ_CR6 157 EXIT_REASON(SVM_EXIT_READ_CR7 158 EXIT_REASON(SVM_EXIT_READ_CR8 159 EXIT_REASON(SVM_EXIT_READ_CR9 160 EXIT_REASON(SVM_EXIT_READ_CR10 161 EXIT_REASON(SVM_EXIT_READ_CR11 162 EXIT_REASON(SVM_EXIT_READ_CR12 163 EXIT_REASON(SVM_EXIT_READ_CR13 164 EXIT_REASON(SVM_EXIT_READ_CR14 165 EXIT_REASON(SVM_EXIT_READ_CR15 166 EXIT_REASON(SVM_EXIT_WRITE_CR0 167 EXIT_REASON(SVM_EXIT_WRITE_CR1 168 EXIT_REASON(SVM_EXIT_WRITE_CR2 169 EXIT_REASON(SVM_EXIT_WRITE_CR3 170 EXIT_REASON(SVM_EXIT_WRITE_CR4 171 EXIT_REASON(SVM_EXIT_WRITE_CR5 172 EXIT_REASON(SVM_EXIT_WRITE_CR6 173 EXIT_REASON(SVM_EXIT_WRITE_CR7 174 EXIT_REASON(SVM_EXIT_WRITE_CR8 175 EXIT_REASON(SVM_EXIT_WRITE_CR9 176 EXIT_REASON(SVM_EXIT_WRITE_CR10 177 EXIT_REASON(SVM_EXIT_WRITE_CR11 178 EXIT_REASON(SVM_EXIT_WRITE_CR12 179 EXIT_REASON(SVM_EXIT_WRITE_CR13 180 EXIT_REASON(SVM_EXIT_WRITE_CR14 181 EXIT_REASON(SVM_EXIT_WRITE_CR15 182 EXIT_REASON(SVM_EXIT_READ_DR0 183 EXIT_REASON(SVM_EXIT_READ_DR1 184 EXIT_REASON(SVM_EXIT_READ_DR2 185 EXIT_REASON(SVM_EXIT_READ_DR3 186 EXIT_REASON(SVM_EXIT_READ_DR4 187 EXIT_REASON(SVM_EXIT_READ_DR5 188 EXIT_REASON(SVM_EXIT_READ_DR6 189 EXIT_REASON(SVM_EXIT_READ_DR7 190 EXIT_REASON(SVM_EXIT_READ_DR8 191 EXIT_REASON(SVM_EXIT_READ_DR9 192 EXIT_REASON(SVM_EXIT_READ_DR10 193 EXIT_REASON(SVM_EXIT_READ_DR11 194 EXIT_REASON(SVM_EXIT_READ_DR12 195 EXIT_REASON(SVM_EXIT_READ_DR13 196 EXIT_REASON(SVM_EXIT_READ_DR14 197 EXIT_REASON(SVM_EXIT_READ_DR15 198 EXIT_REASON(SVM_EXIT_WRITE_DR0 199 EXIT_REASON(SVM_EXIT_WRITE_DR1 200 EXIT_REASON(SVM_EXIT_WRITE_DR2 201 EXIT_REASON(SVM_EXIT_WRITE_DR3 202 EXIT_REASON(SVM_EXIT_WRITE_DR4 203 EXIT_REASON(SVM_EXIT_WRITE_DR5 204 EXIT_REASON(SVM_EXIT_WRITE_DR6 205 EXIT_REASON(SVM_EXIT_WRITE_DR7 206 EXIT_REASON(SVM_EXIT_WRITE_DR8 207 EXIT_REASON(SVM_EXIT_WRITE_DR9 208 EXIT_REASON(SVM_EXIT_WRITE_DR10 209 EXIT_REASON(SVM_EXIT_WRITE_DR11 210 EXIT_REASON(SVM_EXIT_WRITE_DR12 211 EXIT_REASON(SVM_EXIT_WRITE_DR13 212 EXIT_REASON(SVM_EXIT_WRITE_DR14 213 EXIT_REASON(SVM_EXIT_WRITE_DR15 214 EXIT_REASON(SVM_EXIT_EXCEPTION_0 215 EXIT_REASON(SVM_EXIT_EXCEPTION_1 216 EXIT_REASON(SVM_EXIT_EXCEPTION_2 217 EXIT_REASON(SVM_EXIT_EXCEPTION_3 218 EXIT_REASON(SVM_EXIT_EXCEPTION_4 219 EXIT_REASON(SVM_EXIT_EXCEPTION_5 220 EXIT_REASON(SVM_EXIT_EXCEPTION_6 221 EXIT_REASON(SVM_EXIT_EXCEPTION_7 222 EXIT_REASON(SVM_EXIT_EXCEPTION_8 223 EXIT_REASON(SVM_EXIT_EXCEPTION_9 224 EXIT_REASON(SVM_EXIT_EXCEPTION_A 225 EXIT_REASON(SVM_EXIT_EXCEPTION_B 226 EXIT_REASON(SVM_EXIT_EXCEPTION_C 227 EXIT_REASON(SVM_EXIT_EXCEPTION_D 228 EXIT_REASON(SVM_EXIT_EXCEPTION_E 229 EXIT_REASON(SVM_EXIT_EXCEPTION_F 230 EXIT_REASON(SVM_EXIT_EXCEPTION_10 231 EXIT_REASON(SVM_EXIT_EXCEPTION_11 232 EXIT_REASON(SVM_EXIT_EXCEPTION_12 233 EXIT_REASON(SVM_EXIT_EXCEPTION_13 234 EXIT_REASON(SVM_EXIT_EXCEPTION_14 235 EXIT_REASON(SVM_EXIT_EXCEPTION_15 236 EXIT_REASON(SVM_EXIT_EXCEPTION_16 237 EXIT_REASON(SVM_EXIT_EXCEPTION_17 238 EXIT_REASON(SVM_EXIT_EXCEPTION_18 239 EXIT_REASON(SVM_EXIT_EXCEPTION_19 240 EXIT_REASON(SVM_EXIT_EXCEPTION_1A 241 EXIT_REASON(SVM_EXIT_EXCEPTION_1B 242 EXIT_REASON(SVM_EXIT_EXCEPTION_1C 243 EXIT_REASON(SVM_EXIT_EXCEPTION_1D 244 EXIT_REASON(SVM_EXIT_EXCEPTION_1E 245 EXIT_REASON(SVM_EXIT_EXCEPTION_1F 246 EXIT_REASON(SVM_EXIT_INTR 247 EXIT_REASON(SVM_EXIT_NMI 248 EXIT_REASON(SVM_EXIT_SMI 249 EXIT_REASON(SVM_EXIT_INIT 250 EXIT_REASON(SVM_EXIT_VINTR 251 EXIT_REASON(SVM_EXIT_CR0_SEL_WRITE 252 EXIT_REASON(SVM_EXIT_IDTR_READ 253 EXIT_REASON(SVM_EXIT_GDTR_READ 254 EXIT_REASON(SVM_EXIT_LDTR_READ 255 EXIT_REASON(SVM_EXIT_TR_READ 256 EXIT_REASON(SVM_EXIT_IDTR_WRITE 257 EXIT_REASON(SVM_EXIT_GDTR_WRITE 258 EXIT_REASON(SVM_EXIT_LDTR_WRITE 259 EXIT_REASON(SVM_EXIT_TR_WRITE 260 EXIT_REASON(SVM_EXIT_RDTSC 261 EXIT_REASON(SVM_EXIT_RDPMC 262 EXIT_REASON(SVM_EXIT_PUSHF 263 EXIT_REASON(SVM_EXIT_POPF 264 EXIT_REASON(SVM_EXIT_CPUID 265 EXIT_REASON(SVM_EXIT_RSM 266 EXIT_REASON(SVM_EXIT_IRET 267 EXIT_REASON(SVM_EXIT_SWINT 268 EXIT_REASON(SVM_EXIT_INVD 269 EXIT_REASON(SVM_EXIT_PAUSE 270 EXIT_REASON(SVM_EXIT_HLT 271 EXIT_REASON(SVM_EXIT_INVLPG 272 EXIT_REASON(SVM_EXIT_INVLPGA 273 EXIT_REASON(SVM_EXIT_IOIO 274 EXIT_REASON(SVM_EXIT_MSR 275 EXIT_REASON(SVM_EXIT_TASK_SWITCH 276 EXIT_REASON(SVM_EXIT_FERR_FREEZE 277 EXIT_REASON(SVM_EXIT_SHUTDOWN 278 EXIT_REASON(SVM_EXIT_VMRUN 279 EXIT_REASON(SVM_EXIT_VMMCALL 280 EXIT_REASON(SVM_EXIT_VMLOAD 281 EXIT_REASON(SVM_EXIT_VMSAVE 282 EXIT_REASON(SVM_EXIT_STGI 283 EXIT_REASON(SVM_EXIT_CLGI 284 EXIT_REASON(SVM_EXIT_SKINIT 285 EXIT_REASON(SVM_EXIT_RDTSCP 286 EXIT_REASON(SVM_EXIT_ICEBP 287 EXIT_REASON(SVM_EXIT_WBINVD 288 EXIT_REASON(SVM_EXIT_MONITOR 289 EXIT_REASON(SVM_EXIT_MWAIT 290 EXIT_REASON(SVM_EXIT_MWAIT_ARMED 291 EXIT_REASON(SVM_EXIT_XSETBV 151 EXIT_REASON(SVM_EXIT_READ_CR0 , 0, "Read CR0."), 152 EXIT_REASON(SVM_EXIT_READ_CR1 , 1, "Read CR1."), 153 EXIT_REASON(SVM_EXIT_READ_CR2 , 2, "Read CR2."), 154 EXIT_REASON(SVM_EXIT_READ_CR3 , 3, "Read CR3."), 155 EXIT_REASON(SVM_EXIT_READ_CR4 , 4, "Read CR4."), 156 EXIT_REASON(SVM_EXIT_READ_CR5 , 5, "Read CR5."), 157 EXIT_REASON(SVM_EXIT_READ_CR6 , 6, "Read CR6."), 158 EXIT_REASON(SVM_EXIT_READ_CR7 , 7, "Read CR7."), 159 EXIT_REASON(SVM_EXIT_READ_CR8 , 8, "Read CR8."), 160 EXIT_REASON(SVM_EXIT_READ_CR9 , 9, "Read CR9."), 161 EXIT_REASON(SVM_EXIT_READ_CR10 , 10, "Read CR10."), 162 EXIT_REASON(SVM_EXIT_READ_CR11 , 11, "Read CR11."), 163 EXIT_REASON(SVM_EXIT_READ_CR12 , 12, "Read CR12."), 164 EXIT_REASON(SVM_EXIT_READ_CR13 , 13, "Read CR13."), 165 EXIT_REASON(SVM_EXIT_READ_CR14 , 14, "Read CR14."), 166 EXIT_REASON(SVM_EXIT_READ_CR15 , 15, "Read CR15."), 167 EXIT_REASON(SVM_EXIT_WRITE_CR0 , 16, "Write CR0."), 168 EXIT_REASON(SVM_EXIT_WRITE_CR1 , 17, "Write CR1."), 169 EXIT_REASON(SVM_EXIT_WRITE_CR2 , 18, "Write CR2."), 170 EXIT_REASON(SVM_EXIT_WRITE_CR3 , 19, "Write CR3."), 171 EXIT_REASON(SVM_EXIT_WRITE_CR4 , 20, "Write CR4."), 172 EXIT_REASON(SVM_EXIT_WRITE_CR5 , 21, "Write CR5."), 173 EXIT_REASON(SVM_EXIT_WRITE_CR6 , 22, "Write CR6."), 174 EXIT_REASON(SVM_EXIT_WRITE_CR7 , 23, "Write CR7."), 175 EXIT_REASON(SVM_EXIT_WRITE_CR8 , 24, "Write CR8."), 176 EXIT_REASON(SVM_EXIT_WRITE_CR9 , 25, "Write CR9."), 177 EXIT_REASON(SVM_EXIT_WRITE_CR10 , 26, "Write CR10."), 178 EXIT_REASON(SVM_EXIT_WRITE_CR11 , 27, "Write CR11."), 179 EXIT_REASON(SVM_EXIT_WRITE_CR12 , 28, "Write CR12."), 180 EXIT_REASON(SVM_EXIT_WRITE_CR13 , 29, "Write CR13."), 181 EXIT_REASON(SVM_EXIT_WRITE_CR14 , 30, "Write CR14."), 182 EXIT_REASON(SVM_EXIT_WRITE_CR15 , 31, "Write CR15."), 183 EXIT_REASON(SVM_EXIT_READ_DR0 , 32, "Read DR0."), 184 EXIT_REASON(SVM_EXIT_READ_DR1 , 33, "Read DR1."), 185 EXIT_REASON(SVM_EXIT_READ_DR2 , 34, "Read DR2."), 186 EXIT_REASON(SVM_EXIT_READ_DR3 , 35, "Read DR3."), 187 EXIT_REASON(SVM_EXIT_READ_DR4 , 36, "Read DR4."), 188 EXIT_REASON(SVM_EXIT_READ_DR5 , 37, "Read DR5."), 189 EXIT_REASON(SVM_EXIT_READ_DR6 , 38, "Read DR6."), 190 EXIT_REASON(SVM_EXIT_READ_DR7 , 39, "Read DR7."), 191 EXIT_REASON(SVM_EXIT_READ_DR8 , 40, "Read DR8."), 192 EXIT_REASON(SVM_EXIT_READ_DR9 , 41, "Read DR9."), 193 EXIT_REASON(SVM_EXIT_READ_DR10 , 42, "Read DR10."), 194 EXIT_REASON(SVM_EXIT_READ_DR11 , 43, "Read DR11"), 195 EXIT_REASON(SVM_EXIT_READ_DR12 , 44, "Read DR12."), 196 EXIT_REASON(SVM_EXIT_READ_DR13 , 45, "Read DR13."), 197 EXIT_REASON(SVM_EXIT_READ_DR14 , 46, "Read DR14."), 198 EXIT_REASON(SVM_EXIT_READ_DR15 , 47, "Read DR15."), 199 EXIT_REASON(SVM_EXIT_WRITE_DR0 , 48, "Write DR0."), 200 EXIT_REASON(SVM_EXIT_WRITE_DR1 , 49, "Write DR1."), 201 EXIT_REASON(SVM_EXIT_WRITE_DR2 , 50, "Write DR2."), 202 EXIT_REASON(SVM_EXIT_WRITE_DR3 , 51, "Write DR3."), 203 EXIT_REASON(SVM_EXIT_WRITE_DR4 , 52, "Write DR4."), 204 EXIT_REASON(SVM_EXIT_WRITE_DR5 , 53, "Write DR5."), 205 EXIT_REASON(SVM_EXIT_WRITE_DR6 , 54, "Write DR6."), 206 EXIT_REASON(SVM_EXIT_WRITE_DR7 , 55, "Write DR7."), 207 EXIT_REASON(SVM_EXIT_WRITE_DR8 , 56, "Write DR8."), 208 EXIT_REASON(SVM_EXIT_WRITE_DR9 , 57, "Write DR9."), 209 EXIT_REASON(SVM_EXIT_WRITE_DR10 , 58, "Write DR10."), 210 EXIT_REASON(SVM_EXIT_WRITE_DR11 , 59, "Write DR11."), 211 EXIT_REASON(SVM_EXIT_WRITE_DR12 , 60, "Write DR12."), 212 EXIT_REASON(SVM_EXIT_WRITE_DR13 , 61, "Write DR13."), 213 EXIT_REASON(SVM_EXIT_WRITE_DR14 , 62, "Write DR14."), 214 EXIT_REASON(SVM_EXIT_WRITE_DR15 , 63, "Write DR15."), 215 EXIT_REASON(SVM_EXIT_EXCEPTION_0 , 64, "Exception Vector 0 (#DE)."), 216 EXIT_REASON(SVM_EXIT_EXCEPTION_1 , 65, "Exception Vector 1 (#DB)."), 217 EXIT_REASON(SVM_EXIT_EXCEPTION_2 , 66, "Exception Vector 2 (#NMI)."), 218 EXIT_REASON(SVM_EXIT_EXCEPTION_3 , 67, "Exception Vector 3 (#BP)."), 219 EXIT_REASON(SVM_EXIT_EXCEPTION_4 , 68, "Exception Vector 4 (#OF)."), 220 EXIT_REASON(SVM_EXIT_EXCEPTION_5 , 69, "Exception Vector 5 (#BR)."), 221 EXIT_REASON(SVM_EXIT_EXCEPTION_6 , 70, "Exception Vector 6 (#UD)."), 222 EXIT_REASON(SVM_EXIT_EXCEPTION_7 , 71, "Exception Vector 7 (#NM)."), 223 EXIT_REASON(SVM_EXIT_EXCEPTION_8 , 72, "Exception Vector 8 (#DF)."), 224 EXIT_REASON(SVM_EXIT_EXCEPTION_9 , 73, "Exception Vector 9 (#CO_SEG_OVERRUN)."), 225 EXIT_REASON(SVM_EXIT_EXCEPTION_A , 74, "Exception Vector 10 (#TS)."), 226 EXIT_REASON(SVM_EXIT_EXCEPTION_B , 75, "Exception Vector 11 (#NP)."), 227 EXIT_REASON(SVM_EXIT_EXCEPTION_C , 76, "Exception Vector 12 (#SS)."), 228 EXIT_REASON(SVM_EXIT_EXCEPTION_D , 77, "Exception Vector 13 (#GP)."), 229 EXIT_REASON(SVM_EXIT_EXCEPTION_E , 78, "Exception Vector 14 (#PF)."), 230 EXIT_REASON(SVM_EXIT_EXCEPTION_F , 79, "Exception Vector 15 (0x0f)."), 231 EXIT_REASON(SVM_EXIT_EXCEPTION_10 , 80, "Exception Vector 16 (#MF)."), 232 EXIT_REASON(SVM_EXIT_EXCEPTION_11 , 81, "Exception Vector 17 (#AC)."), 233 EXIT_REASON(SVM_EXIT_EXCEPTION_12 , 82, "Exception Vector 18 (#MC)."), 234 EXIT_REASON(SVM_EXIT_EXCEPTION_13 , 83, "Exception Vector 19 (#XF)."), 235 EXIT_REASON(SVM_EXIT_EXCEPTION_14 , 84, "Exception Vector 20 (0x14)."), 236 EXIT_REASON(SVM_EXIT_EXCEPTION_15 , 85, "Exception Vector 22 (0x15)."), 237 EXIT_REASON(SVM_EXIT_EXCEPTION_16 , 86, "Exception Vector 22 (0x16)."), 238 EXIT_REASON(SVM_EXIT_EXCEPTION_17 , 87, "Exception Vector 23 (0x17)."), 239 EXIT_REASON(SVM_EXIT_EXCEPTION_18 , 88, "Exception Vector 24 (0x18)."), 240 EXIT_REASON(SVM_EXIT_EXCEPTION_19 , 89, "Exception Vector 25 (0x19)."), 241 EXIT_REASON(SVM_EXIT_EXCEPTION_1A , 90, "Exception Vector 26 (0x1A)."), 242 EXIT_REASON(SVM_EXIT_EXCEPTION_1B , 91, "Exception Vector 27 (0x1B)."), 243 EXIT_REASON(SVM_EXIT_EXCEPTION_1C , 92, "Exception Vector 28 (0x1C)."), 244 EXIT_REASON(SVM_EXIT_EXCEPTION_1D , 93, "Exception Vector 29 (0x1D)."), 245 EXIT_REASON(SVM_EXIT_EXCEPTION_1E , 94, "Exception Vector 30 (0x1E)."), 246 EXIT_REASON(SVM_EXIT_EXCEPTION_1F , 95, "Exception Vector 31 (0x1F)."), 247 EXIT_REASON(SVM_EXIT_INTR , 96, "Physical maskable interrupt (host)."), 248 EXIT_REASON(SVM_EXIT_NMI , 97, "Physical non-maskable interrupt (host)."), 249 EXIT_REASON(SVM_EXIT_SMI , 98, "System management interrupt (host)."), 250 EXIT_REASON(SVM_EXIT_INIT , 99, "Physical INIT signal (host)."), 251 EXIT_REASON(SVM_EXIT_VINTR , 100, "Virtual interrupt-window exit."), 252 EXIT_REASON(SVM_EXIT_CR0_SEL_WRITE, 101, "Write to CR0 that changed any bits other than CR0.TS or CR0.MP."), 253 EXIT_REASON(SVM_EXIT_IDTR_READ , 102, "Read IDTR"), 254 EXIT_REASON(SVM_EXIT_GDTR_READ , 103, "Read GDTR"), 255 EXIT_REASON(SVM_EXIT_LDTR_READ , 104, "Read LDTR."), 256 EXIT_REASON(SVM_EXIT_TR_READ , 105, "Read TR."), 257 EXIT_REASON(SVM_EXIT_IDTR_WRITE , 106, "Write IDTR."), 258 EXIT_REASON(SVM_EXIT_GDTR_WRITE , 107, "Write GDTR."), 259 EXIT_REASON(SVM_EXIT_LDTR_WRITE , 108, "Write LDTR."), 260 EXIT_REASON(SVM_EXIT_TR_WRITE , 109, "Write TR."), 261 EXIT_REASON(SVM_EXIT_RDTSC , 110, "RDTSC instruction."), 262 EXIT_REASON(SVM_EXIT_RDPMC , 111, "RDPMC instruction."), 263 EXIT_REASON(SVM_EXIT_PUSHF , 112, "PUSHF instruction."), 264 EXIT_REASON(SVM_EXIT_POPF , 113, "POPF instruction."), 265 EXIT_REASON(SVM_EXIT_CPUID , 114, "CPUID instruction."), 266 EXIT_REASON(SVM_EXIT_RSM , 115, "RSM instruction."), 267 EXIT_REASON(SVM_EXIT_IRET , 116, "IRET instruction."), 268 EXIT_REASON(SVM_EXIT_SWINT , 117, "Software interrupt (INTn instructions)."), 269 EXIT_REASON(SVM_EXIT_INVD , 118, "INVD instruction."), 270 EXIT_REASON(SVM_EXIT_PAUSE , 119, "PAUSE instruction."), 271 EXIT_REASON(SVM_EXIT_HLT , 120, "HLT instruction."), 272 EXIT_REASON(SVM_EXIT_INVLPG , 121, "INVLPG instruction."), 273 EXIT_REASON(SVM_EXIT_INVLPGA , 122, "INVLPGA instruction."), 274 EXIT_REASON(SVM_EXIT_IOIO , 123, "IN/OUT accessing protected port."), 275 EXIT_REASON(SVM_EXIT_MSR , 124, "RDMSR or WRMSR access to protected MSR."), 276 EXIT_REASON(SVM_EXIT_TASK_SWITCH , 125, "Task switch."), 277 EXIT_REASON(SVM_EXIT_FERR_FREEZE , 126, "Legacy FPU handling enabled; CPU frozen in an x87/mmx instr. waiting for interrupt"), 278 EXIT_REASON(SVM_EXIT_SHUTDOWN , 127, "Shutdown."), 279 EXIT_REASON(SVM_EXIT_VMRUN , 128, "VMRUN instruction."), 280 EXIT_REASON(SVM_EXIT_VMMCALL , 129, "VMCALL instruction."), 281 EXIT_REASON(SVM_EXIT_VMLOAD , 130, "VMLOAD instruction."), 282 EXIT_REASON(SVM_EXIT_VMSAVE , 131, "VMSAVE instruction."), 283 EXIT_REASON(SVM_EXIT_STGI , 132, "STGI instruction."), 284 EXIT_REASON(SVM_EXIT_CLGI , 133, "CLGI instruction."), 285 EXIT_REASON(SVM_EXIT_SKINIT , 134, "SKINIT instruction."), 286 EXIT_REASON(SVM_EXIT_RDTSCP , 135, "RDTSCP instruction."), 287 EXIT_REASON(SVM_EXIT_ICEBP , 136, "ICEBP instruction."), 288 EXIT_REASON(SVM_EXIT_WBINVD , 137, "WBINVD instruction."), 289 EXIT_REASON(SVM_EXIT_MONITOR , 138, "MONITOR instruction."), 290 EXIT_REASON(SVM_EXIT_MWAIT , 139, "MWAIT instruction."), 291 EXIT_REASON(SVM_EXIT_MWAIT_ARMED , 140, "MWAIT instruction when armed."), 292 EXIT_REASON(SVM_EXIT_XSETBV , 141, "XSETBV instruction."), 292 293 }; 293 294 /** Array index of the last valid AMD-V exit reason. */ 294 #define MAX_EXITREASON_AMDV 141 295 #define SVM_EXIT_REASON_NPF EXIT_REASON(SVM_EXIT_NPF, 1024, "Nested Page Fault.") 296 297 # undef EXIT_REASON_NIL 298 295 #define MAX_EXITREASON_AMDV 141 296 297 /** Special exit reasons not covered in the array above. */ 298 #define SVM_EXIT_REASON_NPF EXIT_REASON(SVM_EXIT_NPF , 1024, "Nested Page Fault.") 299 #define SVM_EXIT_REASON_AVIC_INCOMPLETE_IPI EXIT_REASON(SVM_EXIT_AVIC_INCOMPLETE_IPI, 1025, "AVIC - Incomplete IPI delivery.") 300 #define SVM_EXIT_REASON_AVIC_NOACCEL EXIT_REASON(SVM_EXIT_AVIC_NOACCEL , 1026, "AVIC - Unhandled register.") 301 302 /** 303 * Gets the SVM exit reason if it's one of the reasons not present in the @c 304 * g_apszAmdVExitReasons array. 305 * 306 * @returns The exit reason or NULL if unknown. 307 * @param uExit The exit. 308 */ 309 DECLINLINE(const char *) hmSvmGetSpecialExitReasonDesc(uint16_t uExit) 310 { 311 switch (uExit) 312 { 313 case SVM_EXIT_NPF: return SVM_EXIT_REASON_NPF; 314 case SVM_EXIT_AVIC_INCOMPLETE_IPI: return SVM_EXIT_REASON_AVIC_INCOMPLETE_IPI; 315 case SVM_EXIT_AVIC_NOACCEL: return SVM_EXIT_REASON_AVIC_NOACCEL; 316 } 317 return EXIT_REASON_NIL(); 318 } 319 #undef EXIT_REASON_NIL 320 #undef EXIT_REASON 321 322 /** @def HMVMX_REPORT_FEATURE 323 * Reports VT-x feature to the release log. 324 * 325 * @param allowed1 Mask of allowed feature bits. 326 * @param disallowed0 Mask of disallowed feature bits. 327 * @param featflag Mask of the feature to report. 328 */ 299 329 #define HMVMX_REPORT_FEATURE(allowed1, disallowed0, featflag) \ 300 330 do { \ … … 310 340 } while (0) 311 341 342 /** @def HMVMX_REPORT_ALLOWED_FEATURE 343 * Reports an allowed VT-x feature to the release log. 344 * 345 * @param allowed1 Mask of allowed feature bits. 346 * @param featflag Mask of the feature to report. 347 */ 312 348 #define HMVMX_REPORT_ALLOWED_FEATURE(allowed1, featflag) \ 313 349 do { \ … … 318 354 } while (0) 319 355 320 #define HMVMX_REPORT_CAPABILITY(msrcaps, cap) \ 356 /** @def HMVMX_REPORT_MSR_CAPABILITY 357 * Reports MSR feature capability. 358 * 359 * @param msrcap Mask of MSR feature bits. 360 * @param featflag Mask of the feature to report. 361 */ 362 #define HMVMX_REPORT_MSR_CAPABILITY(msrcaps, cap) \ 321 363 do { \ 322 364 if ((msrcaps) & (cap)) \ … … 1245 1287 val = pVM->hm.s.vmx.Msrs.u64EptVpidCaps; 1246 1288 LogRel(("HM: MSR_IA32_VMX_EPT_VPID_CAP = %#RX64\n", val)); 1247 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_RWX_X_ONLY);1248 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_PAGE_WALK_LENGTH_4);1249 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_EMT_UC);1250 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_EMT_WB);1251 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_PDE_2M);1252 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_PDPTE_1G);1253 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVEPT);1254 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_EPT_ACCESS_DIRTY);1255 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_SINGLE_CONTEXT);1256 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_ALL_CONTEXTS);1257 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID);1258 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_INDIV_ADDR);1259 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT);1260 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_ALL_CONTEXTS);1261 HMVMX_REPORT_ CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT_RETAIN_GLOBALS);1289 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_RWX_X_ONLY); 1290 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_PAGE_WALK_LENGTH_4); 1291 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_EMT_UC); 1292 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_EMT_WB); 1293 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_PDE_2M); 1294 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_PDPTE_1G); 1295 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVEPT); 1296 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_EPT_ACCESS_DIRTY); 1297 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_SINGLE_CONTEXT); 1298 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVEPT_ALL_CONTEXTS); 1299 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID); 1300 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_INDIV_ADDR); 1301 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT); 1302 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_ALL_CONTEXTS); 1303 HMVMX_REPORT_MSR_CAPABILITY(val, MSR_IA32_VMX_EPT_VPID_CAP_INVVPID_SINGLE_CONTEXT_RETAIN_GLOBALS); 1262 1304 } 1263 1305 … … 3496 3538 if (uExit <= cMaxExitDesc) 3497 3539 pszExit = papszDesc[uExit]; 3498 else if (!fIsVtx && uExit == SVM_EXIT_NPF) 3499 pszExit = SVM_EXIT_REASON_NPF; 3540 else if (!fIsVtx) 3541 pszExit = hmSvmGetSpecialExitReasonDesc(uExit); 3542 else 3543 pszExit = NULL; 3500 3544 3501 3545 pHlp->pfnPrintf(pHlp, " auExitHistory[%2u] = 0x%04x %s %s\n", i, uExit, pszExit,
Note:
See TracChangeset
for help on using the changeset viewer.