VirtualBox

Changeset 91301 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Sep 17, 2021 1:38:24 PM (3 years ago)
Author:
vboxsync
Message:

VMM/CPUM,++: Moved the nested VT-X MSR load & store bitmap allocations into CPUMCTX. bugref:10093

Location:
trunk/include/VBox/vmm
Files:
4 edited

Legend:

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

    r91299 r91301  
    268268    .hwvirt.svm                         resb        0
    269269    .hwvirt.vmx                         resb        0
    270     .hwvirt.svm.Vmcb                    resb        4096
    271     .hwvirt.svm.abMsrBitmap             resb        8192
    272     .hwvirt.svm.abIoBitmap              resb        12288
    273     .hwvirt.svm.uMsrHSavePa             resq        1
    274     .hwvirt.svm.GCPhysVmcb              resq        1
    275     alignb 8
    276     .hwvirt.svm.HostState               resb        184
    277     .hwvirt.svm.uPrevPauseTick          resq        1
    278     .hwvirt.svm.cPauseFilter            resw        1
    279     .hwvirt.svm.cPauseFilterThreshold   resw        1
    280     .hwvirt.svm.fInterceptEvents        resb        1
    281     ;.unnamed_padding.1 resb 0
    282 
    283     .hwvirt.vmx.Vmcs                    EQU         (.hwvirt.vmx )
    284     .hwvirt.vmx.ShadowVmcs              EQU         (.hwvirt.vmx + 0x1000)
     270
     271    .hwvirt.svm.Vmcb                    EQU         .hwvirt.svm
     272    .hwvirt.svm.abMsrBitmap             EQU         (.hwvirt.svm.Vmcb                   + 0x1000)
     273    .hwvirt.svm.abIoBitmap              EQU         (.hwvirt.svm.abMsrBitmap            + 0x2000)
     274    .hwvirt.svm.uMsrHSavePa             EQU         (.hwvirt.svm.abIoBitmap             + 0x3000)   ; resq        1
     275    .hwvirt.svm.GCPhysVmcb              EQU         (.hwvirt.svm.uMsrHSavePa            + 8)        ; resq        1
     276    alignb 8
     277    .hwvirt.svm.HostState               EQU         (.hwvirt.svm.GCPhysVmcb             + 8)        ; resb        184
     278    .hwvirt.svm.uPrevPauseTick          EQU         (.hwvirt.svm.HostState              + 184)      ; resq        1
     279    .hwvirt.svm.cPauseFilter            EQU         (.hwvirt.svm.uPrevPauseTick         + 8)        ; resw        1
     280    .hwvirt.svm.cPauseFilterThreshold   EQU         (.hwvirt.svm.cPauseFilter           + 2)        ; resw        1
     281    .hwvirt.svm.fInterceptEvents        EQU         (.hwvirt.svm.cPauseFilterThreshold  + 2)        ; resb        1
     282
     283    .hwvirt.vmx.Vmcs                    resb        0x1000
     284    .hwvirt.vmx.ShadowVmcs              resb        0x1000
     285    .hwvirt.vmx.abVmreadBitmap          resb        0x1000
     286    .hwvirt.vmx.abVmwriteBitmap         resb        0x1000
     287    .hwvirt.vmx.aEntryMsrLoadArea       resb        0x2000
     288    .hwvirt.vmx.aExitMsrStoreArea       resb        0x2000
     289    .hwvirt.vmx.aExitMsrLoadArea        resb        0x2000
     290    alignb 8
     291    .hwvirt.vmx.GCPhysVmxon             resq        1
     292    .hwvirt.vmx.GCPhysVmcs              resq        1
     293    .hwvirt.vmx.GCPhysShadowVmcs        resq        1
     294    .hwvirt.vmx.enmDiag                 resd        1
     295    .hwvirt.vmx.enmAbort                resd        1
     296    .hwvirt.vmx.uDiagAux                resq        1
     297    .hwvirt.vmx.uAbortAux               resd        1
     298    .hwvirt.vmx.fInVmxRootMode          resb        1
     299    .hwvirt.vmx.fInVmxNonRootMode       resb        1
     300    .hwvirt.vmx.fInterceptEvents        resb        1
     301    .hwvirt.vmx.fNmiUnblockingIret      resb        1
     302    .hwvirt.vmx.pvVirtApicPageR0        resq        1
     303    .hwvirt.vmx.pvVirtApicPageR3        resq        1
     304    .hwvirt.vmx.pvMsrBitmapR0           resq        1
     305    .hwvirt.vmx.pvMsrBitmapR3           resq        1
     306    .hwvirt.vmx.pvIoBitmapR0            resq        1
     307    .hwvirt.vmx.pvIoBitmapR3            resq        1
     308    .hwvirt.vmx.uFirstPauseLoopTick     resq        1
     309    .hwvirt.vmx.uPrevPauseTick          resq        1
     310    .hwvirt.vmx.uEntryTick              resq        1
     311    .hwvirt.vmx.offVirtApicWrite        resw        1
     312    .hwvirt.vmx.fVirtNmiBlocking        resb        1
     313    alignb 8
     314    .hwvirt.vmx.Msrs                    resb        224
     315    .hwvirt.vmx.HCPhysVirtApicPage      resq        1
    285316
    286317    alignb 8
  • trunk/include/VBox/vmm/cpumctx.h

    r91298 r91301  
    543543                /** 0X5000 - The shadow VMCS. */
    544544                VMXVVMCS                ShadowVmcs;
     545                /** 0x6000 - The VMREAD bitmap. */
     546                uint8_t                 abVmreadBitmap[VMX_V_VMREAD_VMWRITE_BITMAP_SIZE];
     547                /** 0x7000 - The VMWRITE bitmap. */
     548                uint8_t                 abVmwriteBitmap[VMX_V_VMREAD_VMWRITE_BITMAP_SIZE];
     549                /** 0x8000 - The VM-entry MSR-load area. */
     550                VMXAUTOMSR              aEntryMsrLoadArea[VMX_V_AUTOMSR_AREA_SIZE / sizeof(VMXAUTOMSR)];
     551                /** 0xa000 - The VM-exit MSR-store area. */
     552                VMXAUTOMSR              aExitMsrStoreArea[VMX_V_AUTOMSR_AREA_SIZE / sizeof(VMXAUTOMSR)];
     553                /** 0xc000 - The VM-exit MSR-load area. */
     554                VMXAUTOMSR              aExitMsrLoadArea[VMX_V_AUTOMSR_AREA_SIZE / sizeof(VMXAUTOMSR)];
    545555
    546556                /** 0x300 - Guest physical address of the VMXON region. */
     
    572582                /** 0x358 - The virtual-APIC page - R3 ptr. */
    573583                R3PTRTYPE(void *)       pvVirtApicPageR3;
    574                 /** 0x360 - The VMREAD bitmap - R0 ptr. */
    575                 R0PTRTYPE(void *)       pvVmreadBitmapR0;
    576                 /** 0x368 - The VMREAD bitmap - R3 ptr. */
    577                 R3PTRTYPE(void *)       pvVmreadBitmapR3;
    578                 /** 0x370 - The VMWRITE bitmap - R0 ptr. */
    579                 R0PTRTYPE(void *)       pvVmwriteBitmapR0;
    580                 /** 0x378 - The VMWRITE bitmap - R3 ptr. */
    581                 R3PTRTYPE(void *)       pvVmwriteBitmapR3;
    582                 /** 0x380 - The VM-entry MSR-load area - R0 ptr. */
    583                 R0PTRTYPE(PVMXAUTOMSR)  pEntryMsrLoadAreaR0;
    584                 /** 0x388 - The VM-entry MSR-load area - R3 ptr. */
    585                 R3PTRTYPE(PVMXAUTOMSR)  pEntryMsrLoadAreaR3;
    586                 /** 0x390 - The VM-exit MSR-store area - R0 ptr. */
    587                 R0PTRTYPE(PVMXAUTOMSR)  pExitMsrStoreAreaR0;
    588                 /** 0x398 - The VM-exit MSR-store area - R3 ptr. */
    589                 R3PTRTYPE(PVMXAUTOMSR)  pExitMsrStoreAreaR3;
    590                 /** 0x3a0 - The VM-exit MSR-load area - R0 ptr. */
    591                 R0PTRTYPE(PVMXAUTOMSR)  pExitMsrLoadAreaR0;
    592                 /** 0x3a8 - The VM-exit MSR-load area - R3 ptr. */
    593                 R3PTRTYPE(PVMXAUTOMSR)  pExitMsrLoadAreaR3;
    594584                /** 0x3b0 - MSR bitmap - R0 ptr. */
    595585                R0PTRTYPE(void *)       pvMsrBitmapR0;
     
    634624#endif
    635625        /** 0x530 - Pad to 64 byte boundary. */
    636         uint8_t                 abPadding0[8+16];
     626        uint8_t                 abPadding0[8];
    637627    } hwvirt;
    638628} CPUMCTX;
     
    845835AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.Vmcs,                  X86_PAGE_SIZE);
    846836AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.ShadowVmcs,            X86_PAGE_SIZE);
    847 AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvVmreadBitmapR0,      8);
    848 AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvVmwriteBitmapR0,     8);
    849 AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pEntryMsrLoadAreaR0,   8);
    850 AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pExitMsrStoreAreaR0,   8);
    851 AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pExitMsrLoadAreaR0,    8);
     837AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.abVmreadBitmap,        X86_PAGE_SIZE);
     838AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.abVmwriteBitmap,       X86_PAGE_SIZE);
     839AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.aEntryMsrLoadArea,     X86_PAGE_SIZE);
     840AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.aExitMsrStoreArea,     X86_PAGE_SIZE);
     841AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.aExitMsrLoadArea,      X86_PAGE_SIZE);
    852842AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvMsrBitmapR0,         8);
    853843AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvIoBitmapR0,          8);
  • trunk/include/VBox/vmm/vm.h

    r91291 r91301  
    305305        CPUMCTX             GstCtx;
    306306#endif
    307         uint8_t             padding[61440];      /* multiple of 4096 */
     307        uint8_t             padding[86016];      /* multiple of 4096 */
    308308    } cpum;
    309309
  • trunk/include/VBox/vmm/vm.mac

    r91291 r91301  
    9191    .pgm                    resb 4096+28672
    9292    alignb 4096
    93     .cpum                   resb 61440
     93    .cpum                   resb 86016
    9494%define VMCPU.cpum.GstCtx   VMCPU.cpum
    9595    alignb 4096
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