From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH] VMX: disable SMEP feature when guest is in non-paging mode Date: Wed, 30 Jan 2013 10:26:45 -0800 Message-ID: References: <20130130175435.GA65291@ocelot.phlegethon.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20130130175435.GA65291@ocelot.phlegethon.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Tim Deegan , dongxiao.xu@intel.com Cc: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 30/01/2013 09:54, "Tim Deegan" wrote: > At 17:26 +0800 on 30 Jan (1359566815), dongxiao.xu@intel.com wrote: >> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c >> index 4d7c93f..6347f66 100644 >> --- a/xen/arch/x86/hvm/vmx/vmx.c >> +++ b/xen/arch/x86/hvm/vmx/vmx.c >> @@ -1167,6 +1167,14 @@ static void vmx_update_guest_cr(struct vcpu *v, >> unsigned int cr) >> { >> v->arch.hvm_vcpu.hw_cr[4] |= X86_CR4_PSE; >> v->arch.hvm_vcpu.hw_cr[4] &= ~X86_CR4_PAE; >> + /* >> + * SMEP is disabled if CPU is in non-paging mode in hardware. >> + * However Xen always uses paging mode to emulate guest >> non-paging >> + * mode with HAP. >> + * To emulate this behavior, SMEP needs to be manually disabled >> when >> + * guest switches to non-paging mode. >> + */ >> + v->arch.hvm_vcpu.hw_cr[4] &= ~X86_CR4_SMEP; > > Shouldn't this be handled on CR0 writes as well as CR4? The SMEP bit of > hw_cr[4] ought to be cleared and set whenever CR0_PG is changed. That's what I would expect too. -- Keir > Cheers, > > Tim. > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel