Changeset 72850 in vbox
- Timestamp:
- Jul 4, 2018 5:33:06 AM (6 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r72849 r72850 86 86 * are used. Maybe later this can be extended (i.e. Nested Virtualization). 87 87 */ 88 #define HMVMX_VMCS_STATE_CLEAR RT_BIT(0)89 #define HMVMX_VMCS_STATE_ACTIVE RT_BIT(1)90 #define HMVMX_VMCS_STATE_LAUNCHED RT_BIT(2)88 #define HMVMX_VMCS_STATE_CLEAR RT_BIT(0) 89 #define HMVMX_VMCS_STATE_ACTIVE RT_BIT(1) 90 #define HMVMX_VMCS_STATE_LAUNCHED RT_BIT(2) 91 91 92 92 /** … … 98 98 * MSR which cannot be modified by the guest without causing a VM-exit. 99 99 */ 100 #define HMVMX_CPUMCTX_EXTRN_ALL ( CPUMCTX_EXTRN_RIP \101 | CPUMCTX_EXTRN_RFLAGS \102 | CPUMCTX_EXTRN_RSP \103 | CPUMCTX_EXTRN_SREG_MASK \104 | CPUMCTX_EXTRN_TABLE_MASK \105 | CPUMCTX_EXTRN_KERNEL_GS_BASE \106 | CPUMCTX_EXTRN_SYSCALL_MSRS \107 | CPUMCTX_EXTRN_SYSENTER_MSRS \108 | CPUMCTX_EXTRN_TSC_AUX \109 | CPUMCTX_EXTRN_OTHER_MSRS \110 | CPUMCTX_EXTRN_CR0 \111 | CPUMCTX_EXTRN_CR3 \112 | CPUMCTX_EXTRN_CR4 \113 | CPUMCTX_EXTRN_DR7 \114 | CPUMCTX_EXTRN_HM_VMX_MASK)100 #define HMVMX_CPUMCTX_EXTRN_ALL ( CPUMCTX_EXTRN_RIP \ 101 | CPUMCTX_EXTRN_RFLAGS \ 102 | CPUMCTX_EXTRN_RSP \ 103 | CPUMCTX_EXTRN_SREG_MASK \ 104 | CPUMCTX_EXTRN_TABLE_MASK \ 105 | CPUMCTX_EXTRN_KERNEL_GS_BASE \ 106 | CPUMCTX_EXTRN_SYSCALL_MSRS \ 107 | CPUMCTX_EXTRN_SYSENTER_MSRS \ 108 | CPUMCTX_EXTRN_TSC_AUX \ 109 | CPUMCTX_EXTRN_OTHER_MSRS \ 110 | CPUMCTX_EXTRN_CR0 \ 111 | CPUMCTX_EXTRN_CR3 \ 112 | CPUMCTX_EXTRN_CR4 \ 113 | CPUMCTX_EXTRN_DR7 \ 114 | CPUMCTX_EXTRN_HM_VMX_MASK) 115 115 116 116 /** … … 131 131 | RT_BIT(X86_XCPT_XF)) 132 132 133 /**134 * Exception bitmap mask for all contributory exceptions.135 *136 * Page fault is deliberately excluded here as it's conditional as to whether137 * it's contributory or benign. Page faults are handled separately.138 */139 #define HMVMX_CONTRIBUTORY_XCPT_MASK ( RT_BIT(X86_XCPT_GP) | RT_BIT(X86_XCPT_NP) | RT_BIT(X86_XCPT_SS) | RT_BIT(X86_XCPT_TS) \140 | RT_BIT(X86_XCPT_DE))141 142 133 /** Maximum VM-instruction error number. */ 143 #define HMVMX_INSTR_ERROR_MAX 28134 #define HMVMX_INSTR_ERROR_MAX 28 144 135 145 136 /** Profiling macro. */ … … 153 144 154 145 /** Assert that preemption is disabled or covered by thread-context hooks. */ 155 #define HMVMX_ASSERT_PREEMPT_SAFE() Assert( VMMR0ThreadCtxHookIsEnabled(pVCpu) \156 || !RTThreadPreemptIsEnabled(NIL_RTTHREAD))146 #define HMVMX_ASSERT_PREEMPT_SAFE() Assert( VMMR0ThreadCtxHookIsEnabled(pVCpu) \ 147 || !RTThreadPreemptIsEnabled(NIL_RTTHREAD)) 157 148 158 149 /** Assert that we haven't migrated CPUs when thread-context hooks are not 159 150 * used. */ 160 #define HMVMX_ASSERT_CPU_SAFE() AssertMsg( VMMR0ThreadCtxHookIsEnabled(pVCpu) \161 || pVCpu->hm.s.idEnteredCpu == RTMpCpuId(), \162 ("Illegal migration! Entered on CPU %u Current %u\n", \163 pVCpu->hm.s.idEnteredCpu, RTMpCpuId()))151 #define HMVMX_ASSERT_CPU_SAFE() AssertMsg( VMMR0ThreadCtxHookIsEnabled(pVCpu) \ 152 || pVCpu->hm.s.idEnteredCpu == RTMpCpuId(), \ 153 ("Illegal migration! Entered on CPU %u Current %u\n", \ 154 pVCpu->hm.s.idEnteredCpu, RTMpCpuId())) 164 155 165 156 /** Asserts that the given CPUMCTX_EXTRN_XXX bits are present in the guest-CPU 166 157 * context. */ 167 #define HMVMX_CPUMCTX_ASSERT(pVCpu, fExtrnMbz) AssertMsg(!((pVCpu)->cpum.GstCtx.fExtrn & (fExtrnMbz)), \ 168 ("fExtrn=%#RX64 fExtrnMbz=%#RX64\n", (pVCpu)->cpum.GstCtx.fExtrn, \ 169 (fExtrnMbz))) 158 #define HMVMX_CPUMCTX_ASSERT(a_pVCpu, a_fExtrnMbz) AssertMsg(!((a_pVCpu)->cpum.GstCtx.fExtrn & (a_fExtrnMbz)), \ 159 ("fExtrn=%#RX64 fExtrnMbz=%#RX64\n", \ 160 (a_pVCpu)->cpum.GstCtx.fExtrn, (a_fExtrnMbz))) 161 170 162 171 163 /** Helper macro for VM-exit handlers called unexpectedly. */
Note:
See TracChangeset
for help on using the changeset viewer.

