Changeset 78869 in vbox for trunk/include/VBox
- Timestamp:
- May 30, 2019 8:32:28 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 130981
- Location:
- trunk/include/VBox/vmm
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/include/VBox/vmm/cpum.h ¶
r78866 r78869 1796 1796 * SVM_CTRL_INTERCEPT_*. 1797 1797 */ 1798 DECLINLINE(bool) CPUMIsGuestSvmCtrlInterceptSet(PCVMCPU pVCpu, PC PUMCTX pCtx, uint64_t fIntercept)1798 DECLINLINE(bool) CPUMIsGuestSvmCtrlInterceptSet(PCVMCPU pVCpu, PCCPUMCTX pCtx, uint64_t fIntercept) 1799 1799 { 1800 1800 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1801 1801 return false; 1802 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1803 if (HMHasGuestSvmVmcbCached(pVCpu)) 1804 return HMIsGuestSvmCtrlInterceptSet(pVCpu, fIntercept); 1805 return RT_BOOL(pVmcb->ctrl.u64InterceptCtrl & fIntercept); 1802 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1803 Assert(pVmcb); 1804 uint64_t u64Intercepts; 1805 if (!HMGetGuestSvmCtrlIntercepts(pVCpu, &u64Intercepts)) 1806 u64Intercepts = pVmcb->ctrl.u64InterceptCtrl; 1807 return RT_BOOL(u64Intercepts & fIntercept); 1806 1808 } 1807 1809 … … 1819 1821 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1820 1822 return false; 1821 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1822 if (HMHasGuestSvmVmcbCached(pVCpu)) 1823 return HMIsGuestSvmReadCRxInterceptSet(pVCpu, uCr); 1824 return RT_BOOL(pVmcb->ctrl.u16InterceptRdCRx & (UINT16_C(1) << uCr)); 1823 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1824 Assert(pVmcb); 1825 uint16_t u16Intercepts; 1826 if (!HMGetGuestSvmReadCRxIntercepts(pVCpu, &u16Intercepts)) 1827 u16Intercepts = pVmcb->ctrl.u16InterceptRdCRx; 1828 return RT_BOOL(u16Intercepts & (UINT16_C(1) << uCr)); 1825 1829 } 1826 1830 … … 1838 1842 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1839 1843 return false; 1840 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1841 if (HMHasGuestSvmVmcbCached(pVCpu)) 1842 return HMIsGuestSvmWriteCRxInterceptSet(pVCpu, uCr); 1843 return RT_BOOL(pVmcb->ctrl.u16InterceptWrCRx & (UINT16_C(1) << uCr)); 1844 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1845 Assert(pVmcb); 1846 uint16_t u16Intercepts; 1847 if (!HMGetGuestSvmWriteCRxIntercepts(pVCpu, &u16Intercepts)) 1848 u16Intercepts = pVmcb->ctrl.u16InterceptWrCRx; 1849 return RT_BOOL(u16Intercepts & (UINT16_C(1) << uCr)); 1844 1850 } 1845 1851 … … 1857 1863 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1858 1864 return false; 1859 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1860 if (HMHasGuestSvmVmcbCached(pVCpu)) 1861 return HMIsGuestSvmReadDRxInterceptSet(pVCpu, uDr); 1862 return RT_BOOL(pVmcb->ctrl.u16InterceptRdDRx & (UINT16_C(1) << uDr)); 1865 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1866 Assert(pVmcb); 1867 uint16_t u16Intercepts; 1868 if (!HMGetGuestSvmReadDRxIntercepts(pVCpu, &u16Intercepts)) 1869 u16Intercepts = pVmcb->ctrl.u16InterceptRdDRx; 1870 return RT_BOOL(u16Intercepts & (UINT16_C(1) << uDr)); 1863 1871 } 1864 1872 … … 1876 1884 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1877 1885 return false; 1878 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1879 if (HMHasGuestSvmVmcbCached(pVCpu)) 1880 return HMIsGuestSvmWriteDRxInterceptSet(pVCpu, uDr); 1881 return RT_BOOL(pVmcb->ctrl.u16InterceptWrDRx & (UINT16_C(1) << uDr)); 1886 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1887 Assert(pVmcb); 1888 uint16_t u16Intercepts; 1889 if (!HMGetGuestSvmWriteDRxIntercepts(pVCpu, &u16Intercepts)) 1890 u16Intercepts = pVmcb->ctrl.u16InterceptWrDRx; 1891 return RT_BOOL(u16Intercepts & (UINT16_C(1) << uDr)); 1882 1892 } 1883 1893 … … 1892 1902 DECLINLINE(bool) CPUMIsGuestSvmXcptInterceptSet(PCVMCPU pVCpu, PCCPUMCTX pCtx, uint8_t uVector) 1893 1903 { 1894 Assert(uVector < 32);1904 Assert(uVector <= X86_XCPT_LAST); 1895 1905 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1896 1906 return false; 1897 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1898 if (HMHasGuestSvmVmcbCached(pVCpu)) 1899 return HMIsGuestSvmXcptInterceptSet(pVCpu, uVector); 1900 return RT_BOOL(pVmcb->ctrl.u32InterceptXcpt & (UINT32_C(1) << uVector)); 1907 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1908 Assert(pVmcb); 1909 uint32_t u32Intercepts; 1910 if (!HMGetGuestSvmXcptIntercepts(pVCpu, &u32Intercepts)) 1911 u32Intercepts = pVmcb->ctrl.u32InterceptXcpt; 1912 return RT_BOOL(u32Intercepts & RT_BIT(uVector)); 1901 1913 } 1902 1914 … … 1914 1926 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1915 1927 return false; 1916 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1917 if (HMHasGuestSvmVmcbCached(pVCpu)) 1918 return HMIsGuestSvmVirtIntrMasking(pVCpu); 1919 return pVmcb->ctrl.IntCtrl.n.u1VIntrMasking; 1928 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1929 Assert(pVmcb); 1930 bool fVIntrMasking; 1931 if (!HMGetGuestSvmVirtIntrMasking(pVCpu, &fVIntrMasking)) 1932 fVIntrMasking = pVmcb->ctrl.IntCtrl.n.u1VIntrMasking; 1933 return fVIntrMasking; 1920 1934 } 1921 1935 … … 1933 1947 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1934 1948 return false; 1935 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1936 if (HMHasGuestSvmVmcbCached(pVCpu)) 1937 return HMIsGuestSvmNestedPagingEnabled(pVCpu); 1938 return pVmcb->ctrl.NestedPagingCtrl.n.u1NestedPaging; 1949 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1950 Assert(pVmcb); 1951 bool fNestedPaging; 1952 if (!HMGetGuestSvmNestedPaging(pVCpu, &fNestedPaging)) 1953 fNestedPaging = pVmcb->ctrl.NestedPagingCtrl.n.u1NestedPaging; 1954 return fNestedPaging; 1939 1955 } 1940 1956 … … 1952 1968 if (pCtx->hwvirt.enmHwvirt != CPUMHWVIRT_SVM) 1953 1969 return false; 1954 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); Assert(pVmcb); 1955 if (HMHasGuestSvmVmcbCached(pVCpu)) 1956 return HMGetGuestSvmPauseFilterCount(pVCpu); 1957 return pVmcb->ctrl.u16PauseFilterCount; 1970 PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb); 1971 Assert(pVmcb); 1972 uint16_t u16PauseFilterCount; 1973 if (!HMGetGuestSvmPauseFilterCount(pVCpu, &u16PauseFilterCount)) 1974 u16PauseFilterCount = pVmcb->ctrl.u16PauseFilterCount; 1975 return u16PauseFilterCount; 1958 1976 } 1959 1977 -
TabularUnified trunk/include/VBox/vmm/hm.h ¶
r78866 r78869 190 190 * @{ */ 191 191 VMM_INT_DECL(bool) HMIsSvmVGifActive(PVM pVM); 192 VMM_INT_DECL(uint64_t) HMApplySvmNstGstTscOffset(PCVMCPU pVCpu, uint64_t uTicks);193 VMM_INT_DECL(uint64_t) HMRemoveSvmNstGstTscOffset(PCVMCPU pVCpu, uint64_t uTicks);194 192 # ifdef VBOX_WITH_NESTED_HWVIRT_SVM 195 193 VMM_INT_DECL(void) HMNotifySvmNstGstVmexit(PVMCPU pVCpu, PCPUMCTX pCtx); … … 216 214 * @{ */ 217 215 # define HMIsSvmVGifActive(pVM) false 218 # define HMApplySvmNstGstTscOffset(pVCpu, uTicks) (uTicks)219 # define HMRemoveSvmNstGstTscOffset(pVCpu, uTicks) (uTicks)220 216 # define HMNotifySvmNstGstVmexit(pVCpu, pCtx) do { } while (0) 221 217 # define HMIsSubjectToSvmErratum170(puFamily, puModel, puStepping) false -
TabularUnified trunk/include/VBox/vmm/hm_svm.h ¶
r78865 r78869 1160 1160 * @{ 1161 1161 */ 1162 VMM_INT_DECL(bool) HM HasGuestSvmVmcbCached(PCVMCPU pVCpu);1163 VMM_INT_DECL(bool) HM IsGuestSvmCtrlInterceptSet(PCVMCPU pVCpu, uint64_t fIntercept);1164 VMM_INT_DECL(bool) HM IsGuestSvmReadCRxInterceptSet(PCVMCPU pVCpu, uint8_t uCr);1165 VMM_INT_DECL(bool) HM IsGuestSvmWriteCRxInterceptSet(PCVMCPU pVCpu, uint8_t uCr);1166 VMM_INT_DECL(bool) HM IsGuestSvmReadDRxInterceptSet(PCVMCPU pVCpu, uint8_t uDr);1167 VMM_INT_DECL(bool) HM IsGuestSvmWriteDRxInterceptSet(PCVMCPU pVCpu, uint8_t uDr);1168 VMM_INT_DECL(bool) HM IsGuestSvmXcptInterceptSet(PCVMCPU pVCpu, uint8_t uVector);1169 VMM_INT_DECL(bool) HM IsGuestSvmVirtIntrMasking(PCVMCPU pVCpu);1170 VMM_INT_DECL(bool) HM IsGuestSvmNestedPagingEnabled(PCVMCPU pVCpu);1171 VMM_INT_DECL( uint16_t) HMGetGuestSvmPauseFilterCount(PCVMCPU pVCpu);1162 VMM_INT_DECL(bool) HMGetGuestSvmCtrlIntercepts(PCVMCPU pVCpu, uint64_t *pu64Intercepts); 1163 VMM_INT_DECL(bool) HMGetGuestSvmReadCRxIntercepts(PCVMCPU pVCpu, uint16_t *pu16Intercepts); 1164 VMM_INT_DECL(bool) HMGetGuestSvmWriteCRxIntercepts(PCVMCPU pVCpu, uint16_t *pu16Intercepts); 1165 VMM_INT_DECL(bool) HMGetGuestSvmReadDRxIntercepts(PCVMCPU pVCpu, uint16_t *pu16Intercepts); 1166 VMM_INT_DECL(bool) HMGetGuestSvmWriteDRxIntercepts(PCVMCPU pVCpu, uint16_t *pu16Intercepts); 1167 VMM_INT_DECL(bool) HMGetGuestSvmXcptIntercepts(PCVMCPU pVCpu, uint32_t *pu32Intercepts); 1168 VMM_INT_DECL(bool) HMGetGuestSvmVirtIntrMasking(PCVMCPU pVCpu, bool *pfVIntrMasking); 1169 VMM_INT_DECL(bool) HMGetGuestSvmNestedPaging(PCVMCPU pVCpu, bool *pfNestedPagingCtrl); 1170 VMM_INT_DECL(bool) HMGetGuestSvmPauseFilterCount(PCVMCPU pVCpu, uint16_t *pu16PauseFilterCount); 1171 VMM_INT_DECL(bool) HMGetGuestSvmTscOffset(PCVMCPU pVCpu, uint64_t *pu64TscOffset); 1172 1172 /** @} */ 1173 1173
Note:
See TracChangeset
for help on using the changeset viewer.