Changeset 97202 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Oct 18, 2022 11:55:00 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 154177
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r97200 r97202 7994 7994 */ 7995 7995 TRPMAssertXcptPF(pVCpu, GCPhysFaultAddr, u32ErrCode); 7996 int rc = PGMR0Trap0eHandlerNestedPaging(pVM, pVCpu, enmNestedPagingMode, u32ErrCode, CPUMCTX2CORE(pCtx), GCPhysFaultAddr);7996 int rc = PGMR0Trap0eHandlerNestedPaging(pVM, pVCpu, enmNestedPagingMode, u32ErrCode, pCtx, GCPhysFaultAddr); 7997 7997 TRPMResetTrap(pVCpu); 7998 7998 -
trunk/src/VBox/VMM/VMMR0/PGMR0.cpp
r97197 r97202 1112 1112 * @param enmShwPagingMode Paging mode for the nested page tables. 1113 1113 * @param uErr The trap error code. 1114 * @param p RegFrame Trap register frame.1114 * @param pCtx Pointer to the register context for the CPU. 1115 1115 * @param GCPhysFault The fault address. 1116 1116 */ 1117 1117 VMMR0DECL(int) PGMR0Trap0eHandlerNestedPaging(PGVM pGVM, PGVMCPU pGVCpu, PGMMODE enmShwPagingMode, RTGCUINT uErr, 1118 PCPUMCTX CORE pRegFrame, RTGCPHYS GCPhysFault)1118 PCPUMCTX pCtx, RTGCPHYS GCPhysFault) 1119 1119 { 1120 1120 int rc; 1121 1121 1122 LogFlow(("PGMTrap0eHandler: uErr=%RGx GCPhysFault=%RGp eip=%RGv\n", uErr, GCPhysFault, (RTGCPTR)p RegFrame->rip));1122 LogFlow(("PGMTrap0eHandler: uErr=%RGx GCPhysFault=%RGp eip=%RGv\n", uErr, GCPhysFault, (RTGCPTR)pCtx->rip)); 1123 1123 STAM_PROFILE_START(&pGVCpu->pgm.s.StatRZTrap0e, a); 1124 1124 STAM_STATS({ pGVCpu->pgmr0.s.pStatTrap0eAttributionR0 = NULL; } ); … … 1183 1183 { 1184 1184 case PGMMODE_32_BIT: 1185 rc = PGM_BTH_NAME_32BIT_PROT(Trap0eHandler)(pGVCpu, uErr, p RegFrame, GCPhysFault, &fLockTaken);1185 rc = PGM_BTH_NAME_32BIT_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken); 1186 1186 break; 1187 1187 case PGMMODE_PAE: 1188 1188 case PGMMODE_PAE_NX: 1189 rc = PGM_BTH_NAME_PAE_PROT(Trap0eHandler)(pGVCpu, uErr, p RegFrame, GCPhysFault, &fLockTaken);1189 rc = PGM_BTH_NAME_PAE_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken); 1190 1190 break; 1191 1191 case PGMMODE_AMD64: 1192 1192 case PGMMODE_AMD64_NX: 1193 rc = PGM_BTH_NAME_AMD64_PROT(Trap0eHandler)(pGVCpu, uErr, p RegFrame, GCPhysFault, &fLockTaken);1193 rc = PGM_BTH_NAME_AMD64_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken); 1194 1194 break; 1195 1195 case PGMMODE_EPT: 1196 rc = PGM_BTH_NAME_EPT_PROT(Trap0eHandler)(pGVCpu, uErr, p RegFrame, GCPhysFault, &fLockTaken);1196 rc = PGM_BTH_NAME_EPT_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken); 1197 1197 break; 1198 1198 default: … … 1218 1218 || rc == VERR_PAGE_MAP_LEVEL4_NOT_PRESENT) /* precaution */ 1219 1219 { 1220 Log(("WARNING: Unexpected VERR_PAGE_TABLE_NOT_PRESENT (%d) for page fault at %RGp error code %x (rip=%RGv)\n", rc, GCPhysFault, uErr, p RegFrame->rip));1220 Log(("WARNING: Unexpected VERR_PAGE_TABLE_NOT_PRESENT (%d) for page fault at %RGp error code %x (rip=%RGv)\n", rc, GCPhysFault, uErr, pCtx->rip)); 1221 1221 /* Some kind of inconsistency in the SMP case; it's safe to just execute the instruction again; not sure about 1222 1222 single VCPU VMs though. */ … … 1240 1240 * EMT. 1241 1241 * @param uErr The trap error code. 1242 * @param p RegFrame Trap register frame.1242 * @param pCtx Pointer to the register context for the CPU. 1243 1243 * @param GCPhysNestedFault The nested-guest physical address causing the fault. 1244 1244 * @param fIsLinearAddrValid Whether translation of a nested-guest linear address … … 1250 1250 */ 1251 1251 VMMR0DECL(VBOXSTRICTRC) PGMR0NestedTrap0eHandlerNestedPaging(PGVMCPU pGVCpu, PGMMODE enmShwPagingMode, RTGCUINT uErr, 1252 PCPUMCTX CORE pRegFrame, RTGCPHYS GCPhysNestedFault,1252 PCPUMCTX pCtx, RTGCPHYS GCPhysNestedFault, 1253 1253 bool fIsLinearAddrValid, RTGCPTR GCPtrNestedFault, PPGMPTWALK pWalk) 1254 1254 { … … 1257 1257 1258 1258 bool fLockTaken; 1259 VBOXSTRICTRC rcStrict = PGM_BTH_NAME_EPT_PROT(NestedTrap0eHandler)(pGVCpu, uErr, p RegFrame, GCPhysNestedFault,1259 VBOXSTRICTRC rcStrict = PGM_BTH_NAME_EPT_PROT(NestedTrap0eHandler)(pGVCpu, uErr, pCtx, GCPhysNestedFault, 1260 1260 fIsLinearAddrValid, GCPtrNestedFault, pWalk, &fLockTaken); 1261 1261 if (fLockTaken) -
trunk/src/VBox/VMM/VMMR0/PGMR0Bth.h
r96407 r97202 31 31 *******************************************************************************/ 32 32 RT_C_DECLS_BEGIN 33 PGM_BTH_DECL(int, Trap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTX CORE pRegFrame, RTGCPTR pvFault, bool *pfLockTaken);34 PGM_BTH_DECL(int, NestedTrap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTX CORE pRegFrame, RTGCPHYS GCPhysNested,33 PGM_BTH_DECL(int, Trap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTX pCtx, RTGCPTR pvFault, bool *pfLockTaken); 34 PGM_BTH_DECL(int, NestedTrap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTX pCtx, RTGCPHYS GCPhysNested, 35 35 bool fIsLinearAddrValid, RTGCPTR GCPtrNested, PPGMPTWALK pWalk, bool *pfLockTaken); 36 36 RT_C_DECLS_END
Note:
See TracChangeset
for help on using the changeset viewer.