From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C85EBA0548; Mon, 20 Sep 2021 13:15:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4C32940DF7; Mon, 20 Sep 2021 13:15:37 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 603CF40DF5 for ; Mon, 20 Sep 2021 13:15:35 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10112"; a="286783803" X-IronPort-AV: E=Sophos;i="5.85,308,1624345200"; d="scan'208";a="286783803" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Sep 2021 04:15:34 -0700 X-IronPort-AV: E=Sophos;i="5.85,308,1624345200"; d="scan'208";a="511259134" Received: from bricha3-mobl.ger.corp.intel.com ([10.252.17.156]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 20 Sep 2021 04:15:32 -0700 Date: Mon, 20 Sep 2021 12:15:29 +0100 From: Bruce Richardson To: Conor Walsh Cc: fengchengwen@huawei.com, jerinj@marvell.com, kevin.laatz@intel.com, dev@dpdk.org Message-ID: References: <20210827172550.1522362-1-conor.walsh@intel.com> <20210917154227.737554-1-conor.walsh@intel.com> <20210917154227.737554-2-conor.walsh@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210917154227.737554-2-conor.walsh@intel.com> Subject: Re: [dpdk-dev] [PATCH v4 01/11] dma/ioat: add device probe and removal functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Sep 17, 2021 at 03:42:17PM +0000, Conor Walsh wrote: > Add the basic device probe/remove skeleton code and initial documentation > for new IOAT DMA driver. Maintainers update is also included in this > patch. > > Signed-off-by: Conor Walsh > Reviewed-by: Kevin Laatz > --- > MAINTAINERS | 6 +++ > doc/guides/dmadevs/index.rst | 2 + > doc/guides/dmadevs/ioat.rst | 64 ++++++++++++++++++++++++ > doc/guides/rel_notes/release_21_11.rst | 7 +-- > drivers/dma/ioat/ioat_dmadev.c | 69 ++++++++++++++++++++++++++ > drivers/dma/ioat/ioat_hw_defs.h | 35 +++++++++++++ > drivers/dma/ioat/ioat_internal.h | 20 ++++++++ > drivers/dma/ioat/meson.build | 7 +++ > drivers/dma/ioat/version.map | 3 ++ > drivers/dma/meson.build | 1 + > 10 files changed, 211 insertions(+), 3 deletions(-) > create mode 100644 doc/guides/dmadevs/ioat.rst > create mode 100644 drivers/dma/ioat/ioat_dmadev.c > create mode 100644 drivers/dma/ioat/ioat_hw_defs.h > create mode 100644 drivers/dma/ioat/ioat_internal.h > create mode 100644 drivers/dma/ioat/meson.build > create mode 100644 drivers/dma/ioat/version.map > > diff --git a/MAINTAINERS b/MAINTAINERS > index 9cb59b831d..70993d23e8 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1209,6 +1209,12 @@ M: Kevin Laatz > F: drivers/dma/idxd/ > F: doc/guides/dmadevs/idxd.rst > > +Intel IOAT - EXPERIMENTAL > +M: Bruce Richardson > +M: Conor Walsh > +F: drivers/dma/ioat/ > +F: doc/guides/dmadevs/ioat.rst > + > Unlike the raw/ioat driver, this dmadev driver does not have a private APIs so I'm not sure it needs the EXPERIMENTAL tag on it. > RegEx Drivers > ------------- > diff --git a/doc/guides/dmadevs/index.rst b/doc/guides/dmadevs/index.rst > index 5d4abf880e..c59f4b5c92 100644 > --- a/doc/guides/dmadevs/index.rst > +++ b/doc/guides/dmadevs/index.rst > @@ -12,3 +12,5 @@ an application through DMA API. > :numbered: > > idxd > + ioat > + > diff --git a/doc/guides/dmadevs/ioat.rst b/doc/guides/dmadevs/ioat.rst > new file mode 100644 > index 0000000000..45a2e65d70 > --- /dev/null > +++ b/doc/guides/dmadevs/ioat.rst > @@ -0,0 +1,64 @@ > +.. SPDX-License-Identifier: BSD-3-Clause > + Copyright(c) 2021 Intel Corporation. > + > +.. include:: > + > +IOAT DMA Device Driver > +======================= > + > +The ``ioat`` dmadev driver provides a poll-mode driver (PMD) for Intel\ > +|reg| QuickData Technology which is part of part of Intel\ |reg| I/O > +Acceleration Technology (`Intel I/OAT > +`_). > +This PMD, when used on supported hardware, allows data copies, for example, > +cloning packet data, to be accelerated by IOAT hardware rather than having to > +be done by software, freeing up CPU cycles for other tasks. > + > +Hardware Requirements > +---------------------- > + > +The ``dpdk-devbind.py`` script, included with DPDK, can be used to show the > +presence of supported hardware. Running ``dpdk-devbind.py --status-dev dma`` > +will show all the DMA devices on the system, IOAT devices are included in this > +list. For Intel\ |reg| IOAT devices, the hardware will often be listed as > +"Crystal Beach DMA", or "CBDMA" or on some newer systems '0b00' due to the > +absence of pci-id database entries for them at this point. > + > +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. > + > +Device Setup > +------------- > + > +Intel\ |reg| IOAT devices will need to be bound to a suitable DPDK-supported > +user-space IO driver such as ``vfio-pci`` in order to be used by DPDK. > + > +The ``dpdk-devbind.py`` script can be used to view the state of the devices using:: > + > + $ dpdk-devbind.py --status-dev dma > + > +The ``dpdk-devbind.py`` script can also be used to bind devices to a suitable driver. > +For example:: > + > + $ dpdk-devbind.py -b vfio-pci 00:01.0 00:01.1 > + > +Device Probing and Initialization > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +For devices bound to a suitable DPDK-supported driver (``vfio-pci``), the HW > +devices will be found as part of the device scan done at application > +initialization time without the need to pass parameters to the application. > + > +If the application does not require all the devices available an allowlist can > +be used in the same way that other DPDK devices use them. > + > +For example:: > + > + $ dpdk-test -a > + > +Once probed successfully, the device will appear as a ``dmadev``, that is a > +"DMA device type" inside DPDK, and can be accessed using APIs from the > +``rte_dmadev`` library. > diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst > index c0bfd9c1ba..4d2b7bde1b 100644 > --- a/doc/guides/rel_notes/release_21_11.rst > +++ b/doc/guides/rel_notes/release_21_11.rst > @@ -92,10 +92,11 @@ New Features > * Device allocation and it's multi-process support. > * Control and data plane functions. > > -* **Added IDXD dmadev driver implementation.** > +* **Added Intel dmadev driver implementations.** > > - The IDXD dmadev driver provide device drivers for the Intel DSA devices. > - This device driver can be used through the generic dmadev API. > + The IDXD and IOAT dmadev drivers provide device drivers for Intel DSA > + and IOAT devices. These device drivers can be used through the generic > + dmadev API. > I'm not sure about merging two driver additions into a single release note entry - one for the doc maintainers and tree committers to comment on. Rather than "IOAT devices" I think the official name of the hardware should be used, and you probably should add "respectively" at the end of the first sentence to make it clear (once you change the name) which hardware is used by which driver.