On 1/5/22 22:23, Daniel Henrique Barboza wrote:
> Relying on stack->phb to write the xscom DT of the PEC is something that
> we won't be able to do with user creatable pnv-phb4 devices.
>
> Hopefully, this can be done by using pnv_phb4_pec_get_phb_id(), which is
> already used by pnv_pec_realize() to set the phb-id of the stack. Use
> the same idea in pnv_pec_dt_xscom() to write ibm,phb-index without the
> need to accessing stack->phb, since stack->phb is not granted to be !=
> NULL when user creatable phbs are introduced.
>
> Reviewed-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> hw/pci-host/pnv_phb4_pec.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c
> index e47d19dfff..0675fc55bc 100644
> --- a/hw/pci-host/pnv_phb4_pec.c
> +++ b/hw/pci-host/pnv_phb4_pec.c
> @@ -449,8 +449,7 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt,
> pecc->compat_size)));
>
> for (i = 0; i < pec->num_stacks; i++) {
> - PnvPhb4PecStack *stack = &pec->stacks[i];
> - PnvPHB4 *phb = &stack->phb;
> + int phb_id = pnv_phb4_pec_get_phb_id(pec, i);
> int stk_offset;
>
> name = g_strdup_printf("stack@%x", i);
> @@ -460,7 +459,7 @@ 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->phb_id)));
> + _FDT((fdt_setprop_cell(fdt, stk_offset, "ibm,phb-index", phb_id)));
> }
>
> return 0;
>