[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/3] xen: Add instruction length parameter in function hvm_inject_exception



> -----Original Message-----
> From: Keir Fraser [mailto:keir.xen@xxxxxxxxx] On Behalf Of Keir Fraser
> Sent: Friday, May 25, 2012 4:53 PM
> To: Hao, Xudong; JBeulich@xxxxxxxx
> Cc: xen-devel@xxxxxxxxxxxxx; Dong, Eddie; Aravindh Puthiyaparambil; Ian
> Jackson; Zhang, Xiantao
> Subject: Re: [PATCH 1/3] xen: Add instruction length parameter in function
> hvm_inject_exception
> 
> On 24/05/2012 20:06, "Xudong Hao" <xudong.hao@xxxxxxxxx> wrote:
> 
> > VMX exception: Pass the instruction length field down to exception
> emulation,
> > by changing hypercall parameter and adding a parameter in fucntion
> > hvm_inject_exception(), so that exception emulation can set correct
> > instruction length.
> >
> > Signed-off-by: Xudong Hao <xudong.hao@xxxxxxxxx>
> > Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
> 
> I don't like adding yet another parameter for all callers, especially as we
> should also be passing down the event type (sw interrupt, hw exception, ...)
> and that would bloat the parameter list further.
> 
> I attach a cleanup patch which packs everything into a new struct and
> renames hvm_inject_exception to hvm_inject_trap. I then define a couple of
> wrappers around that function for existing callers, so that their parameter
> lists actually *shrink*.
> 
> Let me know what you think. If it looks acceptable I can check it in and we
> can build on top of this restructuring. The aim being to keep
> hvm/vmx_inject_trap dumb, and push down the knowledge from the callers
> into
> it.

Hi, Keir

This patch is fine to me, just one small comments: the note below the 
hvm_inject_hw_exception(TRAP*) should change to hvm_inject_hw_exception from 
hvm_inject_exception.

--- a/xen/arch/x86/hvm/svm/nestedsvm.c  Fri May 25 08:21:25 2012 +0100
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c  Fri May 25 09:45:00 2012 +0100
@@ -735,7 +735,7 @@ nsvm_vcpu_vmrun(struct vcpu *v, struct c
     default:
         gdprintk(XENLOG_ERR,
             "nsvm_vcpu_vmentry failed, injecting #UD\n");
-        hvm_inject_exception(TRAP_invalid_op, HVM_DELIVER_NO_ERROR_CODE, 0);
+        hvm_inject_hw_exception(TRAP_invalid_op, HVM_DELIVER_NO_ERROR_CODE);
         /* Must happen after hvm_inject_exception or it doesn't work right. */

And I'll add instruction length represented in 'struct hvm_trap', and correct 
the _trap.type in new function vmx_inject_trap() based on the restructuring.

> 
>  -- Keir


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.