From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arun Sharma Subject: Re: VMX check in /xen/arch/x86/domain.c is invalid on x86-64 (at least AMD) Date: Wed, 11 May 2005 22:47:47 -0700 Message-ID: <4282EE03.9080700@intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jerone Young Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Jerone Young wrote: > if (!(c->flags & ECF_VMX_GUEST)) > if ( ((c->cpu_ctxt.cs & 3) == 0) || > ((c->cpu_ctxt.ss & 3) == 0) ) > return -EINVAL; > > This check in /xen/arch/x86/domain.c (line 394) is invalid for AMD > x86-64 as this field 1<<1 is a reserved field in the rflags (name for > 64bit eflags) that reads as 1. This can be found in the AMD x86-64 > Programming manual vol 2 on page 65. Below is the code, I'm not sure how > to put an ifdef around since I'm not sure if Intel's EMT64 with VMX cpus > have the same rflag reserved (which if this check is correct they do)? > This helps break x86-64 building domU domains. > It is a reserved bit on Intel as well. Look at: VMCS_EFLAGS_RESERVED_1 and the IA-32 vol1 Fig 3-7. Are you mixing up ctxt->user_regs.rflags and ctxt->flags in xc_linux_build.c? -Arun