VirtualBox

Changeset 68403 in vbox


Ignore:
Timestamp:
Aug 14, 2017 9:40:36 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
117541
Message:

VMM: Nested Hw.virt: SVM bits.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpum.mac

    r67944 r68403  
    276276    .hwvirt.svm.pvIoBitmapR0           RTR0PTR_RES   1
    277277    .hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES   1
     278    .hwvirt.svm.HCPhysVmcb             RTHCPHYS_RES  1
    278279%if HC_ARCH_BITS == 32
    279280    .hwvirt.svm.abPadding2             resb          16
  • trunk/include/VBox/vmm/cpumctx.h

    r67944 r68403  
    509509                /** 976 / 964 - IO permission bitmap - R3 ptr. */
    510510                R3PTRTYPE(void *)   pvIoBitmapR3;
     511                /** 984 / 968 - Host physical address of the nested-guest VMCB.  */
     512                RTHCPHYS            HCPhysVmcb;
    511513#if HC_ARCH_BITS == 32
    512                 /** NA / 968 - Padding. */
    513                 uint8_t             abPadding2[16];
     514                /** NA / 972 - Padding. */
     515                uint8_t             abPadding2[20];
    514516#endif
    515517            } svm;
     
    521523        } CPUM_UNION_NM(s);
    522524
    523         /** 984 - A subset of force flags that are preserved while running
     525        /** 992 - A subset of force flags that are preserved while running
    524526         *  the nested-guest. */
    525527        uint32_t                fLocalForcedActions;
    526         /** 1212 - Padding. */
    527         uint8_t                 abPadding1[36];
     528        /** 996 - Padding. */
     529        uint8_t                 abPadding1[28];
    528530    } hwvirt;
    529531    /** @} */
     
    594596AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR0,           HC_ARCH_BITS == 64 ? 968 : 960);
    595597AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR3,           HC_ARCH_BITS == 64 ? 976 : 964);
    596 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) fLocalForcedActions,        984);
     598AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.HCPhysVmcb,             HC_ARCH_BITS == 64 ? 984 : 968);
     599AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) fLocalForcedActions,        992);
    597600AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pVmcbR0,       8);
    598601AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvMsrBitmapR0, 8);
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r68341 r68403  
    767767            pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3 = NULL;
    768768        }
     769        pVCpu->cpum.s.Guest.hwvirt.svm.HCPhysVmcb = NIL_RTHCPHYS;
    769770
    770771        if (pVCpu->cpum.s.Guest.hwvirt.svm.pvMsrBitmapR3)
     
    803804         * Allocate the nested-guest VMCB.
    804805         */
     806        SUPPAGE SupNstGstVmcbPage;
     807        RT_ZERO(SupNstGstVmcbPage);
     808        SupNstGstVmcbPage.Phys = NIL_RTHCPHYS;
     809        Assert(SVM_VMCB_PAGES == 1);
    805810        Assert(!pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3);
    806811        rc = SUPR3PageAllocEx(SVM_VMCB_PAGES, 0 /* fFlags */, (void **)&pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3,
    807                               &pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR0, NULL /* paPages */);
     812                              &pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR0, &SupNstGstVmcbPage);
    808813        if (RT_FAILURE(rc))
    809814        {
     
    812817            break;
    813818        }
     819        pVCpu->cpum.s.Guest.hwvirt.svm.HCPhysVmcb = SupNstGstVmcbPage.Phys;
    814820
    815821        /*
  • trunk/src/VBox/VMM/include/CPUMInternal.mac

    r67944 r68403  
    249249    .Guest.hwvirt.svm.pvIoBitmapR0           RTR0PTR_RES  1
    250250    .Guest.hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES  1
     251    .Guest.hwvirt.svm.HCPhysVmcb             RTHCPHYS_RES 1
    251252%if HC_ARCH_BITS == 32
    252253    .Guest.hwvirt.svm.abPadding2             resb         16
     
    534535    .Hyper.hwvirt.svm.pvIoBitmapR0           RTR0PTR_RES  1
    535536    .Hyper.hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES  1
     537    .Hyper.hwvirt.svm.HCPhysVmcb             RTHCPHYS_RES 1
    536538%if HC_ARCH_BITS == 32
    537539    .Hyper.hwvirt.svm.abPadding2             resb         16
  • trunk/src/VBox/VMM/testcase/tstVMStruct.h

    r67924 r68403  
    145145    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pvIoBitmapR0);
    146146    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pvIoBitmapR3);
     147    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.HCPhysVmcb);
    147148    GEN_CHECK_OFF(CPUMCTX, hwvirt.fLocalForcedActions);
    148149    /** @todo add rest of hwvirt fields when code is more
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