VirtualBox

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


Ignore:
Timestamp:
Dec 11, 2018 7:02:18 AM (6 years ago)
Author:
vboxsync
Message:

VMM: Nested VMX: bugref:9180 Add the VMX MSRs to CPUMCTX.

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

Legend:

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

    r74798 r76148  
    280280    alignb 8
    281281    .hwvirt.svm.HCPhysVmcb             RTHCPHYS_RES  1
     282    .hwvirt.svm.u64Padding0            resb        120
    282283    .hwvirt.enmHwvirt                  resd          1
    283284    .hwvirt.fGif                       resb          1
  • trunk/include/VBox/vmm/cpumctx.h

    r75671 r76148  
    551551                /** 0x3e8 - Host physical address of the nested-guest VMCB.  */
    552552                RTHCPHYS                HCPhysVmcb;
     553                /** 0x3f0 - Padding. */
     554                uint64_t                u64Padding0[15];
    553555            } svm;
    554556
     
    666668                uint16_t                offVirtApicWrite;
    667669                /** 0x3a2 - Padding. */
    668                 uint8_t             abPadding[0x3f0 - 0x3a2];
     670                uint8_t                 abPadding0[6];
     671                /** 0x3a8 - VMX MSRs. */
     672                uint64_t                uMsrFeatCtrl;
     673                uint64_t                uMsrBasic;
     674                uint64_t                uMsrPinCtls;
     675                uint64_t                uMsrProcCtls;
     676                uint64_t                uMsrProcCtls2;
     677                uint64_t                uMsrExitCtls;
     678                uint64_t                uMsrEntryCtls;
     679                uint64_t                uMsrTruePinCtls;
     680                uint64_t                uMsrTrueProcCtls;
     681                uint64_t                uMsrTrueEntryCtls;
     682                uint64_t                uMsrTrueExitCtls;
     683                uint64_t                uMsrMisc;
     684                uint64_t                uMsrCr0Fixed0;
     685                uint64_t                uMsrCr0Fixed1;
     686                uint64_t                uMsrCr4Fixed0;
     687                uint64_t                uMsrCr4Fixed1;
     688                uint64_t                uMsrVmcsEnum;
     689                uint64_t                uMsrVmFunc;
     690                uint64_t                uMsrEptVpidCaps;
     691                /** 0x440 - MSRs reserved for future expansion. */
     692                uint64_t                uMsrRsvd[5];
    669693            } vmx;
    670694        } CPUM_UNION_NM(s);
    671695
    672         /** 0x3f0 - Hardware virtualization type currently in use. */
     696        /** 0x468 - Hardware virtualization type currently in use. */
    673697        CPUMHWVIRT              enmHwvirt;
    674         /** 0x3f4 - Global interrupt flag - AMD only (always true on Intel). */
     698        /** 0x46c - Global interrupt flag - AMD only (always true on Intel). */
    675699        bool                    fGif;
    676700        bool                    afPadding1[3];
    677         /** 0x3f8 - A subset of guest force flags that are saved while running the
     701        /** 0x470 - A subset of guest force flags that are saved while running the
    678702         *  nested-guest. */
    679703#ifdef VMCPU_WITH_64_BIT_FFS
     
    683707        uint32_t                fPadding;
    684708#endif
     709        /* Pad to 64-byte boundary. */
     710        uint64_t                u64Align64;
    685711    } hwvirt;
    686712    /** @} */
     
    779805AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uVmentryTick,           0x398);
    780806AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.offVirtApicWrite,       0x3a0);
     807AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrFeatCtrl,           0x3a8);
     808AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrBasic,              0x3b0);
     809AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrPinCtls,            0x3b8);
     810AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrProcCtls,           0x3c0);
     811AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrProcCtls2,          0x3c8);
     812AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrExitCtls,           0x3d0);
     813AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrEntryCtls,          0x3d8);
     814AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrTruePinCtls,        0x3e0);
     815AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrTrueProcCtls,       0x3e8);
     816AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrTrueEntryCtls,      0x3f0);
     817AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrTrueExitCtls,       0x3f8);
     818AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrMisc,               0x400);
     819AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrCr0Fixed0,          0x408);
     820AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrCr0Fixed1,          0x410);
     821AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrCr4Fixed0,          0x418);
     822AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrCr4Fixed1,          0x420);
     823AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrVmcsEnum,           0x428);
     824AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrVmFunc,             0x430);
     825AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrEptVpidCaps,        0x438);
    781826AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pVmcsR0,           8);
    782827AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pShadowVmcsR0,     8);
     
    787832AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvMsrBitmapR0,     8);
    788833AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvIoBitmapR0,      8);
    789 AssertCompileMemberOffset(CPUMCTX, hwvirt.enmHwvirt,           0x3f0);
    790 AssertCompileMemberOffset(CPUMCTX, hwvirt.fGif,                0x3f4);
    791 AssertCompileMemberOffset(CPUMCTX, hwvirt.fLocalForcedActions, 0x3f8);
     834AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.uMsrFeatCtrl,      8);
     835AssertCompileMemberOffset(CPUMCTX, hwvirt.enmHwvirt,           0x468);
     836AssertCompileMemberOffset(CPUMCTX, hwvirt.fGif,                0x46c);
     837AssertCompileMemberOffset(CPUMCTX, hwvirt.fLocalForcedActions, 0x470);
    792838AssertCompileMembersAtSameOffset(CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw.) rax, CPUMCTX, CPUM_UNION_NM(g.) aGRegs);
    793839AssertCompileMembersAtSameOffset(CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw.) rax, CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw2.)  r0);
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