[v3,0/8] raw/ioat: driver for Intel QuickData Technology
mbox series

Message ID 20190627104055.8244-1-bruce.richardson@intel.com
Headers show
Series
  • raw/ioat: driver for Intel QuickData Technology
Related show

Message

Bruce Richardson June 27, 2019, 10:40 a.m. UTC
This patch series adds support for the Intel QuickData Technology
device, part of the Intel I/O Acceleration Technology (Intel I/OAT). It
is a raw device for allowing hardware DMA i.e. data copies in hardware.

Performing the copies in hardware can provide performance improvements
for applications where the average copy size is reasonably large, e.g.
1k packets. For smaller packets, e.g. 64-256 bytes, offloading the copy
may reduce performance due to the overhead of using hardware.

V3:
 * removed DPDK-specific structure for the descriptor format and reused
   the structure in the imported file rte_ioat_spec.h

V2:
* moved tests to rawdev selftest function
* some checkpatch and other small cleanups
* added extra documentation details on supported hardware
* aligned the changes to dpdk-devbind with the changes in the NTB set
  for consistency

Bruce Richardson (8):
  raw/ioat: add initial support for ioat rawdev driver
  usertools/dpdk-devbind.py: add support for IOAT devices
  raw/ioat: add register definition file
  raw/ioat: create device on probe and destroy on release
  raw/ioat: add device info function
  raw/ioat: add configure, start and stop functions
  raw/ioat: add statistics functions
  raw/ioat: add local API to perform copies

 MAINTAINERS                                 |   6 +-
 app/test/test_rawdev.c                      |  19 ++
 config/common_armv8a_linux                  |   1 +
 config/common_base                          |   5 +
 config/defconfig_arm-armv7a-linuxapp-gcc    |   1 +
 config/defconfig_ppc_64-power8-linuxapp-gcc |   1 +
 doc/guides/rawdevs/index.rst                |   1 +
 doc/guides/rawdevs/ioat_rawdev.rst          | 265 +++++++++++++++++
 doc/guides/rel_notes/release_19_08.rst      |  11 +
 drivers/raw/Makefile                        |   1 +
 drivers/raw/ioat/Makefile                   |  31 ++
 drivers/raw/ioat/ioat_rawdev.c              | 313 ++++++++++++++++++++
 drivers/raw/ioat/ioat_rawdev_test.c         | 235 +++++++++++++++
 drivers/raw/ioat/meson.build                |  10 +
 drivers/raw/ioat/rte_ioat_rawdev.h          | 230 ++++++++++++++
 drivers/raw/ioat/rte_ioat_spec.h            | 301 +++++++++++++++++++
 drivers/raw/ioat/rte_pmd_ioat_version.map   |   4 +
 drivers/raw/meson.build                     |   4 +-
 mk/rte.app.mk                               |   1 +
 usertools/dpdk-devbind.py                   |  10 +
 20 files changed, 1448 insertions(+), 2 deletions(-)
 create mode 100644 doc/guides/rawdevs/ioat_rawdev.rst
 create mode 100644 drivers/raw/ioat/Makefile
 create mode 100644 drivers/raw/ioat/ioat_rawdev.c
 create mode 100644 drivers/raw/ioat/ioat_rawdev_test.c
 create mode 100644 drivers/raw/ioat/meson.build
 create mode 100644 drivers/raw/ioat/rte_ioat_rawdev.h
 create mode 100644 drivers/raw/ioat/rte_ioat_spec.h
 create mode 100644 drivers/raw/ioat/rte_pmd_ioat_version.map

Comments

Van Haaren, Harry June 27, 2019, 3:34 p.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson
> Sent: Thursday, June 27, 2019 11:41 AM
> To: dev@dpdk.org
> Cc: thomas@monjalon.net; jerinj@marvell.com; Richardson, Bruce
> <bruce.richardson@intel.com>
> Subject: [dpdk-dev] [PATCH v3 0/8] raw/ioat: driver for Intel QuickData
> Technology
> 
> This patch series adds support for the Intel QuickData Technology
> device, part of the Intel I/O Acceleration Technology (Intel I/OAT). It
> is a raw device for allowing hardware DMA i.e. data copies in hardware.
> 
> Performing the copies in hardware can provide performance improvements
> for applications where the average copy size is reasonably large, e.g.
> 1k packets. For smaller packets, e.g. 64-256 bytes, offloading the copy
> may reduce performance due to the overhead of using hardware.

Applied (release notes conflict - but that's par for the course close to integration)
Build each patch with meson (git rebase -x is awesome :)

Ran unit tests:
$ ioat_rawdev_probe(): Init 0000:00:04.0 on NUMA node 0
$ failed_enqueues: 0   successful_enqueues: 3300   copies_started: 3300   copies_completed: 3300

All seems fine to me;

Series-Tested-by: Harry van Haaren <harry.van.haaren@intel.com>