Re: [PATCH v15 0/6] Refactor capability search into common macros

From: Hans Zhang
Date: Thu Aug 14 2025 - 11:02:31 EST




On 2025/8/14 16:32, Niklas Schnelle wrote:
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>


Hi Niklas,

Thank you very much for your test. Let's see what others think.

Best regards,
Hans