On Sat, 30 May 2026 at 09:52, David Marchand <[email protected]> wrote: > > This is a continuation of the work I started on the bus infrastructure, > but this time, a lot of the changes were done by a AI "friend". > It is still an unfinished topic as the current series focuses on probing > only. The detaching/cleanup aspect is postponed to another release/time. > > My AI "friend" really *sucked* at git and at separating unrelated changes, > so it required quite a lot of massage/polishing afterwards. > But it seems good enough now for upstream submission. > > I would like to see this series merged in 26.07, so that we have enough > time to stabilize it before the next LTS. > And seeing how it affects drivers, it is probably better to merge it > the sooner possible (so Thomas does not have to solve too many conflicts > when pulling next-* subtrees after, especially wrt the last patch). > > > This series refactors the DPDK bus infrastructure to consolidate common > operations and reduce code duplication across all bus drivers. > Currently, each bus implements its own specific device/driver lists, > probe logic, and lookup functions. > This series moves these common patterns into the EAL bus layer, > providing generic helpers that all buses can use. > > The refactoring removes approximately 1,400 lines of duplicated code across > the codebase while maintaining full functional equivalence. > > Key changes: > - Factorize device and driver lists into struct rte_bus > - Implement generic probe, device/driver lookup, and iteration helpers in EAL > - Introduce conversion macros (RTE_BUS_DEVICE, RTE_BUS_DRIVER, > RTE_CLASS_TO_BUS_DEVICE) > to safely convert between generic and bus-specific types > - Remove bus-specific device/driver types from most driver code > - Move probe logic from individual buses to rte_bus_generic_probe() > - Separate NXP-specific metadata from generic bus structures > > Benefits: > - Significant code reduction (~1,400 lines removed) > - Consistent behavior across all bus types > - Simplified bus driver implementation > - Easier maintenance and future enhancements > > The series is structured as a progressive refactoring: > - Remove redundant checks and helpers, fix existing bugs (patches 1-7) > - Add conversion macros and factorize lists (patches 8-10) > - Consolidate device/driver lookup and iteration (patches 11-13) > - Refactor probe logic (patches 14-17) > - Remove bus-specific types from drivers (patches 18-25) > > Note on ABI: > This series breaks the ABI for drivers (changes to rte_pci_device, > rte_pci_driver, and similar structures for other buses). However, the DPDK > ABI policy does not provide guarantees for driver-level interfaces.
Thomas pointed out offlist at a leak in the bus cleanup updates (patch 6): not-probed devices are not freed when calling the bus cleanup operation. I will fix this in a future series (hopefully for rc2), after refactoring the cleanup/unplug code flows. For now, series applied for rc1. Thanks for the reviews! -- David Marchand

