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

Re: [Xen-devel] [PATCH] arm: restore ELR_hyp and SPSR_hyp on return from hypervisor to hypervisor.



On Tue, 2012-02-21 at 10:53 +0000, Stefano Stabellini wrote:
> On Mon, 20 Feb 2012, Ian Campbell wrote:
> > On Mon, 2012-02-20 at 15:22 +0000, Ian Campbell wrote:
> > > This is necessary to handle nested traps to the hypervisor more than one 
> > > deep.
> > 
> > A sort of corollary to this patch is the following.
> > 
> > The situation with the LR register when in hyp mode is a bit odd, since
> > this is normally a banked register but for hyp mode it actually accesses
> > LR_usr instead.
> > 
> > However, although I think the following is correct I'm not sure if it is
> > useful to combine LR_usr and LR like this -- in particular I fear it
> > might be more confusing than helpful. Making the return-to-user case a
> > proper superset of return-to-hypervisor (as is the case on the save
> > path) is nice though.
> > 
> > What do people think?
> 
> I am OK with this.

Is that an Acked-by?

> 
> > 8<---------------------------------------------------------------
> > 
> > >From 3132c2976ae4c83d6d9b94ad80ee04c4880f13da Mon Sep 17 00:00:00 2001
> > From: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > Date: Mon, 20 Feb 2012 15:07:09 +0000
> > Subject: [PATCH] arm: lr register in hyp mode is really LR_usr.
> > 
> > Save and restore it in the same way for both hypervisor and user stack 
> > frames
> > rather than saving both individually in the user stack frame.
> > 
> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > ---
> >  xen/arch/arm/entry.S          |   14 ++------------
> >  xen/include/public/arch-arm.h |   15 ++++++++++++---
> >  2 files changed, 14 insertions(+), 15 deletions(-)
> > 
> > diff --git a/xen/arch/arm/entry.S b/xen/arch/arm/entry.S
> > index 36f1119..0e85c3c 100644
> > --- a/xen/arch/arm/entry.S
> > +++ b/xen/arch/arm/entry.S
> > @@ -29,8 +29,6 @@
> >     blne save_guest_regs
> >  
> >  save_guest_regs:
> > -   ldr r11, [sp, #UREGS_lr]
> > -   str r11, [sp, #UREGS_LR_usr]
> >     ldr r11, =0xffffffff  /* Clobber SP which is only valid for hypervisor 
> > frames. */
> >     str r11, [sp, #UREGS_sp]
> 
> It would be nice to have a comment here saying "no need to save LR again
> because LR_usr and LR are the same physical register"

I'll add something next to both the save and restore of SP_usr saying
why LR_usr isn't also saved/restored there.


_______________________________________________
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®.