qemu-ppc
[Top][All Lists]
Advanced

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

Re: [Qemu-ppc] [PATCH for 2.13 v2 1/2] spapr: Add ibm, max-associativity


From: Greg Kurz
Subject: Re: [Qemu-ppc] [PATCH for 2.13 v2 1/2] spapr: Add ibm, max-associativity-domains property
Date: Wed, 11 Apr 2018 11:02:27 +0200

On Wed, 11 Apr 2018 10:03:48 +1000
David Gibson <address@hidden> wrote:

> On Tue, Apr 10, 2018 at 02:12:25PM -0400, Serhii Popovych wrote:
> > Now recent kernels (i.e. since linux-stable commit a346137e9142
> > ("powerpc/numa: Use ibm,max-associativity-domains to discover possible 
> > nodes")
> > support this property to mark initially memory-less NUMA nodes as "possible"
> > to allow further memory hot-add to them.
> > 
> > Advertise this property for pSeries machines to let guest kernels detect
> > maximum supported node configuration and benefit from kernel side change
> > when hot-add memory to specific, possibly empty before, NUMA node.
> > 
> > Signed-off-by: Serhii Popovych <address@hidden>
> > ---
> >  hw/ppc/spapr.c | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> > 
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index 2c0be8c..3f61785 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -909,6 +909,14 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, 
> > void *fdt)
> >          0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
> >          cpu_to_be32(max_cpus / smp_threads),
> >      };
> > +    uint32_t maxdomains[] = {
> > +        cpu_to_be32(5),
> > +        cpu_to_be32(0),
> > +        cpu_to_be32(0),
> > +        cpu_to_be32(0),
> > +        cpu_to_be32(nb_numa_nodes - 1),
> > +        cpu_to_be32(0),
> > +    };  
> 
> Ah.. close, but not quite right.  This is saying that there's exactly
> one node at the bottom (cpu) level, which isn't what we want.  Instead
> of setting it to 0, we want to completely drop that layer, keeping it
> unspecified.
> 
> To do that you need to change the first cell from 5 to 4 (since only 4
> levels will be listed) and drop the last cell entirely.
> 

Alternatively, if we don't want to do any assumptions on the guest
expectations, it is possible to pass the right value in the 6th cell:

        cpu_to_be32(spapr_vcpu_id(spapr, max_cpus - 1))

> >      _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
> >  
> > @@ -945,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, 
> > void *fdt)
> >      _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
> >                       refpoints, sizeof(refpoints)));
> >  
> > +    _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
> > +                     maxdomains, sizeof(maxdomains)));
> > +
> >      _FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
> >                            RTAS_ERROR_LOG_MAX));
> >      _FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",  
> 




reply via email to

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