VirtualBox

Changeset 87508 in vbox for trunk/src/VBox/VMM/include


Ignore:
Timestamp:
Feb 1, 2021 3:19:37 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142532
Message:

VMM/HMSVM: Moving SVMNESTEDVMCBCACHE to HMInternal.h.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/HMInternal.h

    r87504 r87508  
    668668/** Pointer to a SVM VMRun function. */
    669669typedef R0PTRTYPE(FNHMSVMVMRUN *) PFNHMSVMVMRUN;
     670
     671/**
     672 * SVM nested-guest VMCB cache.
     673 *
     674 * Contains VMCB fields from the nested-guest VMCB before they're modified by
     675 * SVM R0 code for hardware-assisted SVM execution of a nested-guest.
     676 *
     677 * A VMCB field needs to be cached when it needs to be modified for execution using
     678 * hardware-assisted SVM and any of the following are true:
     679 *   - If the original field needs to be inspected during execution of the
     680 *     nested-guest or \#VMEXIT processing.
     681 *   - If the field is written back to memory on \#VMEXIT by the physical CPU.
     682 *
     683 * A VMCB field needs to be restored only when the field is written back to
     684 * memory on \#VMEXIT by the physical CPU and thus would be visible to the
     685 * guest.
     686 *
     687 * @remarks Please update hmR3InfoSvmNstGstVmcbCache() when changes are made to
     688 *          this structure.
     689 */
     690typedef struct SVMNESTEDVMCBCACHE
     691{
     692    /** Cache of CRX read intercepts. */
     693    uint16_t            u16InterceptRdCRx;
     694    /** Cache of CRX write intercepts. */
     695    uint16_t            u16InterceptWrCRx;
     696    /** Cache of DRX read intercepts. */
     697    uint16_t            u16InterceptRdDRx;
     698    /** Cache of DRX write intercepts. */
     699    uint16_t            u16InterceptWrDRx;
     700
     701    /** Cache of the pause-filter threshold. */
     702    uint16_t            u16PauseFilterThreshold;
     703    /** Cache of the pause-filter count. */
     704    uint16_t            u16PauseFilterCount;
     705
     706    /** Cache of exception intercepts. */
     707    uint32_t            u32InterceptXcpt;
     708    /** Cache of control intercepts. */
     709    uint64_t            u64InterceptCtrl;
     710
     711    /** Cache of the TSC offset. */
     712    uint64_t            u64TSCOffset;
     713
     714    /** Cache of V_INTR_MASKING bit. */
     715    bool                fVIntrMasking;
     716    /** Cache of the nested-paging bit. */
     717    bool                fNestedPaging;
     718    /** Cache of the LBR virtualization bit. */
     719    bool                fLbrVirt;
     720    /** Whether the VMCB is cached by HM.  */
     721    bool                fCacheValid;
     722    /** Alignment. */
     723    bool                afPadding0[4];
     724} SVMNESTEDVMCBCACHE;
     725/** Pointer to the SVMNESTEDVMCBCACHE structure. */
     726typedef SVMNESTEDVMCBCACHE *PSVMNESTEDVMCBCACHE;
     727/** Pointer to a const SVMNESTEDVMCBCACHE structure. */
     728typedef const SVMNESTEDVMCBCACHE *PCSVMNESTEDVMCBCACHE;
     729AssertCompileSizeAlignment(SVMNESTEDVMCBCACHE, 8);
     730
    670731/** @} */
    671732
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