Hi Bharat, Actually I've sent this patch by mistake, sorry for that. I'll drop it and resend the patch series.
--- Best Regards, Laurentiu On 30.01.2019 16:41, Bharat Bhushan wrote: > > >> -----Original Message----- >> From: upstream-release-boun...@linux.nxdi.nxp.com <upstream-release- >> boun...@linux.nxdi.nxp.com> On Behalf Of laurentiu.tu...@nxp.com >> Sent: Wednesday, January 30, 2019 5:31 PM >> To: u-boot@lists.denx.de; Prabhakar Kushwaha >> <prabhakar.kushw...@nxp.com>; York Sun <york....@nxp.com> >> Cc: Laurentiu Tudor <laurentiu.tu...@nxp.com> >> Subject: [upstream-release] [PATCH] pci: layerscape: add option to statically >> allocate PCI StreamIDs >> >> From: Laurentiu Tudor <laurentiu.tu...@nxp.com> >> >> Certain PCI scenarios have more dynamic requirements, e.g. endpoints are >> "hot-plugged" later in the system lifetime. Add a Kconfig option that allows >> specifying a maximum number of end-points, per PCI controller and allocate >> a StreamID for each one. >> >> Signed-off-by: Laurentiu Tudor <laurentiu.tu...@nxp.com> >> --- >> arch/arm/cpu/armv8/fsl-layerscape/Kconfig | 28 +++++++++++++++++ >> drivers/pci/pcie_layerscape_fixup.c | 38 +++++++++++++++++++++++ >> 2 files changed, 66 insertions(+) >> >> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig >> b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig >> index 2b086da79b..1d633d71a8 100644 >> --- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig >> +++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig >> @@ -571,3 +571,31 @@ config TFABOOT >> help >> Enabling this will make a U-Boot binary that is capable of being >> booted via TFA. >> + >> +menuconfig FSL_PCIE_STATIC_STREAM_IDS >> + bool "Allocate PCI streamIDs statically" >> + default n >> + depends on PCIE_LAYERSCAPE >> + help >> + Statically allocate a certain number of StreamIDs for each PCI >> + controller, instead of enumerating the connected endpoints and >> + allocate a StreamID for each one. This allocation method can >> + be used in more dynamic PCI scenarios, e.g. where endpoints are >> + "hot-plugged" later in the system bringup, by statically specifying >> + a maximum number of StreamIDs expected for each PCI controller. >> + >> +if FSL_PCIE_STATIC_STREAM_IDS >> + >> +config FSL_PCIE1_STREAM_IDS_COUNT >> + default 3 >> + int "Maximum number of streamIDs to allocate for PCI1 controller" >> + >> +config FSL_PCIE2_STREAM_IDS_COUNT >> + default 3 >> + int "Maximum number of streamIDs to allocate for PCI2 controller" >> + >> +config FSL_PCIE3_STREAM_IDS_COUNT >> + default 3 >> + int "Maximum number of streamIDs to allocate for PCI3 controller" >> + >> +endif >> diff --git a/drivers/pci/pcie_layerscape_fixup.c >> b/drivers/pci/pcie_layerscape_fixup.c >> index 1a17bd98aa..32355cbf2e 100644 >> --- a/drivers/pci/pcie_layerscape_fixup.c >> +++ b/drivers/pci/pcie_layerscape_fixup.c >> @@ -177,6 +177,7 @@ static void fdt_pcie_set_iommu_map_entry(void >> *blob, struct ls_pcie *pcie, >> >> static void fdt_fixup_pcie(void *blob) >> { >> +#if !CONFIG_FSL_PCIE_STATIC_STREAM_IDS >> struct udevice *dev, *bus; >> struct ls_pcie *pcie; >> int streamid; >> @@ -215,6 +216,43 @@ static void fdt_fixup_pcie(void *blob) >> fdt_pcie_set_iommu_map_entry(blob, pcie, bdf >> 8, >> streamid); >> } >> +#else >> + static const int streamid_cnt[] = { >> + CONFIG_FSL_PCIE1_STREAM_IDS_COUNT, >> + CONFIG_FSL_PCIE2_STREAM_IDS_COUNT, >> + CONFIG_FSL_PCIE3_STREAM_IDS_COUNT > > Why 3 controllers? > >> + }; >> + struct ls_pcie *pcie; >> + int i, streamid, index; >> + pci_dev_t bdf; >> + >> + list_for_each_entry(pcie, &ls_pcie_list, list) { >> + for (i = 0; i < streamid_cnt[pcie->idx]; i++) { >> + streamid = ls_pcie_next_streamid(); >> + if (streamid < 0) { >> + debug("ERROR: no stream ids free\n"); >> + continue; > > Why to continue if we are out of stream-ids? > >> + } >> + >> + index = ls_pcie_next_lut_index(pcie); >> + if (index < 0) { >> + debug("ERROR: no LUT indexes free\n"); >> + continue; > > We can error out when out of LUT entry > >> + } >> + >> + bdf = PCI_BDF(i, 0, 0); >> + /* map PCI b.d.f to streamID in LUT */ >> + ls_pcie_lut_set_mapping(pcie, index, bdf >> 8, >> + streamid); >> + /* update msi-map in device tree */ >> + fdt_pcie_set_msi_map_entry(blob, pcie, bdf >> 8, >> + streamid); >> + /* update iommu-map in device tree */ >> + fdt_pcie_set_iommu_map_entry(blob, pcie, bdf >> >> 8, >> + streamid); >> + } >> + } >> +#endif /* !CONFIG_FSL_PCIE_STATIC_STREAM_IDS */ >> } >> #endif >> >> -- >> 2.17.1 >> >> _______________________________________________ >> upstream-release mailing list >> upstream-rele...@linux.nxdi.nxp.com >> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flin >> ux.nxdi.nxp.com%2Fmailman%2Flistinfo%2Fupstream- >> release&data=02%7C01%7Cbharat.bhushan%40nxp.com%7C58a43424e >> 5724733c5f908d686aa9f3f%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0 >> %7C636844464703698542&sdata=TZpx5GzIpO%2FUoGWMzDNPIy5SpH >> UZFkSIDQLkZn%2FZMJE%3D&reserved=0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot