[dpdk-dev] [PATCH v4 08/12] raw/ioat: add bus driver for device scanning automatically

Bruce Richardson bruce.richardson at intel.com
Tue May 4 14:07:25 CEST 2021


On Mon, May 03, 2021 at 11:32:04PM +0200, Thomas Monjalon wrote:
> 30/04/2021 17:06, Bruce Richardson:
> > Rather than using a vdev with args, DPDK can scan and initialize the
> > devices automatically using a bus-type driver. This bus does not need to
> > worry about registering device drivers, rather it can initialize the
> > devices directly on probe.
> > 
> > The device instances (queues) to use are detected from /dev with the
> > additional info about them got from /sys.
> > 
> > Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> > ---
> > --- a/doc/guides/rawdevs/ioat.rst
> > +++ b/doc/guides/rawdevs/ioat.rst
> > @@ -78,7 +78,7 @@ Example configuration for a work queue::
> >  
> >          $ accel-config config-wq dsa0/wq0.0 --group-id=0 \
> >             --mode=dedicated --priority=10 --wq-size=8 \
> > -           --type=user --name=app1
> > +           --type=user --name=dpdk_app1
> 
> It looks to belong to commit "make workqueue name configurable in script".
> 

It could, but I think it better belongs here, because this is the commit
where it's important that the name of the queue has the appropriate prefix.

> >  Once the devices have been configured, they need to be enabled::
> >  
> > @@ -114,15 +114,18 @@ the device driver on the EAL commandline, via the ``allowlist`` or ``-a`` flag e
> >  
> >  	$ dpdk-test -a <b:d:f>,max_queues=4
> >  
> > -If the device is bound to the IDXD kernel driver (and previously configured with sysfs),
> > -then a specific work queue needs to be passed to the application via a vdev parameter.
> > -This vdev parameter take the driver name and work queue name as parameters.
> > -For example, to use work queue 0 on Intel\ |reg| DSA instance 0::
> > -
> > -        $ dpdk-test --no-pci --vdev=rawdev_idxd,wq=0.0
> > -
> > -Once probed successfully, the device will appear as a ``rawdev``, that is a
> > -"raw device type" inside DPDK, and can be accessed using APIs from the
> > +For devices bound to the IDXD kernel driver,
> > +the DPDK ioat driver will automatically perform a scan for available workqueues to use.
> > +Any workqueues found listed in ``/dev/dsa`` on the system will be checked in ``/sys``,
> > +and any which have ``dpdk_`` prefix in their name will be automatically probed by the
> > +driver to make them available to the application.
> > +Alternatively, to support use by multiple DPDK processes simultaneously,
> > +the value used as the DPDK ``--file-prefix`` parameter may be used as a workqueue name prefix,
> > +instead of ``dpdk_``,
> > +allowing each DPDK application instance to only use a subset of configured queues.
> > +
> > +Once probed successfully, irrespective of kernel driver, the device will appear as a ``rawdev``,
> > +that is a "raw device type" inside DPDK, and can be accessed using APIs from the
> >  ``rte_rawdev`` library.
> [...]
> > --- a/drivers/raw/ioat/meson.build
> > +++ b/drivers/raw/ioat/meson.build
> > @@ -4,13 +4,13 @@
> >  build = dpdk_conf.has('RTE_ARCH_X86')
> >  reason = 'only supported on x86'
> >  sources = files(
> > +        'idxd_bus.c',
> >          'idxd_pci.c',
> > -        'idxd_vdev.c',
> >          'ioat_common.c',
> >          'ioat_rawdev.c',
> >          'ioat_rawdev_test.c',
> >  )
> > -deps += ['bus_pci', 'bus_vdev', 'mbuf', 'rawdev']
> > +deps += ['bus_pci', 'mbuf', 'rawdev']
> 
> OK to remove the vdev dependency by creating a bus singleton.
> 
> You may want to allow iterating devices of the bus
> by implementing .dev_iterate callback.
> 

I was wondering about that. What is the expected use-case in general for
such iteration?


More information about the dev mailing list