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?

> 
> Signed-off-by: Bharat Bhushan <bharat.bhus...@freescale.com>
> Signed-off-by: Stuart Yoder <stuart.yo...@freescale.com>
> ---
> 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?

>     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?


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