diff mbox

[2/4] e500: Use cpu_index instead of vcpu_dt_id

Message ID 31205fa54bd9761aee5fb3a6724c98f7e9e86240.1501740002.git.sam.bobroff@au1.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sam Bobroff Aug. 3, 2017, 6:28 a.m. UTC
The e500 platform code uses the function ppc_get_vcpu_dt_id() but that
function is actually specific to SPAPR machines, not PPC CPUs, and
will always return the cpu_index in this context.

Simply use the cpu_index instead (which is 'i' in this context
because qemu_get_cpu(i) returns the cpu with cpu_index == i).

Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
---
 hw/ppc/e500.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

Comments

Greg Kurz Aug. 3, 2017, 1:15 p.m. UTC | #1
On Thu, 3 Aug 2017 16:28:36 +1000
Sam Bobroff <sam.bobroff@au1.ibm.com> wrote:

> The e500 platform code uses the function ppc_get_vcpu_dt_id() but that
> function is actually specific to SPAPR machines, not PPC CPUs, and
> will always return the cpu_index in this context.
> 

ie, e500 compatible CPUs don't support SMT ? Then maybe the e500 machine
should ensure smp_threads == 1, but this can done in a followup patch.

> Simply use the cpu_index instead (which is 'i' in this context
> because qemu_get_cpu(i) returns the cpu with cpu_index == i).
> 
> Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>

Reviewed-by: Greg Kurz <groug@kaod.org>

> ---
>  hw/ppc/e500.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index 62f1857206..2a6d34ceb1 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -382,7 +382,6 @@ static int ppce500_load_device_tree(MachineState *machine,
>         the first node as boot node and be happy */
>      for (i = smp_cpus - 1; i >= 0; i--) {
>          CPUState *cpu;
> -        PowerPCCPU *pcpu;
>          char cpu_name[128];
>          uint64_t cpu_release_addr = params->spin_base + (i * 0x20);
>  
> @@ -391,16 +390,13 @@ static int ppce500_load_device_tree(MachineState *machine,
>              continue;
>          }
>          env = cpu->env_ptr;
> -        pcpu = POWERPC_CPU(cpu);
>  
> -        snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x",
> -                 ppc_get_vcpu_dt_id(pcpu));
> +        snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x", i);
>          qemu_fdt_add_subnode(fdt, cpu_name);
>          qemu_fdt_setprop_cell(fdt, cpu_name, "clock-frequency", clock_freq);
>          qemu_fdt_setprop_cell(fdt, cpu_name, "timebase-frequency", tb_freq);
>          qemu_fdt_setprop_string(fdt, cpu_name, "device_type", "cpu");
> -        qemu_fdt_setprop_cell(fdt, cpu_name, "reg",
> -                              ppc_get_vcpu_dt_id(pcpu));
> +        qemu_fdt_setprop_cell(fdt, cpu_name, "reg", i);
>          qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-line-size",
>                                env->dcache_line_size);
>          qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-line-size",
David Gibson Aug. 4, 2017, 2:21 a.m. UTC | #2
On Thu, Aug 03, 2017 at 03:15:04PM +0200, Greg Kurz wrote:
> On Thu, 3 Aug 2017 16:28:36 +1000
> Sam Bobroff <sam.bobroff@au1.ibm.com> wrote:
> 
> > The e500 platform code uses the function ppc_get_vcpu_dt_id() but that
> > function is actually specific to SPAPR machines, not PPC CPUs, and
> > will always return the cpu_index in this context.
> > 
> 
> ie, e500 compatible CPUs don't support SMT ? Then maybe the e500 machine
> should ensure smp_threads == 1, but this can done in a followup patch.

Uh.. sort of, it's really more about the host than guest restrictions.

I've rewritten the commit message to give a bit more context.

> > Simply use the cpu_index instead (which is 'i' in this context
> > because qemu_get_cpu(i) returns the cpu with cpu_index == i).
> > 
> > Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
> 
> Reviewed-by: Greg Kurz <groug@kaod.org>

Applied to ppc-for-2.11

> 
> > ---
> >  hw/ppc/e500.c | 8 ++------
> >  1 file changed, 2 insertions(+), 6 deletions(-)
> > 
> > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> > index 62f1857206..2a6d34ceb1 100644
> > --- a/hw/ppc/e500.c
> > +++ b/hw/ppc/e500.c
> > @@ -382,7 +382,6 @@ static int ppce500_load_device_tree(MachineState *machine,
> >         the first node as boot node and be happy */
> >      for (i = smp_cpus - 1; i >= 0; i--) {
> >          CPUState *cpu;
> > -        PowerPCCPU *pcpu;
> >          char cpu_name[128];
> >          uint64_t cpu_release_addr = params->spin_base + (i * 0x20);
> >  
> > @@ -391,16 +390,13 @@ static int ppce500_load_device_tree(MachineState *machine,
> >              continue;
> >          }
> >          env = cpu->env_ptr;
> > -        pcpu = POWERPC_CPU(cpu);
> >  
> > -        snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x",
> > -                 ppc_get_vcpu_dt_id(pcpu));
> > +        snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x", i);
> >          qemu_fdt_add_subnode(fdt, cpu_name);
> >          qemu_fdt_setprop_cell(fdt, cpu_name, "clock-frequency", clock_freq);
> >          qemu_fdt_setprop_cell(fdt, cpu_name, "timebase-frequency", tb_freq);
> >          qemu_fdt_setprop_string(fdt, cpu_name, "device_type", "cpu");
> > -        qemu_fdt_setprop_cell(fdt, cpu_name, "reg",
> > -                              ppc_get_vcpu_dt_id(pcpu));
> > +        qemu_fdt_setprop_cell(fdt, cpu_name, "reg", i);
> >          qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-line-size",
> >                                env->dcache_line_size);
> >          qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-line-size",
>
diff mbox

Patch

diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 62f1857206..2a6d34ceb1 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -382,7 +382,6 @@  static int ppce500_load_device_tree(MachineState *machine,
        the first node as boot node and be happy */
     for (i = smp_cpus - 1; i >= 0; i--) {
         CPUState *cpu;
-        PowerPCCPU *pcpu;
         char cpu_name[128];
         uint64_t cpu_release_addr = params->spin_base + (i * 0x20);
 
@@ -391,16 +390,13 @@  static int ppce500_load_device_tree(MachineState *machine,
             continue;
         }
         env = cpu->env_ptr;
-        pcpu = POWERPC_CPU(cpu);
 
-        snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x",
-                 ppc_get_vcpu_dt_id(pcpu));
+        snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x", i);
         qemu_fdt_add_subnode(fdt, cpu_name);
         qemu_fdt_setprop_cell(fdt, cpu_name, "clock-frequency", clock_freq);
         qemu_fdt_setprop_cell(fdt, cpu_name, "timebase-frequency", tb_freq);
         qemu_fdt_setprop_string(fdt, cpu_name, "device_type", "cpu");
-        qemu_fdt_setprop_cell(fdt, cpu_name, "reg",
-                              ppc_get_vcpu_dt_id(pcpu));
+        qemu_fdt_setprop_cell(fdt, cpu_name, "reg", i);
         qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-line-size",
                               env->dcache_line_size);
         qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-line-size",