VirtualBox

Changeset 97202 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Oct 18, 2022 11:55:00 AM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
154177
Message:

VMM/PGM: More CPUMCTXCORE elimination, now in the PGMR0Trap0eHandlerNestedPaging and PGMR0NestedTrap0eHandlerNestedPaging area.

Location:
trunk/src/VBox/VMM/VMMR0
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r97200 r97202  
    79947994     */
    79957995    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);
    79977997    TRPMResetTrap(pVCpu);
    79987998
  • trunk/src/VBox/VMM/VMMR0/PGMR0.cpp

    r97197 r97202  
    11121112 * @param   enmShwPagingMode    Paging mode for the nested page tables.
    11131113 * @param   uErr                The trap error code.
    1114  * @param   pRegFrame           Trap register frame.
     1114 * @param   pCtx                Pointer to the register context for the CPU.
    11151115 * @param   GCPhysFault         The fault address.
    11161116 */
    11171117VMMR0DECL(int) PGMR0Trap0eHandlerNestedPaging(PGVM pGVM, PGVMCPU pGVCpu, PGMMODE enmShwPagingMode, RTGCUINT uErr,
    1118                                               PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault)
     1118                                              PCPUMCTX pCtx, RTGCPHYS GCPhysFault)
    11191119{
    11201120    int rc;
    11211121
    1122     LogFlow(("PGMTrap0eHandler: uErr=%RGx GCPhysFault=%RGp eip=%RGv\n", uErr, GCPhysFault, (RTGCPTR)pRegFrame->rip));
     1122    LogFlow(("PGMTrap0eHandler: uErr=%RGx GCPhysFault=%RGp eip=%RGv\n", uErr, GCPhysFault, (RTGCPTR)pCtx->rip));
    11231123    STAM_PROFILE_START(&pGVCpu->pgm.s.StatRZTrap0e, a);
    11241124    STAM_STATS({ pGVCpu->pgmr0.s.pStatTrap0eAttributionR0 = NULL; } );
     
    11831183    {
    11841184        case PGMMODE_32_BIT:
    1185             rc = PGM_BTH_NAME_32BIT_PROT(Trap0eHandler)(pGVCpu, uErr, pRegFrame, GCPhysFault, &fLockTaken);
     1185            rc = PGM_BTH_NAME_32BIT_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken);
    11861186            break;
    11871187        case PGMMODE_PAE:
    11881188        case PGMMODE_PAE_NX:
    1189             rc = PGM_BTH_NAME_PAE_PROT(Trap0eHandler)(pGVCpu, uErr, pRegFrame, GCPhysFault, &fLockTaken);
     1189            rc = PGM_BTH_NAME_PAE_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken);
    11901190            break;
    11911191        case PGMMODE_AMD64:
    11921192        case PGMMODE_AMD64_NX:
    1193             rc = PGM_BTH_NAME_AMD64_PROT(Trap0eHandler)(pGVCpu, uErr, pRegFrame, GCPhysFault, &fLockTaken);
     1193            rc = PGM_BTH_NAME_AMD64_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken);
    11941194            break;
    11951195        case PGMMODE_EPT:
    1196             rc = PGM_BTH_NAME_EPT_PROT(Trap0eHandler)(pGVCpu, uErr, pRegFrame, GCPhysFault, &fLockTaken);
     1196            rc = PGM_BTH_NAME_EPT_PROT(Trap0eHandler)(pGVCpu, uErr, pCtx, GCPhysFault, &fLockTaken);
    11971197            break;
    11981198        default:
     
    12181218             || rc == VERR_PAGE_MAP_LEVEL4_NOT_PRESENT)     /* precaution */
    12191219    {
    1220         Log(("WARNING: Unexpected VERR_PAGE_TABLE_NOT_PRESENT (%d) for page fault at %RGp error code %x (rip=%RGv)\n", rc, GCPhysFault, uErr, pRegFrame->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));
    12211221        /* Some kind of inconsistency in the SMP case; it's safe to just execute the instruction again; not sure about
    12221222           single VCPU VMs though. */
     
    12401240 *                              EMT.
    12411241 * @param   uErr                The trap error code.
    1242  * @param   pRegFrame           Trap register frame.
     1242 * @param   pCtx                Pointer to the register context for the CPU.
    12431243 * @param   GCPhysNestedFault   The nested-guest physical address causing the fault.
    12441244 * @param   fIsLinearAddrValid  Whether translation of a nested-guest linear address
     
    12501250 */
    12511251VMMR0DECL(VBOXSTRICTRC) PGMR0NestedTrap0eHandlerNestedPaging(PGVMCPU pGVCpu, PGMMODE enmShwPagingMode, RTGCUINT uErr,
    1252                                                              PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysNestedFault,
     1252                                                             PCPUMCTX pCtx, RTGCPHYS GCPhysNestedFault,
    12531253                                                             bool fIsLinearAddrValid, RTGCPTR GCPtrNestedFault, PPGMPTWALK pWalk)
    12541254{
     
    12571257
    12581258    bool fLockTaken;
    1259     VBOXSTRICTRC rcStrict = PGM_BTH_NAME_EPT_PROT(NestedTrap0eHandler)(pGVCpu, uErr, pRegFrame, GCPhysNestedFault,
     1259    VBOXSTRICTRC rcStrict = PGM_BTH_NAME_EPT_PROT(NestedTrap0eHandler)(pGVCpu, uErr, pCtx, GCPhysNestedFault,
    12601260                                                                       fIsLinearAddrValid, GCPtrNestedFault, pWalk, &fLockTaken);
    12611261    if (fLockTaken)
  • trunk/src/VBox/VMM/VMMR0/PGMR0Bth.h

    r96407 r97202  
    3131*******************************************************************************/
    3232RT_C_DECLS_BEGIN
    33 PGM_BTH_DECL(int, Trap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, bool *pfLockTaken);
    34 PGM_BTH_DECL(int, NestedTrap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysNested,
     33PGM_BTH_DECL(int, Trap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTX pCtx, RTGCPTR pvFault, bool *pfLockTaken);
     34PGM_BTH_DECL(int, NestedTrap0eHandler)(PVMCPUCC pVCpu, RTGCUINT uErr, PCPUMCTX pCtx, RTGCPHYS GCPhysNested,
    3535                                       bool fIsLinearAddrValid, RTGCPTR GCPtrNested, PPGMPTWALK pWalk, bool *pfLockTaken);
    3636RT_C_DECLS_END
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette