Following the evolutions announced in [1], here is the first part of the rte_devargs rework planned for 17.08. The rationale has been partially explained in [2].
This first part covers the introduction of the necessary facilities in rte_bus to allow for generic device parsing. This API is implemented for the virtual and PCI buses. Additionally, this rte_bus evolution is being used within rte_devargs to characterize a device type by its bus. This work is the first of two parts to reduce the dependency of the EAL upon specific bus implementations. The modified rte_devargs parsing allows declaring on the EAL command line explicit buses to handle a device. The format is as follow: --vdev="virtual:net_ring0" --vdev="net_tap0,iface=tap0" -w PCI:00:02.0 -w 00:03.0 This explicit bus designation is optional; no evolution is currently forced on users to migrate to this new format. The separating character is arbitrary. [1]: http://dpdk.org/ml/archives/dev/2017-May/065634.html [2]: http://dpdk.org/ml/archives/dev/2017-May/065670.html This patchset depends on: bus attach/detach API and hotplug rework http://dpdk.org/ml/archives/dev/2017-June/069643.html http://dpdk.org/dev/patchwork/patch/26135/ v1 -> v2: * fix PCI parse implementation v2 --> v3: * Rebase the series on the new plug / unplug API v3 --> v4: * Several bug fixes, commit log rewrite. * Follow the changes to the plug / unplug API. v5: * Do not verify bus name on bus registration. Actually, a legal bus name is not defined anymore. The bus/device separator in a device declaration can be anything, as long as it is a single character. The behavior is otherwise unchanged. v6: * Rebase upon new hotplug patchset version. * Rename rte_bus_from_dev as rte_bus_find_by_device_name. This function is now private to the EAL. * Remove rte_bus_from_name, as it has been integrated as rte_bus_find_by_name by Jan Blunck. * Reduce parsing ambiguity in rte_devargs. Gaetan Rivet (6): bus: fix bus name registration bus: introduce parsing functionality vdev: implement parse bus operation pci: implement parse bus operation bus: add helper to find a bus from a device name devargs: parse bus info lib/librte_eal/common/eal_common_bus.c | 15 +++++++ lib/librte_eal/common/eal_common_devargs.c | 42 +++++++++++++++---- lib/librte_eal/common/eal_common_pci.c | 15 +++++++ lib/librte_eal/common/eal_common_vdev.c | 64 +++++++++++++++-------------- lib/librte_eal/common/eal_private.h | 12 ++++++ lib/librte_eal/common/include/rte_bus.h | 23 ++++++++++- lib/librte_eal/common/include/rte_devargs.h | 3 ++ 7 files changed, 135 insertions(+), 39 deletions(-) -- 2.1.4