- Timestamp:
- Feb 5, 2024 7:23:40 AM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 161459
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/HMSVMAll.cpp
r98103 r103194 317 317 case SVM_EVENT_EXTERNAL_IRQ: return TRPM_HARDWARE_INT; 318 318 case SVM_EVENT_SOFTWARE_INT: return TRPM_SOFTWARE_INT; 319 case SVM_EVENT_NMI: return TRPM_ TRAP;319 case SVM_EVENT_NMI: return TRPM_NMI; 320 320 case SVM_EVENT_EXCEPTION: 321 321 { -
trunk/src/VBox/VMM/VMMAll/HMVMXAll.cpp
r100139 r103194 1193 1193 1194 1194 case VMX_IDT_VECTORING_INFO_TYPE_NMI: 1195 Assert(uVector == X86_XCPT_NMI); NOREF(uVector); 1196 enmTrapType = TRPM_NMI; 1197 break; 1198 1195 1199 case VMX_IDT_VECTORING_INFO_TYPE_HW_XCPT: 1196 1200 enmTrapType = TRPM_TRAP; … … 1238 1242 switch (uVector) 1239 1243 { 1240 case X86_XCPT_NMI:1241 uIntInfoType |= (VMX_IDT_VECTORING_INFO_TYPE_NMI << VMX_IDT_VECTORING_INFO_TYPE_SHIFT);1242 break;1243 1244 1244 case X86_XCPT_BP: 1245 1245 case X86_XCPT_OF: … … 1289 1289 } 1290 1290 } 1291 else if (enmTrpmEvent == TRPM_NMI) 1292 uIntInfoType |= (VMX_IDT_VECTORING_INFO_TYPE_NMI << VMX_IDT_VECTORING_INFO_TYPE_SHIFT); 1291 1293 else 1292 1294 AssertMsgFailed(("Invalid TRPM event type %d\n", enmTrpmEvent)); -
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r102977 r103194 9829 9829 9830 9830 case TRPM_TRAP: 9831 case TRPM_NMI: /** @todo Distinguish NMI from exception 2. */ 9831 9832 Log(("IEMInjectTrap: %#4x trap err=%#x cr2=%#RGv\n", u8TrapNo, uErrCode, uCr2)); 9832 9833 fFlags = IEM_XCPT_FLAGS_T_CPU_XCPT; -
trunk/src/VBox/VMM/VMMAll/TRPMAll.cpp
r98103 r103194 227 227 } 228 228 229 /* NMI TRPM type must specify the vector as 2 (NMI). */ 230 Assert(enmType != TRPM_NMI || u8TrapNo == X86_XCPT_NMI); 231 229 232 pVCpu->trpm.s.uActiveVector = u8TrapNo; 230 233 pVCpu->trpm.s.enmActiveType = enmType; -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r100357 r103194 3416 3416 switch (uVector) 3417 3417 { 3418 case X86_XCPT_NMI:3419 {3420 Event.n.u3Type = SVM_EVENT_NMI;3421 break;3422 }3423 3424 3418 case X86_XCPT_BP: 3425 3419 case X86_XCPT_OF: … … 3445 3439 else if (enmTrpmEvent == TRPM_SOFTWARE_INT) 3446 3440 Event.n.u3Type = SVM_EVENT_SOFTWARE_INT; 3441 else if (enmTrpmEvent == TRPM_NMI) 3442 Event.n.u3Type = SVM_EVENT_NMI; 3447 3443 else 3448 3444 AssertMsgFailed(("Invalid TRPM event type %d\n", enmTrpmEvent)); -
trunk/src/VBox/VMM/VMMR3/EM.cpp
r102977 r103194 1850 1850 # endif 1851 1851 { 1852 rc2 = TRPMAssertTrap(pVCpu, X86_XCPT_NMI, TRPM_ TRAP);1852 rc2 = TRPMAssertTrap(pVCpu, X86_XCPT_NMI, TRPM_NMI); 1853 1853 if (rc2 == VINF_SUCCESS) 1854 1854 { -
trunk/src/VBox/VMM/VMMR3/TRPM.cpp
r100140 r103194 114 114 *********************************************************************************************************************************/ 115 115 /** TRPM saved state version. */ 116 #define TRPM_SAVED_STATE_VERSION 10 116 #define TRPM_SAVED_STATE_VERSION 11 117 #define TRPM_SAVED_STATE_VERSION_PRE_NMI 10 /* NMI TRPM event type bumped the version */ 117 118 #define TRPM_SAVED_STATE_VERSION_PRE_ICEBP 9 /* INT1/ICEBP support bumped the version */ 118 119 #define TRPM_SAVED_STATE_VERSION_UNI 8 /* SMP support bumped the version */ … … 283 284 */ 284 285 if ( uVersion != TRPM_SAVED_STATE_VERSION 286 && uVersion != TRPM_SAVED_STATE_VERSION_PRE_NMI 285 287 && uVersion != TRPM_SAVED_STATE_VERSION_PRE_ICEBP 286 288 && uVersion != TRPM_SAVED_STATE_VERSION_UNI) … … 290 292 } 291 293 292 if (uVersion == TRPM_SAVED_STATE_VERSION)294 if (uVersion >= TRPM_SAVED_STATE_VERSION_PRE_NMI) 293 295 { 294 296 for (VMCPUID i = 0; i < pVM->cCpus; i++) … … 350 352 */ 351 353 SSMR3SkipToEndOfUnit(pSSM); 354 } 355 356 /* 357 * For saved-state verions prior to introducing NMI as a separate type, convert 358 * traps with vector 2 as NMI since the rest of VirtualBox code now expects this. 359 */ 360 if (uVersion <= TRPM_SAVED_STATE_VERSION_PRE_NMI) 361 { 362 for (VMCPUID i = 0; i < pVM->cCpus; i++) 363 { 364 PTRPMCPU pTrpmCpu = &pVM->apCpusR3[i]->trpm.s; 365 AssertLogRelMsgReturn(pTrpmCpu->enmActiveType != TRPM_NMI, 366 ("TRPM event type (%#RX32) invalid for saved-state version %u!", 367 pTrpmCpu->enmActiveType, uVersion), VERR_SSM_ENUM_VALUE_OUT_OF_RANGE); 368 if ( pTrpmCpu->uActiveVector == X86_XCPT_NMI 369 && pTrpmCpu->enmActiveType == TRPM_TRAP) 370 pTrpmCpu->enmActiveType = TRPM_NMI; 371 } 352 372 } 353 373
Note:
See TracChangeset
for help on using the changeset viewer.