Message ID | 20230302163715.129635-3-fbarrat@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | user-created PHB cleanup | expand |
On 3/2/23 13:37, Frederic Barrat wrote: > 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: d786be3fe746 ("ppc/pnv: enable user created pnv-phb for powernv9") > Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com> > --- Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> > hw/pci-host/pnv_phb4_pec.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c > index 97c06bb0a0..6c9b386069 100644 > --- a/hw/pci-host/pnv_phb4_pec.c > +++ b/hw/pci-host/pnv_phb4_pec.c > @@ -199,9 +199,12 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt, > pecc->compat_size))); > > for (i = 0; i < pec->num_phbs; i++) { > - int phb_id = pnv_phb4_pec_get_phb_id(pec, i); > int stk_offset; > > + if (!pec->phbs[i]) { > + continue; > + } > + > name = g_strdup_printf("stack@%x", i); > stk_offset = fdt_add_subnode(fdt, offset, name); > _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, > pecc->stk_compat_size))); > _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;
diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index 97c06bb0a0..6c9b386069 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -199,9 +199,12 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt, pecc->compat_size))); for (i = 0; i < pec->num_phbs; i++) { - int phb_id = pnv_phb4_pec_get_phb_id(pec, i); int stk_offset; + if (!pec->phbs[i]) { + continue; + } + name = g_strdup_printf("stack@%x", i); stk_offset = fdt_add_subnode(fdt, offset, name); _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, pecc->stk_compat_size))); _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;
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: d786be3fe746 ("ppc/pnv: enable user created pnv-phb for powernv9") Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com> --- hw/pci-host/pnv_phb4_pec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)