[Top][All Lists]

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

[PATCH 2/2] spapr.c: remove 'ibm,chip-id' from DT

From: Daniel Henrique Barboza
Subject: [PATCH 2/2] spapr.c: remove 'ibm,chip-id' from DT
Date: Fri, 19 Mar 2021 15:34:53 -0300

The attribute 'ibm,chip-id' does not exist in PAPR. This alone would be
enough reason to remove it from the spapr DT, but before doing that,
let's give a brief context on how and why it was introduced.

'ibm,chip-id' was added in the spapr DT by commit 10582ff83279. This
commit references kernel commit 256f2d4b463d ("powerpc: Use ibm,chip-id
property to compute cpu_core_mask if available"). In this kernel commit,
the 'ibm,chip-id' DT attribute is being used to calculate the
cpu_core_mask in traverse_siblings_chip_id(). This function still need
to consider 'ibm,chip-id' not being available as well to avoid breaking
older guests.

Later on, kernel commit df52f6714071 ("powerpc/smp: Rework CPU topology
construction") removed traverse_siblings_chip_id() and its callers,
making the CPU topology calculation independent of the 'ibm,chip-id'

Last, but perhaps most relevant, kernel commit 4ca234a9cbd7
("powerpc/smp: Stop updating cpu_core_mask") changed the way the kernel
calculates the cpu_core_mask, removing the use of 'ibm,chip-id' in the
calculation altogether, with consequences already discussed in the
previous patch.

All that said, since it's not in PAPR and the pseries kernel does not
rely on it, let's remove ibm,chip-id from the DT for the default machine
type. This removal is related to the previous SMP change, so re-use the
same smc->pre_6_0_smp_topology flag.

CC: Alexey Kardashevskiy <aik@ozlabs.ru>
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
 hw/ppc/spapr.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 745f71c243..58efb51ac7 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -649,6 +649,7 @@ static void spapr_dt_cpu(CPUState *cs, void *fdt, int 
     PowerPCCPU *cpu = POWERPC_CPU(cs);
     CPUPPCState *env = &cpu->env;
     PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cs);
+    SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(ms);
     int index = spapr_get_vcpu_id(cpu);
     uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40),
                        0xffffffff, 0xffffffff};
@@ -745,8 +746,10 @@ static void spapr_dt_cpu(CPUState *cs, void *fdt, int 
     spapr_dt_pa_features(spapr, cpu, fdt, offset);
-    _FDT((fdt_setprop_cell(fdt, offset, "ibm,chip-id",
-                           cs->cpu_index / vcpus_per_socket)));
+    if (smc->pre_6_0_smp_topology) {
+        _FDT((fdt_setprop_cell(fdt, offset, "ibm,chip-id",
+                               cs->cpu_index / vcpus_per_socket)));
+    }
     _FDT((fdt_setprop(fdt, offset, "ibm,pft-size",
                       pft_size_prop, sizeof(pft_size_prop))));

reply via email to

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