- Timestamp:
- May 4, 2012 3:45:28 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hwacc_vmx.h
r40559 r41173 636 636 * @{ 637 637 */ 638 #define MSR_IA32_VMX_EPT_CAPS_RWX_X_ONLY RT_BIT_64(0) 639 #define MSR_IA32_VMX_EPT_CAPS_RWX_W_ONLY RT_BIT_64(1) 640 #define MSR_IA32_VMX_EPT_CAPS_RWX_WX_ONLY RT_BIT_64(2) 641 #define MSR_IA32_VMX_EPT_CAPS_GAW_21_BITS RT_BIT_64(3) 642 #define MSR_IA32_VMX_EPT_CAPS_GAW_30_BITS RT_BIT_64(4) 643 #define MSR_IA32_VMX_EPT_CAPS_GAW_39_BITS RT_BIT_64(5) 644 #define MSR_IA32_VMX_EPT_CAPS_GAW_48_BITS RT_BIT_64(6) 645 #define MSR_IA32_VMX_EPT_CAPS_GAW_57_BITS RT_BIT_64(7) 646 #define MSR_IA32_VMX_EPT_CAPS_EMT_UC RT_BIT_64(8) 647 #define MSR_IA32_VMX_EPT_CAPS_EMT_WC RT_BIT_64(9) 648 #define MSR_IA32_VMX_EPT_CAPS_EMT_WT RT_BIT_64(12) 649 #define MSR_IA32_VMX_EPT_CAPS_EMT_WP RT_BIT_64(13) 650 #define MSR_IA32_VMX_EPT_CAPS_EMT_WB RT_BIT_64(14) 651 #define MSR_IA32_VMX_EPT_CAPS_SP_21_BITS RT_BIT_64(16) 652 #define MSR_IA32_VMX_EPT_CAPS_SP_30_BITS RT_BIT_64(17) 653 #define MSR_IA32_VMX_EPT_CAPS_SP_39_BITS RT_BIT_64(18) 654 #define MSR_IA32_VMX_EPT_CAPS_SP_48_BITS RT_BIT_64(19) 655 #define MSR_IA32_VMX_EPT_CAPS_INVEPT RT_BIT_64(20) 656 #define MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_INDIV RT_BIT_64(24) 657 #define MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_CONTEXT RT_BIT_64(25) 658 #define MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ALL RT_BIT_64(26) 659 #define MSR_IA32_VMX_EPT_CAPS_INVVPID RT_BIT_64(32) 660 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV RT_BIT_64(40) 661 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_CONTEXT RT_BIT_64(41) 662 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ALL RT_BIT_64(42) 663 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_CONTEXT_GLOBAL RT_BIT_64(43) 638 #define MSR_IA32_VMX_EPT_CAPS_RWX_X_ONLY RT_BIT_64(0) 639 #define MSR_IA32_VMX_EPT_CAPS_RWX_W_ONLY RT_BIT_64(1) 640 #define MSR_IA32_VMX_EPT_CAPS_RWX_WX_ONLY RT_BIT_64(2) 641 #define MSR_IA32_VMX_EPT_CAPS_GAW_21_BITS RT_BIT_64(3) 642 #define MSR_IA32_VMX_EPT_CAPS_GAW_30_BITS RT_BIT_64(4) 643 #define MSR_IA32_VMX_EPT_CAPS_GAW_39_BITS RT_BIT_64(5) 644 #define MSR_IA32_VMX_EPT_CAPS_GAW_48_BITS RT_BIT_64(6) 645 #define MSR_IA32_VMX_EPT_CAPS_GAW_57_BITS RT_BIT_64(7) 646 #define MSR_IA32_VMX_EPT_CAPS_EMT_UC RT_BIT_64(8) 647 #define MSR_IA32_VMX_EPT_CAPS_EMT_WC RT_BIT_64(9) 648 #define MSR_IA32_VMX_EPT_CAPS_EMT_WT RT_BIT_64(12) 649 #define MSR_IA32_VMX_EPT_CAPS_EMT_WP RT_BIT_64(13) 650 #define MSR_IA32_VMX_EPT_CAPS_EMT_WB RT_BIT_64(14) 651 #define MSR_IA32_VMX_EPT_CAPS_SP_21_BITS RT_BIT_64(16) 652 #define MSR_IA32_VMX_EPT_CAPS_SP_30_BITS RT_BIT_64(17) 653 #define MSR_IA32_VMX_EPT_CAPS_SP_39_BITS RT_BIT_64(18) 654 #define MSR_IA32_VMX_EPT_CAPS_SP_48_BITS RT_BIT_64(19) 655 #define MSR_IA32_VMX_EPT_CAPS_INVEPT RT_BIT_64(20) 656 #define MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_SINGLE_CONTEXT RT_BIT_64(25) 657 #define MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ALL_CONTEXTS RT_BIT_64(26) 658 #define MSR_IA32_VMX_EPT_CAPS_INVVPID RT_BIT_64(32) 659 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV_ADDR RT_BIT_64(40) 660 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT RT_BIT_64(41) 661 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ALL_CONTEXTS RT_BIT_64(42) 662 #define MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT_RETAIN_GLOBALS RT_BIT_64(43) 664 663 665 664 /** @} */ -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r41098 r41173 642 642 643 643 /* If the capabilities specify we can do more, then make use of it. */ 644 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_INDIV) 645 pVM->hwaccm.s.vmx.enmFlushPage = VMX_FLUSH_PAGE; 646 else 647 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_CONTEXT) 644 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_SINGLE_CONTEXT) 648 645 pVM->hwaccm.s.vmx.enmFlushPage = VMX_FLUSH_SINGLE_CONTEXT; 649 646 650 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ CONTEXT)647 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_SINGLE_CONTEXT) 651 648 pVM->hwaccm.s.vmx.enmFlushContext = VMX_FLUSH_SINGLE_CONTEXT; 652 649 } … … 662 659 663 660 /* If the capabilities specify we can do more, then make use of it. */ 664 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV )661 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV_ADDR) 665 662 pVM->hwaccm.s.vmx.enmFlushPage = VMX_FLUSH_PAGE; 666 663 else 667 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ CONTEXT)664 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT) 668 665 pVM->hwaccm.s.vmx.enmFlushPage = VMX_FLUSH_SINGLE_CONTEXT; 669 666 670 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ CONTEXT)667 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT) 671 668 pVM->hwaccm.s.vmx.enmFlushContext = VMX_FLUSH_SINGLE_CONTEXT; 672 669 } -
trunk/src/VBox/VMM/VMMR3/HWACCM.cpp
r40656 r41173 1060 1060 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT) 1061 1061 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVEPT\n")); 1062 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_INDIV) 1063 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_INDIV\n")); 1064 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_CONTEXT) 1065 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_CONTEXT\n")); 1066 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ALL) 1067 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ALL\n")); 1062 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_SINGLE_CONTEXT) 1063 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_SINGLE_CONTEXT\n")); 1064 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ALL_CONTEXTS) 1065 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVEPT_CAPS_ALL_CONTEXTS\n")); 1068 1066 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID) 1069 1067 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID\n")); 1070 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV )1071 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV \n"));1072 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ CONTEXT)1073 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ CONTEXT\n"));1074 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ALL )1075 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ALL \n"));1076 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ CONTEXT_GLOBAL)1077 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ CONTEXT_GLOBAL\n"));1068 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV_ADDR) 1069 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_INDIV_ADDR\n")); 1070 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT) 1071 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT\n")); 1072 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ALL_CONTEXTS) 1073 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_ALL_CONTEXTS\n")); 1074 if (pVM->hwaccm.s.vmx.msr.vmx_eptcaps & MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT_RETAIN_GLOBALS) 1075 LogRel(("HWACCM: MSR_IA32_VMX_EPT_CAPS_INVVPID_CAPS_SINGLE_CONTEXT_RETAIN_GLOBALS\n")); 1078 1076 } 1079 1077
Note:
See TracChangeset
for help on using the changeset viewer.