[Skiboot] [PATCH] Allow to create slot for downstream port of any switch

Oliver oohall at gmail.com
Wed Jun 5 10:11:23 AEST 2019


On Tue, Jun 4, 2019 at 10:58 PM Ilya Kuznetsov <ilya at yadro.com> wrote:
>
> System vendor may build systems with large PCIe tree with
> deeper switch topologies. Currenlty downstream ports slot
> creation is limited to one switch. Patch allows to use more
> by removing comparison to third parent.
>
> Signed-off-by: Ilya Kuznetsov <ilya at yadro.com>
> ---
>  core/pcie-slot.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/core/pcie-slot.c b/core/pcie-slot.c
> index e7013d1e..b12e0fb2 100644
> --- a/core/pcie-slot.c
> +++ b/core/pcie-slot.c
> @@ -544,13 +544,9 @@ struct pci_slot *pcie_slot_create_dynamic(struct phb *phb,
>         if (!phb || !pd || pd->slot)
>                 return NULL;
>
> -       /* Try to create slot whose details aren't provided by platform.
> -        * We only care the downstream ports of PCIe switch that connects
> -        * to root port.
> -        */
> +       /* Try to create slot whose details aren't provided by platform. */

>         if (pd->dev_type != PCIE_TYPE_SWITCH_DNPORT ||
> -           !pd->parent || !pd->parent->parent ||
> -           pd->parent->parent->parent)
> +           !pd->parent || !pd->parent->parent)
>                 return NULL;

I'm not entirely sure why it had that restriction in the first place.
We could probably just limit the check to:

 if (pd->dev_type != PCIE_TYPE_SWITCH_DNPORT)
                 return NULL;

The same function verifies the port has hotplug support advertised, so
there's no real harm in allowing it.

>         ecap = pci_cap(pd, PCI_CFG_CAP_ID_EXP, false);
> --
> 2.21.0
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot


More information about the Skiboot mailing list