On Wed, Apr 11, 2018 at 02:41:59PM -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 <spopo...@redhat.com> > --- > hw/ppc/spapr.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index a81570e..c05bbad 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -910,6 +910,13 @@ 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(4), > + cpu_to_be32(0), > + cpu_to_be32(0), > + cpu_to_be32(0), > + cpu_to_be32(nb_numa_nodes - 1), > + }; > > _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas")); > > @@ -946,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", > -- > 1.8.3.1
This commit causes hash guest with latest guest kernel to hang at early boot. Quiescing Open Firmware ... Booting Linux via __start() @ 0x0000000002000000 ... [ 0.000000] hash-mmu: Page sizes from device-tree: [ 0.000000] hash-mmu: base_shift=12: shift=12, sllp=0x0000, avpnm=0x00000000, tlbiel=1, penc=0 [ 0.000000] hash-mmu: base_shift=16: shift=16, sllp=0x0110, avpnm=0x00000000, tlbiel=1, penc=1 [ 0.000000] Using 1TB segments [ 0.000000] hash-mmu: Initializing hash mmu with SLB [ 0.000000] Linux version 4.16.0-rc7+ (root@localhost.localdomain) (gcc version 7.1.1 20170622 (Red Hat 7.1.1-3) (GCC)) #60 SMP Wed Apr 11 10:36:22 IST 2018 [ 0.000000] Found initrd at 0xc000000003c00000:0xc000000004f9a34c [ 0.000000] Using pSeries machine description [ 0.000000] bootconsole [udbg0] enabled [ 0.000000] Partition configured for 32 cpus. [ 0.000000] CPU maps initialized for 1 thread per core [ 0.000000] ----------------------------------------------------- [ 0.000000] ppc64_pft_size = 0x1a [ 0.000000] phys_mem_size = 0x200000000 [ 0.000000] dcache_bsize = 0x80 [ 0.000000] icache_bsize = 0x80 [ 0.000000] cpu_features = 0x077c7a6c18500249 [ 0.000000] possible = 0xffffffff18500649 [ 0.000000] always = 0x0000000018100040 [ 0.000000] cpu_user_features = 0xdc0065c2 0xae000000 [ 0.000000] mmu_features = 0x78006001 [ 0.000000] firmware_features = 0x00000001415a445f [ 0.000000] htab_hash_mask = 0x7ffff [ 0.000000] ----------------------------------------------------- No progess after this.