From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mukesh Rathor Subject: Re: RFC: PVH set vcpu info context in vmcs.... Date: Wed, 14 Aug 2013 18:58:21 -0700 Message-ID: <20130814185821.739aa30c@mantra.us.oracle.com> References: <20130812184513.56188d29@mantra.us.oracle.com> <520A2D0402000078000EB7E7@nat28.tlf.novell.com> <20130813191203.0e2e0d5f@mantra.us.oracle.com> <520B661202000078000EBC88@nat28.tlf.novell.com> <20130814172515.11fb949a@mantra.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1V9mpZ-0004lN-G3 for xen-devel@lists.xenproject.org; Thu, 15 Aug 2013 01:58:29 +0000 In-Reply-To: <20130814172515.11fb949a@mantra.us.oracle.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: Jan Beulich Cc: xen-devel , Keir Fraser , Tim Deegan List-Id: xen-devel@lists.xenproject.org On Wed, 14 Aug 2013 17:25:15 -0700 Mukesh Rathor wrote: > On Wed, 14 Aug 2013 10:12:18 +0100 > "Jan Beulich" wrote: ....... > int vmx_pvh_set_vcpu_info(struct vcpu *v, struct vcpu_guest_context > *ctxtp) { > int rc; > > if ( !(ctxtp->flags & VGCF_in_kernel) ) > return -EINVAL; > > if ( ctxtp->ldt_base || ctxtp->ldt_ents || > ctxtp->user_regs.ss || ctxtp->user_regs.es || > ctxtp->user_regs.ds || ctxtp->user_regs.fs || ctxtp->user_regs.gs ) > return -EINVAL; > > if ( ctxtp->user_regs.cs == 0 || (ctxtp->user_regs.cs & 7) ) > return -EINVAL; > > vmx_vmcs_enter(v); > __vmwrite(GUEST_GDTR_BASE, ctxtp->gdt.pvh.addr); > __vmwrite(GUEST_GDTR_LIMIT, ctxtp->gdt.pvh.limit); > > /* IA-32e: ss/es/ds are ignored. */ > if ( (rc = hvm_load_segment_selector(v, x86_seg_cs, > ctxtp->user_regs.cs)) ) goto out; > > __vmwrite(GUEST_FS_BASE, ctxtp->fs_base); > __vmwrite(GUEST_GS_BASE, ctxtp->gs_base_kernel); > > if ( (rc = vmx_add_guest_msr(MSR_SHADOW_GS_BASE)) ) > goto out; > vmx_write_guest_msr(MSR_SHADOW_GS_BASE, ctxtp->gs_base_user); > Jan, Thinking about this more, I realized we are unnecessarily creating a vmcs intercept for gs_base_user. How about we not allow that either? thanks mukesh