qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] ppc: initialize GPRs as per epapr


From: Bhushan Bharat-R65777
Subject: Re: [Qemu-devel] [PATCH] ppc: initialize GPRs as per epapr
Date: Fri, 26 Apr 2013 06:51:35 +0000


> -----Original Message-----
> From: Alexander Graf [mailto:address@hidden
> Sent: Friday, April 26, 2013 11:51 AM
> To: Bhushan Bharat-R65777
> Cc: address@hidden; address@hidden; Wood Scott-B07421; Bhushan
> Bharat-R65777; Yoder Stuart-B08248
> Subject: Re: [PATCH] ppc: initialize GPRs as per epapr
> 
> 
> On 26.04.2013, at 08:17, Bharat Bhushan wrote:
> 
> > ePAPR defines the initial values of cpu registers. This patch
> > initialize the GPRs as per ePAPR specification.
> >
> > This resolves the issue of guest reboot/reset (guest hang on reboot).
> 
> Why does it hang only on reboot, not on initial bootup?

may be memory pointed by env pointer are zero initialized initially.
Reboot also not always hangs. I have seen reboot mostly working on 
e500v2/e500mc and mostly hanging on e5500.

> 
> >
> > Signed-off-by: Bharat Bhushan <address@hidden>
> > Signed-off-by: Stuart Yoder <address@hidden>
> > ---
> > hw/ppc/e500.c |    7 +++++++
> > 1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index c1bdb6b..a47f976
> > 100644
> > --- a/hw/ppc/e500.c
> > +++ b/hw/ppc/e500.c
> > @@ -37,6 +37,7 @@
> > #include "qemu/host-utils.h"
> > #include "hw/pci-host/ppce500.h"
> >
> > +#define EPAPR_MAGIC                (0x45504150)
> > #define BINARY_DEVICE_TREE_FILE    "mpc8544ds.dtb"
> > #define UIMAGE_LOAD_BASE           0
> > #define DTC_LOAD_PAD               0x1800000
> > @@ -444,6 +445,12 @@ static void ppce500_cpu_reset(void *opaque)
> 
> Does ePAPR mention anything wrt GPR state of secondary CPUs?

Yes, I think we handle this in hw/ppc/ppce500_spin.c

> 
> >     cs->halted = 0;
> >     env->gpr[1] = (16<<20) - 8;
> >     env->gpr[3] = bi->dt_base;
> > +    env->gpr[4] = 0;
> > +    env->gpr[5] = 0;
> > +    env->gpr[6] = EPAPR_MAGIC;
> > +    env->gpr[7] = (64 * 1024 * 1024);
> 
> What is this?

Size of initial TLB ( should be big enough to cover kernel handler). I do not 
see ePAPR defines any value, I set this to 64M.

-Bharat

> 
> 
> Alex
> 
> > +    env->gpr[8] = 0;
> > +    env->gpr[9] = 0;
> >     env->nip = bi->entry;
> >     mmubooke_create_initial_mapping(env);
> > }
> > --
> > 1.7.0.4
> >
> >
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]