VirtualBox

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


Ignore:
Timestamp:
Nov 20, 2017 9:14:10 AM (7 years ago)
Author:
vboxsync
Message:

VMM: Nested Hw.virt: SVM fixes.

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

Legend:

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

    r69686 r69764  
    13331333DECLINLINE(bool) CPUMIsGuestSvmCtrlInterceptSet(PCCPUMCTX pCtx, uint64_t fIntercept)
    13341334{
     1335    Assert(!pCtx->hwvirt.svm.fHMCachedVmcb);
    13351336    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    13361337    return pVmcb && (pVmcb->ctrl.u64InterceptCtrl & fIntercept);
     
    13471348DECLINLINE(bool) CPUMIsGuestSvmReadCRxInterceptSet(PCCPUMCTX pCtx, uint8_t uCr)
    13481349{
     1350    Assert(!pCtx->hwvirt.svm.fHMCachedVmcb);
    13491351    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    13501352    return pVmcb && (pVmcb->ctrl.u16InterceptRdCRx & (1 << uCr));
     
    13611363DECLINLINE(bool) CPUMIsGuestSvmWriteCRxInterceptSet(PCCPUMCTX pCtx, uint8_t uCr)
    13621364{
     1365    Assert(!pCtx->hwvirt.svm.fHMCachedVmcb);
    13631366    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    13641367    return pVmcb && (pVmcb->ctrl.u16InterceptWrCRx & (1 << uCr));
     
    13751378DECLINLINE(bool) CPUMIsGuestSvmReadDRxInterceptSet(PCCPUMCTX pCtx, uint8_t uDr)
    13761379{
     1380    Assert(!pCtx->hwvirt.svm.fHMCachedVmcb);
    13771381    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    13781382    return pVmcb && (pVmcb->ctrl.u16InterceptRdDRx & (1 << uDr));
     
    13891393DECLINLINE(bool) CPUMIsGuestSvmWriteDRxInterceptSet(PCCPUMCTX pCtx, uint8_t uDr)
    13901394{
     1395    Assert(!pCtx->hwvirt.svm.fHMCachedVmcb);
    13911396    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    13921397    return pVmcb && (pVmcb->ctrl.u16InterceptWrDRx & (1 << uDr));
     
    14031408DECLINLINE(bool) CPUMIsGuestSvmXcptInterceptSet(PCCPUMCTX pCtx, uint8_t uVector)
    14041409{
     1410    Assert(!pCtx->hwvirt.svm.fHMCachedVmcb);
    14051411    Assert(uVector < 32);
    14061412    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
  • trunk/include/VBox/vmm/cpum.mac

    r69107 r69764  
    271271    .hwvirt.svm.cPauseFilterThreshold  resw          1
    272272    .hwvirt.svm.fInterceptEvents       resb          1
    273     .hwvirt.svm.u8Padding1             resb          1
     273    .hwvirt.svm.fHMCachedVmcb          resb          1
    274274    .hwvirt.svm.pvMsrBitmapR0          RTR0PTR_RES   1
    275275    .hwvirt.svm.pvMsrBitmapR3          RTR3PTR_RES   1
  • trunk/include/VBox/vmm/cpumctx.h

    r69686 r69764  
    499499                /** 950 - Whether the injected event is subject to event intercepts. */
    500500                bool                fInterceptEvents;
    501                 /** 951 - Padding. */
    502                 uint8_t             u8Padding1;
     501                /** 951 - Whether parts of the VMCB are cached (and potentially modified) by HM. */
     502                bool                fHMCachedVmcb;
    503503                /** 952 - MSR permission bitmap - R0 ptr. */
    504504                R0PTRTYPE(void *)   pvMsrBitmapR0;
  • trunk/include/VBox/vmm/hm.h

    r69107 r69764  
    167167 */
    168168#ifdef VBOX_WITH_NESTED_HWVIRT
    169 VMM_INT_DECL(void)              HMSvmNstGstVmExitNotify(PVMCPU pVCpu, PSVMVMCB pVmcbNstGst);
     169VMM_INT_DECL(void)              HMSvmNstGstVmExitNotify(PVMCPU pVCpu, PCPUMCTX pCtx);
    170170#endif
    171171/** @} */
  • trunk/include/VBox/vmm/hm_svm.h

    r69715 r69764  
    10121012    /** @name Other miscellaneous state.
    10131013     * @{ */
    1014     /** Whether the VMCB exit code and info fields are updated during \#VMEXIT
    1015      *  processing. */
    1016     bool                fExitCodeAndInfoUpdated;
    10171014    /** Cache of V_INTR_MASKING bit. */
    10181015    bool                fVIntrMasking;
    1019     /** Whether the fields above are updated or not. */
    1020     bool                fValid;
    10211016    /** Alignment. */
    1022     bool                afPadding0[5];
     1017    bool                afPadding0[7];
    10231018    /** @} */
    10241019} SVMNESTEDVMCBCACHE;
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