[dpdk-dev] [PATCH v5 00/19] Generic devargs parsing

Gaetan Rivet gaetan.rivet at 6wind.com
Wed Jun 21 01:35:34 CEST 2017

The second part of the work outlined in [1] and [2]. The first part is
at [3].

In this patchset, the representation of devices in rte_devargs is made generic
to remove some dependencies of the EAL on specific buses implementations.
Following the device types being characterized by their bus, the DEVTYPE
flags are updated not to reference virtual / PCI devices anymore.

The device type was one of two elements expressed by these flags and the
bus handle only covers one. The second is the bus scan behavior, namely
"whitelist mode" or "blacklist mode".
These two modes are consequently introduced as bus scan policies, expressed
within a bus configuration structure.

Finally, once all specialized parts have been removed from rte_devargs,
a cleaner rte_devargs parser is proposed. This parser should allow
following further changes without having to update its API, and is
already available for third parties to build rte_devargs structures from
device declarations.

With this patchset, it is now possible to use any device type on the EAL
command line, with either the -w or -b parameters. The bus name can be
used to explicitly ask for one bus to handle a device if there is any

Buses needs only to implement the "parse" method for their devices to be
declared in this way.

[1]: http://dpdk.org/ml/archives/dev/2017-May/065634.html
[2]: http://dpdk.org/ml/archives/dev/2017-May/065670.html
[3]: http://dpdk.org/ml/archives/dev/2017-May/066341.html

This patchset depends on:

[PATCH 0/9] rte_bus parse API

v1 -> v2:

  * fix PCI whitelist mode

v2 -> v3:

  * Rebase the series on the new plug / unplug API

v3 -> v4:

  * Fix rte_devargs parsing helper
  * Introduce new rte_devargs clone function
  * Introduce new rte_devargs release function
  * Fix test application for rte_devargs.
    TODO: rewrite complete rte_devargs  autotest.
  * Fix a few rte_pci references.
  * Update EAL command line help for -w / -b


  * Fix integration issue with new arbitrary bus name parsing.

Gaetan Rivet (19):
  net/bonding: properly reference PCI header
  net/bnxt: properly reference PCI header
  net/mlx5: properly reference PCI header
  net/e1000: properly reference PCI header
  net/ixgbe: properly reference PCI header
  net/sfc: properly reference PCI header
  app/testpmd: properly reference PCI header
  test: properly reference PCI header
  dev: device kernel module is a device attribute
  bus: introduce bus scan policies
  devargs: parse bus policies
  devargs: generic device representation
  pci: update device name
  net/virtio: do not reference device type
  devargs: generic device types
  devargs: introduce cleaner parsing helper
  devargs: clone function
  devargs: remove function
  eal: change whitelist / blacklist command line doc

 app/test-pmd/testpmd.c                          |   9 +-
 app/test-pmd/testpmd.h                          |   2 +
 doc/guides/rel_notes/deprecation.rst            |   5 +
 drivers/net/bnxt/bnxt.h                         |   1 +
 drivers/net/bonding/rte_eth_bond_args.c         |   1 +
 drivers/net/e1000/e1000_ethdev.h                |   1 +
 drivers/net/ixgbe/ixgbe_ethdev.h                |   1 +
 drivers/net/mlx5/mlx5.h                         |   1 +
 drivers/net/sfc/sfc.h                           |   1 +
 drivers/net/virtio/virtio_pci.c                 |   5 +-
 lib/librte_eal/bsdapp/eal/rte_eal_version.map   |   2 +
 lib/librte_eal/common/eal_common_devargs.c      | 176 ++++++++++++++++--------
 lib/librte_eal/common/eal_common_options.c      |  31 ++---
 lib/librte_eal/common/eal_common_pci.c          |  16 ++-
 lib/librte_eal/common/eal_common_vdev.c         |  18 ++-
 lib/librte_eal/common/eal_options.h             |   8 +-
 lib/librte_eal/common/include/rte_bus.h         |  17 +++
 lib/librte_eal/common/include/rte_dev.h         |  12 ++
 lib/librte_eal/common/include/rte_devargs.h     |  68 ++++++---
 lib/librte_eal/common/include/rte_pci.h         |   9 --
 lib/librte_eal/common/include/rte_vdev.h        |   2 +-
 lib/librte_eal/linuxapp/eal/rte_eal_version.map |   2 +
 test/test/test_devargs.c                        |  45 +++---
 test/test/virtual_pmd.c                         |   1 +
 24 files changed, 278 insertions(+), 156 deletions(-)


More information about the dev mailing list