pnv_phb4_pec: Only export existing PHBs to the device tree

So far, we were always exporting all possible PHBs to the device
tree. It works well when using the default config but it potentially
adds non-existing devices when using '-nodefaults' and user-created
PHBs, causing the firmware (skiboot) to report errors when probing
those PHBs. This patch only exports PHBs which have been realized to
the device tree.

Fixes: d786be3fe7 ("ppc/pnv: enable user created pnv-phb for powernv9")
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Message-Id: <20230302163715.129635-3-fbarrat@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
Frederic Barrat 2023-03-02 17:37:13 +01:00 committed by Daniel Henrique Barboza
parent 1068ebb606
commit cd9b1cf96e

View File

@ -199,9 +199,12 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt,
pecc->compat_size))); pecc->compat_size)));
for (i = 0; i < pec->num_phbs; i++) { for (i = 0; i < pec->num_phbs; i++) {
int phb_id = pnv_phb4_pec_get_phb_id(pec, i);
int stk_offset; int stk_offset;
if (!pec->phbs[i]) {
continue;
}
name = g_strdup_printf("stack@%x", i); name = g_strdup_printf("stack@%x", i);
stk_offset = fdt_add_subnode(fdt, offset, name); stk_offset = fdt_add_subnode(fdt, offset, name);
_FDT(stk_offset); _FDT(stk_offset);
@ -209,7 +212,8 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt,
_FDT((fdt_setprop(fdt, stk_offset, "compatible", pecc->stk_compat, _FDT((fdt_setprop(fdt, stk_offset, "compatible", pecc->stk_compat,
pecc->stk_compat_size))); pecc->stk_compat_size)));
_FDT((fdt_setprop_cell(fdt, stk_offset, "reg", i))); _FDT((fdt_setprop_cell(fdt, stk_offset, "reg", i)));
_FDT((fdt_setprop_cell(fdt, stk_offset, "ibm,phb-index", phb_id))); _FDT((fdt_setprop_cell(fdt, stk_offset, "ibm,phb-index",
pec->phbs[i]->phb_id)));
} }
return 0; return 0;