[PATCH v4 0/7] Rework device probing

David Marchand
2026-04-14T12:39:14Z

Applications relying on device hotplug don't work well with the default
probing of all available resources.
This series proposes to change this behavior via a new EAL option.

--
David Marchand

Changes since v3:
- renamed some internal API,
- updated documentation,
- added a release notes entry,

Changes since v2:
- rebased for late 26.03 fslmc bus changes,
- fixed devargs lookup,
- added debug logs,

Changes since v1:
- restored per bus scan mode,
- fixed logic in device selection for dma/idxd,
- fixed raw/ifpga hotplug on ifpga bus,
- fixed some doxygen,

Changes since RFC v3:
- removed per bus scan mode,

Changes since RFC v2:
- went one step further and reworked devargs lookup in buses following
Bruce comment (see patch 4 which is cosmetic, and patch 5),
- updated device selection helper accordingly and
changed API to be device name based,
- renamed option, added check on -b presence, updated doc in the last
patch,

Changes since RFC v1:
- reviewed bus probe() and cleaned up NXP drivers,
- changed approach following Bruce comment,

David Marchand (7):
devtools: check packet forwarding in null test
bus/fslmc: fix bus cleanup
drivers/bus: require probe function for NXP drivers
drivers/bus: cleanup devargs lookup in scan
bus: factorize devargs lookup
bus: factorize device selection
eal: configure initial device probing

app/test/test_eal_flags.c | 63 ++++++++++++++++
devtools/test-null.sh | 10 ++-
doc/guides/linux_gsg/eal_args.include.rst | 18 +++++
doc/guides/rel_notes/release_26_07.rst | 8 +++
drivers/bus/auxiliary/auxiliary_common.c | 33 +--------
drivers/bus/auxiliary/bus_auxiliary_driver.h | 2 -
drivers/bus/auxiliary/linux/auxiliary.c | 2 +-
drivers/bus/auxiliary/private.h | 6 --
drivers/bus/cdx/cdx.c | 34 +--------
drivers/bus/dpaa/dpaa_bus.c | 71 ++++++++----------
drivers/bus/fslmc/fslmc_bus.c | 75 ++++++++------------
drivers/bus/fslmc/fslmc_vfio.c | 21 ++----
drivers/bus/ifpga/ifpga_bus.c | 8 ++-
drivers/bus/pci/bsd/pci.c | 5 +-
drivers/bus/pci/linux/pci.c | 2 +-
drivers/bus/pci/pci_common.c | 51 ++++---------
drivers/bus/pci/private.h | 11 ---
drivers/bus/pci/windows/pci.c | 4 +-
drivers/bus/platform/platform.c | 43 +----------
drivers/bus/uacce/uacce.c | 39 +---------
drivers/bus/vdev/vdev.c | 2 +-
drivers/bus/vmbus/linux/vmbus_bus.c | 2 +-
drivers/bus/vmbus/private.h | 3 -
drivers/bus/vmbus/vmbus_common.c | 45 +++---------
drivers/dma/idxd/idxd_bus.c | 18 +----
lib/eal/common/eal_common_bus.c | 54 ++++++++++++++
lib/eal/common/eal_common_options.c | 10 +++
lib/eal/common/eal_internal_cfg.h | 1 +
lib/eal/common/eal_option_list.h | 2 +
lib/eal/include/bus_driver.h | 38 ++++++++++
30 files changed, 314 insertions(+), 367 deletions(-)

--
2.53.0