From: Bruce Richardson <bruce.richardson@intel.com>
Only build the rawdev IDXD/IOAT drivers if the dmadev drivers are not
present.
This change requires the dependencies to be reordered in
drivers/meson.build so that rawdev can use the "RTE_DMA_* build macros to
check for the presence of the equivalent dmadev driver.
A note is also added to the documentation to inform users of this change.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
---
v7: add meson reason for not building rawdev
---
doc/guides/rawdevs/ioat.rst | 8 ++++++++
drivers/meson.build | 4 ++--
drivers/raw/ioat/meson.build | 24 +++++++++++++++++++++---
3 files changed, 31 insertions(+), 5 deletions(-)
@@ -34,6 +34,14 @@ Compilation
For builds using ``meson`` and ``ninja``, the driver will be built when the target platform is x86-based.
No additional compilation steps are necessary.
+.. note::
+ Since the addition of the dmadev library, the ``ioat`` and ``idxd`` parts of this driver
+ will only be built if their ``dmadev`` counterparts are not built.
+ The following can be used to disable the ``dmadev`` drivers,
+ if the raw drivers are to be used instead::
+
+ $ meson -Ddisable_drivers=dma/* <build_dir>
+
Device Setup
-------------
@@ -10,15 +10,15 @@ subdirs = [
'common/qat', # depends on bus.
'common/sfc_efx', # depends on bus.
'mempool', # depends on common and bus.
+ 'dma', # depends on common and bus.
'net', # depends on common, bus, mempool
- 'raw', # depends on common, bus and net.
+ 'raw', # depends on common, bus, dma and net.
'crypto', # depends on common, bus and mempool (net in future).
'compress', # depends on common, bus, mempool.
'regex', # depends on common, bus, regexdev.
'vdpa', # depends on common, bus and mempool.
'event', # depends on common, bus, mempool and net.
'baseband', # depends on common and bus.
- 'dma', # depends on common and bus.
]
if meson.is_cross_build()
@@ -2,14 +2,32 @@
# Copyright 2019 Intel Corporation
build = dpdk_conf.has('RTE_ARCH_X86')
+# only use ioat rawdev driver if we don't have the equivalent dmadev ones
+if dpdk_conf.has('RTE_DMA_IDXD') and dpdk_conf.has('RTE_DMA_IOAT')
+ build = false
+ reason = 'replaced by dmadev drivers'
+ subdir_done()
+endif
+
reason = 'only supported on x86'
sources = files(
- 'idxd_bus.c',
- 'idxd_pci.c',
'ioat_common.c',
- 'ioat_rawdev.c',
'ioat_rawdev_test.c',
)
+
+if not dpdk_conf.has('RTE_DMA_IDXD')
+ sources += files(
+ 'idxd_bus.c',
+ 'idxd_pci.c',
+ )
+endif
+
+if not dpdk_conf.has('RTE_DMA_IOAT')
+ sources += files (
+ 'ioat_rawdev.c',
+ )
+endif
+
deps += ['bus_pci', 'mbuf', 'rawdev']
headers = files(
'rte_ioat_rawdev.h',