Re: [PATCH 0/3] PCI: dwc: Cache PCIe capability offset and simplify drivers
Manivannan Sadhasivam <[email protected]> Tue, 19 May 2026 19:27:53 +0530
| Newsgroups | dev.linux.lists.sophgo,dev.linux.lists.spacemit,org.infradead.lists.linux-amlogic,org.infradead.lists.linux-riscv,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.linux-tegra,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <beqy5ykxgo4ianya6r4mahkkyujs6lly475u26vqaemgqsdnhp@2pn5ipczwc34> |
On Sat, May 09, 2026 at 09:51:49PM +0800, Hans Zhang wrote: > The DWC PCIe core and its many platform drivers repeatedly call > dw_pcie_find_capability(pci, PCI_CAP_ID_EXP) to obtain the offset of the > PCI Express Capability structure. This is wasteful and makes the code > verbose. And some even search for the PCI_CAP_ID_EXP offset value within > the suspend/resume functions. > Sashiko has flagged some real issues with this series in accessing DBI space very early and 'pci->pcie_cap' being 0. Those needs to be fixed. - Mani > Add a cached pcie_cap field in struct dw_pcie and a helper > dw_pcie_get_pcie_cap() to initialize it once at probe time. Then replace > all explicit capability searches with the cached value across the > entire dwc subtree. > > Hans Zhang (3): > PCI: dwc: Add pcie_cap field and helper in designware header > PCI: dwc: Use cached PCIe capability offset in core > PCI: dwc: Simplify platform drivers using cached capability offset > > drivers/pci/controller/dwc/pci-imx6.c | 6 +-- > .../pci/controller/dwc/pci-layerscape-ep.c | 4 +- > drivers/pci/controller/dwc/pci-meson.c | 4 +- > .../pci/controller/dwc/pcie-designware-ep.c | 4 +- > .../pci/controller/dwc/pcie-designware-host.c | 4 +- > drivers/pci/controller/dwc/pcie-designware.c | 16 +++--- > drivers/pci/controller/dwc/pcie-designware.h | 17 +++++++ > drivers/pci/controller/dwc/pcie-dw-rockchip.c | 15 +++--- > drivers/pci/controller/dwc/pcie-eswin.c | 3 +- > drivers/pci/controller/dwc/pcie-fu740.c | 2 +- > drivers/pci/controller/dwc/pcie-intel-gw.c | 2 +- > drivers/pci/controller/dwc/pcie-qcom-ep.c | 11 ++-- > drivers/pci/controller/dwc/pcie-qcom.c | 24 ++++----- > drivers/pci/controller/dwc/pcie-sophgo.c | 8 ++- > drivers/pci/controller/dwc/pcie-spacemit-k1.c | 5 +- > drivers/pci/controller/dwc/pcie-spear13xx.c | 6 +-- > drivers/pci/controller/dwc/pcie-tegra194.c | 51 +++++++------------ > 17 files changed, 85 insertions(+), 97 deletions(-) > > > base-commit: 70390501d1944d4e5b8f7352be180fceb3a44132 > -- > 2.34.1 > -- மணிவண்ணன் சதாசிவம்