VirtualBox

Changeset 76464 in vbox for trunk/include


Ignore:
Timestamp:
Dec 25, 2018 4:36:48 AM (6 years ago)
Author:
vboxsync
Message:

VMM: Nested VMX: bugref:9180 Fix MSR initialization issue for exploding VMX features.

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

Legend:

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

    r76200 r76464  
    949949
    950950/**
     951 * MSRs.
     952 * MSRs which are required while exploding features.
     953 */
     954typedef struct CPUMMSRS
     955{
     956    union
     957    {
     958        VMXMSRS         vmx;
     959        SVMMSRS         svm;
     960    } hwvirt;
     961} CPUMMSRS;
     962/** Pointer to an CPUMMSRS struct. */
     963typedef CPUMMSRS *PCPUMMSRS;
     964/** Pointer to a const CPUMMSRS struct. */
     965typedef CPUMMSRS const *PCCPUMMSRS;
     966
     967
     968/**
    951969 * CPU features and quirks.
    952970 * This is mostly exploded CPUID info.
  • trunk/include/VBox/vmm/cpum.mac

    r76148 r76464  
    280280    alignb 8
    281281    .hwvirt.svm.HCPhysVmcb             RTHCPHYS_RES  1
    282     .hwvirt.svm.u64Padding0            resb        120
     282    .hwvirt.svm.u64Padding0            resq         19
    283283    .hwvirt.enmHwvirt                  resd          1
    284284    .hwvirt.fGif                       resb          1
  • trunk/include/VBox/vmm/cpumctx.h

    r76150 r76464  
    552552                RTHCPHYS                HCPhysVmcb;
    553553                /** 0x3f0 - Padding. */
    554                 uint64_t                u64Padding0[15];
     554                uint64_t                u64Padding0[19];
    555555            } svm;
    556556
     
    674674        } CPUM_UNION_NM(s);
    675675
    676         /** 0x468 - Hardware virtualization type currently in use. */
     676        /** 0x488 - Hardware virtualization type currently in use. */
    677677        CPUMHWVIRT              enmHwvirt;
    678         /** 0x46c - Global interrupt flag - AMD only (always true on Intel). */
     678        /** 0x48c - Global interrupt flag - AMD only (always true on Intel). */
    679679        bool                    fGif;
    680680        bool                    afPadding1[3];
    681         /** 0x470 - A subset of guest force flags that are saved while running the
     681        /** 0x490 - A subset of guest force flags that are saved while running the
    682682         *  nested-guest. */
    683683#ifdef VMCPU_WITH_64_BIT_FFS
     
    687687        uint32_t                fPadding;
    688688#endif
    689         /* Pad to 64-byte boundary. */
    690         uint64_t                u64Align64;
     689        /** 0x498 - Pad to 64 byte boundary. */
     690        uint8_t                 abPadding0[40];
    691691    } hwvirt;
    692692    /** @} */
     
    795795AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.pvIoBitmapR0,      8);
    796796AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) vmx.Msrs,              8);
    797 AssertCompileMemberOffset(CPUMCTX, hwvirt.enmHwvirt,           0x468);
    798 AssertCompileMemberOffset(CPUMCTX, hwvirt.fGif,                0x46c);
    799 AssertCompileMemberOffset(CPUMCTX, hwvirt.fLocalForcedActions, 0x470);
     797AssertCompileMemberOffset(CPUMCTX, hwvirt.enmHwvirt,           0x488);
     798AssertCompileMemberOffset(CPUMCTX, hwvirt.fGif,                0x48c);
     799AssertCompileMemberOffset(CPUMCTX, hwvirt.fLocalForcedActions, 0x490);
    800800AssertCompileMembersAtSameOffset(CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw.) rax, CPUMCTX, CPUM_UNION_NM(g.) aGRegs);
    801801AssertCompileMembersAtSameOffset(CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw.) rax, CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw2.)  r0);
  • trunk/include/VBox/vmm/hm.h

    r76290 r76464  
    146146 * found in CPUM.
    147147 * @{ */
    148 VMM_INT_DECL(int)               HMVmxGetHostMsrs(PVM pVM, PVMXMSRS pVmxMsrs);
    149 VMM_INT_DECL(int)               HMVmxGetHostMsr(PVM pVM, uint32_t idMsr, uint64_t *puValue);
    150148VMM_INT_DECL(bool)              HMVmxCanExecuteGuest(PVMCPU pVCpu, PCCPUMCTX pCtx);
    151149VMM_INT_DECL(int)               HMVmxEntryIntInfoInjectTrpmEvent(PVMCPU pVCpu, uint32_t uEntryIntInfo, uint32_t uErrCode,
     
    218216VMMR0_INT_DECL(int)             HMR0Init(void);
    219217VMMR0_INT_DECL(int)             HMR0Term(void);
    220 VMMR0_INT_DECL(int)             HMR0PreInitVM(PVM pVM);
    221218VMMR0_INT_DECL(int)             HMR0InitVM(PVM pVM);
    222219VMMR0_INT_DECL(int)             HMR0TermVM(PVM pVM);
  • trunk/include/VBox/vmm/vmm.h

    r76290 r76464  
    342342    /** Attempt to enable or disable hardware-assisted mode. */
    343343    VMMR0_DO_HM_ENABLE,
    344     /** Pre-initialize hardware-assisted VM session. */
    345     VMMR0_DO_HM_PRE_INIT,
    346344
    347345    /** Call PGMR0PhysAllocateHandyPages(). */
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