VirtualBox

Changeset 87508 in vbox for trunk/include/VBox/vmm/hm_svm.h


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/include/VBox/vmm/hm_svm.h

    r87504 r87508  
    10621062
    10631063/**
    1064  * SVM nested-guest VMCB cache.
    1065  *
    1066  * Contains VMCB fields from the nested-guest VMCB before they're modified by
    1067  * SVM R0 code for hardware-assisted SVM execution of a nested-guest.
    1068  *
    1069  * A VMCB field needs to be cached when it needs to be modified for execution using
    1070  * hardware-assisted SVM and any of the following are true:
    1071  *   - If the original field needs to be inspected during execution of the
    1072  *     nested-guest or \#VMEXIT processing.
    1073  *   - If the field is written back to memory on \#VMEXIT by the physical CPU.
    1074  *
    1075  * A VMCB field needs to be restored only when the field is written back to
    1076  * memory on \#VMEXIT by the physical CPU and thus would be visible to the
    1077  * guest.
    1078  *
    1079  * @remarks Please update hmR3InfoSvmNstGstVmcbCache() when changes are made to
    1080  *          this structure.
    1081  * @todo r=bird: Why is this structure here? Looks 100% internal to me.
    1082  */
    1083 typedef struct SVMNESTEDVMCBCACHE
    1084 {
    1085     /** Cache of CRX read intercepts. */
    1086     uint16_t            u16InterceptRdCRx;
    1087     /** Cache of CRX write intercepts. */
    1088     uint16_t            u16InterceptWrCRx;
    1089     /** Cache of DRX read intercepts. */
    1090     uint16_t            u16InterceptRdDRx;
    1091     /** Cache of DRX write intercepts. */
    1092     uint16_t            u16InterceptWrDRx;
    1093 
    1094     /** Cache of the pause-filter threshold. */
    1095     uint16_t            u16PauseFilterThreshold;
    1096     /** Cache of the pause-filter count. */
    1097     uint16_t            u16PauseFilterCount;
    1098 
    1099     /** Cache of exception intercepts. */
    1100     uint32_t            u32InterceptXcpt;
    1101     /** Cache of control intercepts. */
    1102     uint64_t            u64InterceptCtrl;
    1103 
    1104     /** Cache of the TSC offset. */
    1105     uint64_t            u64TSCOffset;
    1106 
    1107     /** Cache of V_INTR_MASKING bit. */
    1108     bool                fVIntrMasking;
    1109     /** Cache of the nested-paging bit. */
    1110     bool                fNestedPaging;
    1111     /** Cache of the LBR virtualization bit. */
    1112     bool                fLbrVirt;
    1113     /** Whether the VMCB is cached by HM.  */
    1114     bool                fCacheValid;
    1115     /** Alignment. */
    1116     bool                afPadding0[4];
    1117 } SVMNESTEDVMCBCACHE;
    1118 /** Pointer to the SVMNESTEDVMCBCACHE structure. */
    1119 typedef SVMNESTEDVMCBCACHE *PSVMNESTEDVMCBCACHE;
    1120 /** Pointer to a const SVMNESTEDVMCBCACHE structure. */
    1121 typedef const SVMNESTEDVMCBCACHE *PCSVMNESTEDVMCBCACHE;
    1122 AssertCompileSizeAlignment(SVMNESTEDVMCBCACHE, 8);
    1123 
    1124 /**
    11251064 * Segment attribute conversion between CPU and AMD-V VMCB format.
    11261065 *
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