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

Re: [Xen-devel] [PATCH v4 2/9] xen/arm: Add more registers for saving and restoring vcpu registers



> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxx [mailto:xen-devel-
> bounces@xxxxxxxxxxxxx] On Behalf Of Ian Campbell
> Sent: Thursday, October 10, 2013 7:41 PM
> To: Jaeyong Yoo
> Cc: Tim Deegan; xen-devel@xxxxxxxxxxxxx
> Subject: Re: [Xen-devel] [PATCH v4 2/9] xen/arm: Add more registers for
> saving and restoring vcpu registers
> 
> On Fri, 2013-10-04 at 13:43 +0900, Jaeyong Yoo wrote:
> > diff --git a/xen/include/public/arch-arm.h
> > b/xen/include/public/arch-arm.h index 5d359af..bf6dc9a 100644
> > --- a/xen/include/public/arch-arm.h
> > +++ b/xen/include/public/arch-arm.h
> > @@ -253,6 +253,41 @@ struct vcpu_guest_context {
> >
> >      uint32_t sctlr, ttbcr;
> >      uint64_t ttbr0, ttbr1;
> > +    uint32_t ifar, dfar;
> > +    uint32_t ifsr, dfsr;
> > +    uint32_t dacr;
> > +    uint64_t par;
> > +
> > +#ifdef CONFIG_ARM_32
> 
> I'm afraid a per arch ifdef isn't allowed in the include/public tree.
> The interface should be identical for both 32 and 64 bit callers. Also
> think of 32-on-64 guests etc.
> 
> Also, this struct is guest facing (via VCPUOP_initialise) but many/all of
> these new registers are not things which a guest needs to specify via a
> hypercall. IOW I think many of them should be part of some toolstack
> private save/restore interface.

I see, the guest can specify something like sctlr, and ttbr/ttbcr, and the
others
should be hidden inside hvm save/restore. 

> 
> I think x86 has a hvm_hw_cpu struct, which I think seems more appropriate.
> Tim, what do you think?
> 
> > +    uint32_t mair0, mair1;
> > +    uint32_t tpidr_el0;
> > +    uint32_t tpidr_el1;
> > +    uint32_t tpidrro_el0;
> > +    uint32_t vbar;
> > +#else
> > +    uint64_t mair;
> > +    uint64_t tpidr_el0;
> > +    uint64_t tpidr_el1;
> > +    uint64_t tpidrro_el0;
> > +    uint64_t vbar;
> > +#endif
> > +
> > +    /* Control Registers */
> > +    uint32_t actlr;
> > +    uint32_t cpacr;
> > +
> > +    uint32_t afsr0, afsr1;
> > +
> > +    uint32_t contextidr;
> > +
> > +    uint32_t teecr, teehbr; /* ThumbEE, 32-bit guests only */
> > +
> > +#ifdef CONFIG_ARM_32
> > +    uint32_t joscr, jmcr;
> > +#endif
> > +
> > +    /* CP 15 */
> > +    uint32_t csselr;
> >  };
> >  typedef struct vcpu_guest_context vcpu_guest_context_t;
> > DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel


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