On Wed, 2025-08-13 at 22:45 +0800, Hans Zhang wrote: > Dear Maintainers, > > This patch series addresses long-standing code duplication in PCI > capability discovery logic across the PCI core and controller drivers. > The existing implementation ties capability search to fully initialized > PCI device structures, limiting its usability during early controller > initialization phases where device/bus structures may not yet be > available. > > The primary goal is to decouple capability discovery from PCI device > dependencies by introducing a unified framework using config space > accessor-based macros. This enables: > > 1. Early Capability Discovery: Host controllers (e.g., Cadence, DWC) > can now perform capability searches during pre-initialization stages > using their native config accessors. > > 2. Code Consolidation: Common logic for standard and extended capability > searches is refactored into shared macros (`PCI_FIND_NEXT_CAP` and > `PCI_FIND_NEXT_EXT_CAP`), eliminating redundant implementations. > > 3. Safety and Maintainability: TTL checks are centralized within the > macros to prevent infinite loops, while hardcoded offsets in drivers > are replaced with dynamic discovery, reducing fragility. > > Key improvements include: > - Driver Conversions: DesignWare and Cadence drivers are migrated to > use the new macros, removing device-specific assumptions and ensuring > consistent error handling. > > - Enhanced Readability: Magic numbers are replaced with symbolic > constants, and config space accessors are standardized for clarity. > > - Backward Compatibility: Existing PCI core behavior remains unchanged. > > --- > Dear Niklas and Gerd, > > Can you test this series of patches on the s390? > > Thank you very much. Hi Hans, I gave this series a try on top of v6.17-rc1 on s390 and a bunch of PCI devices including the mlx5 cards that Gerd we originally saw issues with. All looks well now. So feel free to add as appropriate: Tested-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx> Thanks, Niklas