From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongxiao Xu Subject: [PATCH 1/9] nested vmx: enable Monitor Trap Flag for L1 VMM Date: Wed, 28 Nov 2012 15:11:56 +0800 Message-ID: <1354086724-1959-2-git-send-email-dongxiao.xu@intel.com> References: <1354086724-1959-1-git-send-email-dongxiao.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1354086724-1959-1-git-send-email-dongxiao.xu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Signed-off-by: Dongxiao Xu --- xen/arch/x86/hvm/vmx/vvmx.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 4f6c712..c953278 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1259,7 +1259,7 @@ int nvmx_msr_read_intercept(unsigned int msr, u64 *msr_content) break; case MSR_IA32_VMX_PROCBASED_CTLS: /* 1-seetings */ - data = (CPU_BASED_HLT_EXITING | + data = CPU_BASED_HLT_EXITING | CPU_BASED_VIRTUAL_INTR_PENDING | CPU_BASED_CR8_LOAD_EXITING | CPU_BASED_CR8_STORE_EXITING | @@ -1272,7 +1272,8 @@ int nvmx_msr_read_intercept(unsigned int msr, u64 *msr_content) CPU_BASED_ACTIVATE_IO_BITMAP | CPU_BASED_USE_TSC_OFFSETING | CPU_BASED_UNCOND_IO_EXITING | - CPU_BASED_RDTSC_EXITING); + CPU_BASED_RDTSC_EXITING | + CPU_BASED_MONITOR_TRAP_FLAG; /* bit 1, 4-6,8,13-16,26 must be 1 (refer G4 of SDM) */ tmp = ( (1<<26) | (0xf << 13) | 0x100 | (0x7 << 4) | 0x2); /* 0-settings */ @@ -1475,6 +1476,11 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, if ( ctrl & CPU_BASED_VIRTUAL_NMI_PENDING ) nvcpu->nv_vmexit_pending = 1; break; + case EXIT_REASON_MONITOR_TRAP_FLAG: + ctrl = __n2_exec_control(v); + if ( ctrl & CPU_BASED_MONITOR_TRAP_FLAG) + nvcpu->nv_vmexit_pending = 1; + break; /* L1 has priority handling several other types of exits */ case EXIT_REASON_HLT: ctrl = __n2_exec_control(v); -- 1.7.1