Changeset 9092 in vbox
- Timestamp:
- May 23, 2008 4:03:14 PM (17 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGM.cpp
r9030 r9092 2578 2578 rc = PGM_BTH_NAME_AMD64_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2579 2579 2580 /* The nested paging mode. */ 2580 2581 pModeData = &pVM->pgm.s.paModeData[pgmModeDataIndex(PGM_TYPE_NESTED, PGM_TYPE_REAL)]; 2581 2582 pModeData->uShwType = PGM_TYPE_NESTED; 2582 2583 pModeData->uGstType = PGM_TYPE_REAL; 2583 rc = PGM_SHW_NAME_NESTED(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);2584 2584 rc = PGM_GST_NAME_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2585 2585 rc = PGM_BTH_NAME_NESTED_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); … … 2588 2588 pModeData->uShwType = PGM_TYPE_NESTED; 2589 2589 pModeData->uGstType = PGM_TYPE_PROT; 2590 rc = PGM_SHW_NAME_NESTED(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);2591 2590 rc = PGM_GST_NAME_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2592 2591 rc = PGM_BTH_NAME_NESTED_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); … … 2595 2594 pModeData->uShwType = PGM_TYPE_NESTED; 2596 2595 pModeData->uGstType = PGM_TYPE_32BIT; 2597 rc = PGM_SHW_NAME_NESTED(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);2598 2596 rc = PGM_GST_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2599 2597 rc = PGM_BTH_NAME_NESTED_32BIT(InitData)(pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); … … 2602 2600 pModeData->uShwType = PGM_TYPE_NESTED; 2603 2601 pModeData->uGstType = PGM_TYPE_PAE; 2604 rc = PGM_SHW_NAME_NESTED(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);2605 2602 rc = PGM_GST_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2606 2603 rc = PGM_BTH_NAME_NESTED_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); … … 2609 2606 pModeData->uShwType = PGM_TYPE_NESTED; 2610 2607 pModeData->uGstType = PGM_TYPE_AMD64; 2611 rc = PGM_SHW_NAME_NESTED(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);2612 2608 rc = PGM_GST_NAME_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2613 2609 rc = PGM_BTH_NAME_NESTED_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2614 2610 2611 /* The shadow part of the nested callback mode depends on the host paging mode (AMD-V only). */ 2612 switch(pVM->pgm.s.enmHostMode) 2613 { 2614 case SUPPAGINGMODE_32_BIT: 2615 case SUPPAGINGMODE_32_BIT_GLOBAL: 2616 for (unsigned i=PGM_TYPE_REAL;i<=PGM_TYPE_AMD64;i++) 2617 { 2618 pModeData = &pVM->pgm.s.paModeData[pgmModeDataIndex(PGM_TYPE_NESTED, i)]; 2619 rc = PGM_SHW_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2620 } 2621 break; 2622 2623 case SUPPAGINGMODE_PAE: 2624 case SUPPAGINGMODE_PAE_NX: 2625 case SUPPAGINGMODE_PAE_GLOBAL: 2626 case SUPPAGINGMODE_PAE_GLOBAL_NX: 2627 for (unsigned i=PGM_TYPE_REAL;i<=PGM_TYPE_AMD64;i++) 2628 { 2629 pModeData = &pVM->pgm.s.paModeData[pgmModeDataIndex(PGM_TYPE_NESTED, i)]; 2630 rc = PGM_SHW_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2631 } 2632 break; 2633 2634 case SUPPAGINGMODE_AMD64: 2635 case SUPPAGINGMODE_AMD64_GLOBAL: 2636 case SUPPAGINGMODE_AMD64_NX: 2637 case SUPPAGINGMODE_AMD64_GLOBAL_NX: 2638 for (unsigned i=PGM_TYPE_REAL;i<=PGM_TYPE_AMD64;i++) 2639 { 2640 pModeData = &pVM->pgm.s.paModeData[pgmModeDataIndex(PGM_TYPE_NESTED, i)]; 2641 rc = PGM_SHW_NAME_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 2642 } 2643 break; 2644 } 2615 2645 return VINF_SUCCESS; 2616 2646 } -
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r9082 r9092 1422 1422 Assert(!pVM->hwaccm.s.fNestedPaging); 1423 1423 1424 /* Truly a pita. Why can't SVM give the same information as V MX? */1424 /* Truly a pita. Why can't SVM give the same information as VT-x? */ 1425 1425 rc = SVMR0InterpretInvpg(pVM, CPUMCTX2CORE(pCtx), pVMCB->ctrl.TLBCtrl.n.u32ASID); 1426 1426 if (rc == VINF_SUCCESS)
Note:
See TracChangeset
for help on using the changeset viewer.