Patchwork pseries: Fix breakage in CPU QOM conversion

login
register
mail settings
Submitter David Gibson
Date March 15, 2013, 3:59 a.m.
Message ID <1363319969-23517-1-git-send-email-david@gibson.dropbear.id.au>
Download mbox | patch
Permalink /patch/227844/
State New
Headers show

Comments

David Gibson - March 15, 2013, 3:59 a.m.
Commit 259186a7d2f7184efc96ae99bc5658e6159f53ad "cpu: Move halted and
interrupt_request fields to CPUState" broke the pseries machine.  That's
because it uses CPU() instead of ENV_GET_CPU() to convert from the global
first_cpu pointer (still a CPUArchState) to a CPUState.  This patch fixes
the breakage.

Cc: Andreas Färber <afaerber@suse.de>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Alexander Graf - March 15, 2013, 12:39 p.m.
On 15.03.2013, at 04:59, David Gibson wrote:

> Commit 259186a7d2f7184efc96ae99bc5658e6159f53ad "cpu: Move halted and
> interrupt_request fields to CPUState" broke the pseries machine.  That's
> because it uses CPU() instead of ENV_GET_CPU() to convert from the global
> first_cpu pointer (still a CPUArchState) to a CPUState.  This patch fixes
> the breakage.
> 
> Cc: Andreas Färber <afaerber@suse.de>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

Thanks, applied to ppc-next.

Alex

> ---
> hw/ppc/spapr.c |    2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 0c51d04..b776d34 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -645,7 +645,7 @@ static void ppc_spapr_reset(void)
>                        spapr->rtas_size);
> 
>     /* Set up the entry state */
> -    first_cpu_cpu = CPU(first_cpu);
> +    first_cpu_cpu = ENV_GET_CPU(first_cpu);
>     first_cpu->gpr[3] = spapr->fdt_addr;
>     first_cpu->gpr[5] = 0;
>     first_cpu_cpu->halted = 0;
> -- 
> 1.7.10.4
>
Andreas Färber - March 15, 2013, 5:29 p.m.
Am 15.03.2013 04:59, schrieb David Gibson:
> Commit 259186a7d2f7184efc96ae99bc5658e6159f53ad "cpu: Move halted and
> interrupt_request fields to CPUState" broke the pseries machine.  That's
> because it uses CPU() instead of ENV_GET_CPU() to convert from the global
> first_cpu pointer (still a CPUArchState) to a CPUState.  This patch fixes
> the breakage.
> 
> Cc: Andreas Färber <afaerber@suse.de>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
>  hw/ppc/spapr.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 0c51d04..b776d34 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -645,7 +645,7 @@ static void ppc_spapr_reset(void)
>                         spapr->rtas_size);
>  
>      /* Set up the entry state */
> -    first_cpu_cpu = CPU(first_cpu);
> +    first_cpu_cpu = ENV_GET_CPU(first_cpu);
>      first_cpu->gpr[3] = spapr->fdt_addr;
>      first_cpu->gpr[5] = 0;
>      first_cpu_cpu->halted = 0;

Oops,

Acked-by: Andreas Färber <afaerber@suse.de>

Did you check the commit if there's more instances of that bug?

Andreas
David Gibson - March 16, 2013, 9:11 a.m.
On Fri, Mar 15, 2013 at 06:29:50PM +0100, Andreas Färber wrote:
> Am 15.03.2013 04:59, schrieb David Gibson:
> > Commit 259186a7d2f7184efc96ae99bc5658e6159f53ad "cpu: Move halted and
> > interrupt_request fields to CPUState" broke the pseries machine.  That's
> > because it uses CPU() instead of ENV_GET_CPU() to convert from the global
> > first_cpu pointer (still a CPUArchState) to a CPUState.  This patch fixes
> > the breakage.
> > 
> > Cc: Andreas Färber <afaerber@suse.de>
> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> > ---
> >  hw/ppc/spapr.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index 0c51d04..b776d34 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -645,7 +645,7 @@ static void ppc_spapr_reset(void)
> >                         spapr->rtas_size);
> >  
> >      /* Set up the entry state */
> > -    first_cpu_cpu = CPU(first_cpu);
> > +    first_cpu_cpu = ENV_GET_CPU(first_cpu);
> >      first_cpu->gpr[3] = spapr->fdt_addr;
> >      first_cpu->gpr[5] = 0;
> >      first_cpu_cpu->halted = 0;
> 
> Oops,
> 
> Acked-by: Andreas Färber <afaerber@suse.de>
> 
> Did you check the commit if there's more instances of that bug?

I did not; sorry.

Patch

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 0c51d04..b776d34 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -645,7 +645,7 @@  static void ppc_spapr_reset(void)
                        spapr->rtas_size);
 
     /* Set up the entry state */
-    first_cpu_cpu = CPU(first_cpu);
+    first_cpu_cpu = ENV_GET_CPU(first_cpu);
     first_cpu->gpr[3] = spapr->fdt_addr;
     first_cpu->gpr[5] = 0;
     first_cpu_cpu->halted = 0;