VirtualBox

Changeset 97202 in vbox


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
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pgm.h

    r97197 r97202  
    981981                                            PCRTGCPTR64 paRegionsGCPtrs);
    982982VMMR0DECL(int)       PGMR0Trap0eHandlerNestedPaging(PGVM pGVM, PGVMCPU pGVCpu, PGMMODE enmShwPagingMode, RTGCUINT uErr,
    983                                                     PCPUMCTXCORE pRegFrame, RTGCPHYS pvFault);
     983                                                    PCPUMCTX pCtx, RTGCPHYS pvFault);
    984984VMMR0DECL(VBOXSTRICTRC) PGMR0Trap0eHandlerNPMisconfig(PGVM pGVM, PGVMCPU pGVCpu, PGMMODE enmShwPagingMode,
    985985                                                      PCPUMCTX pCtx, RTGCPHYS GCPhysFault, uint32_t uErr);
     
    988988# ifdef VBOX_WITH_NESTED_HWVIRT_VMX_EPT
    989989VMMR0DECL(VBOXSTRICTRC) PGMR0NestedTrap0eHandlerNestedPaging(PGVMCPU pGVCpu, PGMMODE enmShwPagingMode, RTGCUINT uErr,
    990                                                              PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysNestedFault,
     990                                                             PCPUMCTX pCtx, RTGCPHYS GCPhysNestedFault,
    991991                                                             bool fIsLinearAddrValid, RTGCPTR GCPtrNestedFault, PPGMPTWALK pWalk);
    992992# endif
  • trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h

    r97197 r97202  
    93919391     */
    93929392    TRPMAssertXcptPF(pVCpu, GCPhys, uErrorCode);
    9393     rcStrict = PGMR0Trap0eHandlerNestedPaging(pVM, pVCpu, PGMMODE_EPT, uErrorCode, CPUMCTX2CORE(pCtx), GCPhys);
     9393    rcStrict = PGMR0Trap0eHandlerNestedPaging(pVM, pVCpu, PGMMODE_EPT, uErrorCode, pCtx, GCPhys);
    93949394    TRPMResetTrap(pVCpu);
    93959395
     
    1074810748        PGMPTWALK Walk;
    1074910749        PCPUMCTX pCtx = &pVCpu->cpum.GstCtx;
    10750         rcStrict = PGMR0NestedTrap0eHandlerNestedPaging(pVCpu, PGMMODE_EPT, uErr, CPUMCTX2CORE(pCtx),
    10751                                                         GCPhysNestedFault, fIsLinearAddrValid, GCPtrNestedFault,
    10752                                                         &Walk);
     10750        rcStrict = PGMR0NestedTrap0eHandlerNestedPaging(pVCpu, PGMMODE_EPT, uErr, pCtx, GCPhysNestedFault,
     10751                                                        fIsLinearAddrValid, GCPtrNestedFault, &Walk);
    1075310752        Log7Func(("PGM (uExitQual=%#RX64, %RGp, %RGv) -> %Rrc (fFailed=%d)\n",
    1075410753                  uExitQual, GCPhysNestedFault, GCPtrNestedFault, VBOXSTRICTRC_VAL(rcStrict), Walk.fFailed));
     
    1079910798        PCPUMCTX pCtx = &pVCpu->cpum.GstCtx;
    1080010799        RTGCPHYS const GCPhysNestedFault = pVmxTransient->uGuestPhysicalAddr;
    10801         VBOXSTRICTRC rcStrict = PGMR0NestedTrap0eHandlerNestedPaging(pVCpu, PGMMODE_EPT, X86_TRAP_PF_RSVD, CPUMCTX2CORE(pCtx),
     10800        VBOXSTRICTRC rcStrict = PGMR0NestedTrap0eHandlerNestedPaging(pVCpu, PGMMODE_EPT, X86_TRAP_PF_RSVD, pCtx,
    1080210801                                                                     GCPhysNestedFault, false /* fIsLinearAddrValid */,
    1080310802                                                                     0 /* GCPtrNestedFault */, &Walk);
  • 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.

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