|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] VMX: disable SMEP feature when guest is in non-paging mode
At 17:26 +0800 on 30 Jan (1359566815), dongxiao.xu@xxxxxxxxx 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.
Cheers,
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |