Changeset 87508 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Feb 1, 2021 3:19:37 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142532
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/HMInternal.h
r87504 r87508 668 668 /** Pointer to a SVM VMRun function. */ 669 669 typedef 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 */ 690 typedef 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. */ 726 typedef SVMNESTEDVMCBCACHE *PSVMNESTEDVMCBCACHE; 727 /** Pointer to a const SVMNESTEDVMCBCACHE structure. */ 728 typedef const SVMNESTEDVMCBCACHE *PCSVMNESTEDVMCBCACHE; 729 AssertCompileSizeAlignment(SVMNESTEDVMCBCACHE, 8); 730 670 731 /** @} */ 671 732
Note:
See TracChangeset
for help on using the changeset viewer.