This is a followup of the previous bus refactoring. See https://inbox.dpdk.org/dev/CAJFAV8zvFpLwz8SY8DUUezyJyM43eRZ17Yj30ex808eHC4ZE=g...@mail.gmail.com/.
This series refactors the bus cleanup infrastructure to reduce code duplication and fix resource leaks in several bus drivers. It should address the leak Thomas pointed at. The first part of the series (patches 1-8) addresses several bugs and inconsistencies: - Documentation and log message inconsistencies from earlier bus refactoring - Device list management issues in dma/idxd and bus/vdev - Resource leaks in PCI and VMBUS bus cleanup (mappings and interrupts) - Simplified device freeing in NXP buses (DPAA and FSLMC) - Deferred interrupt allocation to probe time (NXP buses, VMBUS) The core infrastructure changes (patches 9-10) introduce the generic cleanup framework: - Refactors unplug operations to be the counterpart of probe_device - Implements rte_bus_generic_cleanup() to centralize cleanup logic - Adds .free_device operation to struct rte_bus - Adds compile-time verification that rte_device is at offset 0 The final patches (11-13) convert remaining buses to use the generic cleanup helper: - DPAA bus: add unplug support - VMBUS bus: switch to embedded device name and add unplug support After this series, most buses use the generic cleanup helper, eliminating duplicated code and ensuring consistent cleanup behavior across the codebase. -- David Marchand David Marchand (13): bus: fix reference to plug callback dma/idxd: remove next pointer in bus specific device bus/vdev: remove driver setting in probe drivers/bus: cleanup device freeing in NXP bus drivers/bus: allocate interrupt during probing in NXP bus bus/pci: fix mapping leak in bus cleanup bus/vmbus: fix interrupt leak in cleanup bus/vmbus: allocate interrupt during probing bus: align unplug with device probe bus: implement cleanup in EAL bus/dpaa: support unplug bus/vmbus: store name in bus specific device bus/vmbus: support unplug doc/guides/prog_guide/device_hotplug.rst | 20 +++-- doc/guides/rel_notes/release_26_07.rst | 8 ++ drivers/bus/auxiliary/auxiliary_common.c | 56 +++----------- drivers/bus/cdx/cdx.c | 31 ++------ drivers/bus/dpaa/dpaa_bus.c | 96 ++++++++++-------------- drivers/bus/fslmc/fslmc_bus.c | 55 ++++++-------- drivers/bus/ifpga/ifpga_bus.c | 65 ++++------------ drivers/bus/pci/pci_common.c | 69 +++-------------- drivers/bus/platform/platform.c | 28 ++----- drivers/bus/uacce/uacce.c | 61 ++------------- drivers/bus/vdev/vdev.c | 71 ++++++------------ drivers/bus/vmbus/bus_vmbus_driver.h | 1 + drivers/bus/vmbus/linux/vmbus_bus.c | 16 +--- drivers/bus/vmbus/vmbus_common.c | 56 ++++++++------ drivers/dma/idxd/idxd_bus.c | 3 +- lib/eal/common/eal_common_bus.c | 33 +++++++- lib/eal/common/eal_common_dev.c | 10 ++- lib/eal/include/bus_driver.h | 42 ++++++++++- 18 files changed, 268 insertions(+), 453 deletions(-) -- 2.53.0

