From: Kevin Laatz <kevin.laatz@intel.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, bruce.richardson@intel.com,
fengchengwen@huawei.com, jerinj@marvell.com,
conor.walsh@intel.com, Kevin Laatz <kevin.laatz@intel.com>
Subject: [dpdk-dev] [PATCH v10 10/16] dma/idxd: add data-path job completion functions
Date: Tue, 19 Oct 2021 14:10:35 +0000 [thread overview]
Message-ID: <20211019141041.1890983-11-kevin.laatz@intel.com> (raw)
In-Reply-To: <20211019141041.1890983-1-kevin.laatz@intel.com>
Add the data path functions for gathering completed operations.
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>
---
doc/guides/dmadevs/idxd.rst | 32 ++++-
drivers/dma/idxd/idxd_common.c | 236 +++++++++++++++++++++++++++++++
drivers/dma/idxd/idxd_internal.h | 5 +
3 files changed, 272 insertions(+), 1 deletion(-)
diff --git a/doc/guides/dmadevs/idxd.rst b/doc/guides/dmadevs/idxd.rst
index d548c4751a..d4a210b854 100644
--- a/doc/guides/dmadevs/idxd.rst
+++ b/doc/guides/dmadevs/idxd.rst
@@ -143,7 +143,37 @@ Performing Data Copies
~~~~~~~~~~~~~~~~~~~~~~~
Refer to the :ref:`Enqueue / Dequeue APIs <dmadev_enqueue_dequeue>` section of the dmadev library
-documentation for details on operation enqueue and submission API usage.
+documentation for details on operation enqueue, submission and completion API usage.
It is expected that, for efficiency reasons, a burst of operations will be enqueued to the
device via multiple enqueue calls between calls to the ``rte_dma_submit()`` function.
+
+When gathering completions, ``rte_dma_completed()`` should be used, up until the point an error
+occurs in an operation. If an error was encountered, ``rte_dma_completed_status()`` must be used
+to kick the device off to continue processing operations and also to gather the status of each
+individual operations which is filled in to the ``status`` array provided as parameter by the
+application.
+
+The following status codes are supported by IDXD:
+
+* ``RTE_DMA_STATUS_SUCCESSFUL``: The operation was successful.
+* ``RTE_DMA_STATUS_INVALID_OPCODE``: The operation failed due to an invalid operation code.
+* ``RTE_DMA_STATUS_INVALID_LENGTH``: The operation failed due to an invalid data length.
+* ``RTE_DMA_STATUS_NOT_ATTEMPTED``: The operation was not attempted.
+* ``RTE_DMA_STATUS_ERROR_UNKNOWN``: The operation failed due to an unspecified error.
+
+The following code shows how to retrieve the number of successfully completed
+copies within a burst and then using ``rte_dma_completed_status()`` to check
+which operation failed and kick off the device to continue processing operations:
+
+.. code-block:: C
+
+ enum rte_dma_status_code status[COMP_BURST_SZ];
+ uint16_t count, idx, status_count;
+ bool error = 0;
+
+ count = rte_dma_completed(dev_id, vchan, COMP_BURST_SZ, &idx, &error);
+
+ if (error){
+ status_count = rte_dma_completed_status(dev_id, vchan, COMP_BURST_SZ, &idx, status);
+ }
diff --git a/drivers/dma/idxd/idxd_common.c b/drivers/dma/idxd/idxd_common.c
index a686ad421c..76bc2e1364 100644
--- a/drivers/dma/idxd/idxd_common.c
+++ b/drivers/dma/idxd/idxd_common.c
@@ -141,6 +141,240 @@ idxd_submit(void *dev_private, uint16_t qid __rte_unused)
return 0;
}
+static enum rte_dma_status_code
+get_comp_status(struct idxd_completion *c)
+{
+ uint8_t st = c->status;
+ switch (st) {
+ /* successful descriptors are not written back normally */
+ case IDXD_COMP_STATUS_INCOMPLETE:
+ case IDXD_COMP_STATUS_SUCCESS:
+ return RTE_DMA_STATUS_SUCCESSFUL;
+ case IDXD_COMP_STATUS_INVALID_OPCODE:
+ return RTE_DMA_STATUS_INVALID_OPCODE;
+ case IDXD_COMP_STATUS_INVALID_SIZE:
+ return RTE_DMA_STATUS_INVALID_LENGTH;
+ case IDXD_COMP_STATUS_SKIPPED:
+ return RTE_DMA_STATUS_NOT_ATTEMPTED;
+ default:
+ return RTE_DMA_STATUS_ERROR_UNKNOWN;
+ }
+}
+
+static __rte_always_inline int
+batch_ok(struct idxd_dmadev *idxd, uint16_t max_ops, enum rte_dma_status_code *status)
+{
+ uint16_t ret;
+ uint8_t bstatus;
+
+ if (max_ops == 0)
+ return 0;
+
+ /* first check if there are any unreturned handles from last time */
+ if (idxd->ids_avail != idxd->ids_returned) {
+ ret = RTE_MIN((uint16_t)(idxd->ids_avail - idxd->ids_returned), max_ops);
+ idxd->ids_returned += ret;
+ if (status)
+ memset(status, RTE_DMA_STATUS_SUCCESSFUL, ret * sizeof(*status));
+ return ret;
+ }
+
+ if (idxd->batch_idx_read == idxd->batch_idx_write)
+ return 0;
+
+ bstatus = idxd->batch_comp_ring[idxd->batch_idx_read].status;
+ /* now check if next batch is complete and successful */
+ if (bstatus == IDXD_COMP_STATUS_SUCCESS) {
+ /* since the batch idx ring stores the start of each batch, pre-increment to lookup
+ * start of next batch.
+ */
+ if (++idxd->batch_idx_read > idxd->max_batches)
+ idxd->batch_idx_read = 0;
+ idxd->ids_avail = idxd->batch_idx_ring[idxd->batch_idx_read];
+
+ ret = RTE_MIN((uint16_t)(idxd->ids_avail - idxd->ids_returned), max_ops);
+ idxd->ids_returned += ret;
+ if (status)
+ memset(status, RTE_DMA_STATUS_SUCCESSFUL, ret * sizeof(*status));
+ return ret;
+ }
+ /* check if batch is incomplete */
+ else if (bstatus == IDXD_COMP_STATUS_INCOMPLETE)
+ return 0;
+
+ return -1; /* error case */
+}
+
+static inline uint16_t
+batch_completed(struct idxd_dmadev *idxd, uint16_t max_ops, bool *has_error)
+{
+ uint16_t i;
+ uint16_t b_start, b_end, next_batch;
+
+ int ret = batch_ok(idxd, max_ops, NULL);
+ if (ret >= 0)
+ return ret;
+
+ /* ERROR case, not successful, not incomplete */
+ /* Get the batch size, and special case size 1.
+ * once we identify the actual failure job, return other jobs, then update
+ * the batch ring indexes to make it look like the first job of the batch has failed.
+ * Subsequent calls here will always return zero packets, and the error must be cleared by
+ * calling the completed_status() function.
+ */
+ next_batch = (idxd->batch_idx_read + 1);
+ if (next_batch > idxd->max_batches)
+ next_batch = 0;
+ b_start = idxd->batch_idx_ring[idxd->batch_idx_read];
+ b_end = idxd->batch_idx_ring[next_batch];
+
+ if (b_end - b_start == 1) { /* not a batch */
+ *has_error = true;
+ return 0;
+ }
+
+ for (i = b_start; i < b_end; i++) {
+ struct idxd_completion *c = (void *)&idxd->desc_ring[i & idxd->desc_ring_mask];
+ if (c->status > IDXD_COMP_STATUS_SUCCESS) /* ignore incomplete(0) and success(1) */
+ break;
+ }
+ ret = RTE_MIN((uint16_t)(i - idxd->ids_returned), max_ops);
+ if (ret < max_ops)
+ *has_error = true; /* we got up to the point of error */
+ idxd->ids_avail = idxd->ids_returned += ret;
+
+ /* to ensure we can call twice and just return 0, set start of batch to where we finished */
+ idxd->batch_comp_ring[idxd->batch_idx_read].completed_size -= ret;
+ idxd->batch_idx_ring[idxd->batch_idx_read] += ret;
+ if (idxd->batch_idx_ring[next_batch] - idxd->batch_idx_ring[idxd->batch_idx_read] == 1) {
+ /* copy over the descriptor status to the batch ring as if no batch */
+ uint16_t d_idx = idxd->batch_idx_ring[idxd->batch_idx_read] & idxd->desc_ring_mask;
+ struct idxd_completion *desc_comp = (void *)&idxd->desc_ring[d_idx];
+ idxd->batch_comp_ring[idxd->batch_idx_read].status = desc_comp->status;
+ }
+
+ return ret;
+}
+
+static uint16_t
+batch_completed_status(struct idxd_dmadev *idxd, uint16_t max_ops, enum rte_dma_status_code *status)
+{
+ uint16_t next_batch;
+
+ int ret = batch_ok(idxd, max_ops, status);
+ if (ret >= 0)
+ return ret;
+
+ /* ERROR case, not successful, not incomplete */
+ /* Get the batch size, and special case size 1.
+ */
+ next_batch = (idxd->batch_idx_read + 1);
+ if (next_batch > idxd->max_batches)
+ next_batch = 0;
+ const uint16_t b_start = idxd->batch_idx_ring[idxd->batch_idx_read];
+ const uint16_t b_end = idxd->batch_idx_ring[next_batch];
+ const uint16_t b_len = b_end - b_start;
+ if (b_len == 1) {/* not a batch */
+ *status = get_comp_status(&idxd->batch_comp_ring[idxd->batch_idx_read]);
+ idxd->ids_avail++;
+ idxd->ids_returned++;
+ idxd->batch_idx_read = next_batch;
+ return 1;
+ }
+
+ /* not a single-element batch, need to process more.
+ * Scenarios:
+ * 1. max_ops >= batch_size - can fit everything, simple case
+ * - loop through completed ops and then add on any not-attempted ones
+ * 2. max_ops < batch_size - can't fit everything, more complex case
+ * - loop through completed/incomplete and stop when hit max_ops
+ * - adjust the batch descriptor to update where we stopped, with appropriate bcount
+ * - if bcount is to be exactly 1, update the batch descriptor as it will be treated as
+ * non-batch next time.
+ */
+ const uint16_t bcount = idxd->batch_comp_ring[idxd->batch_idx_read].completed_size;
+ for (ret = 0; ret < b_len && ret < max_ops; ret++) {
+ struct idxd_completion *c = (void *)
+ &idxd->desc_ring[(b_start + ret) & idxd->desc_ring_mask];
+ status[ret] = (ret < bcount) ? get_comp_status(c) : RTE_DMA_STATUS_NOT_ATTEMPTED;
+ }
+ idxd->ids_avail = idxd->ids_returned += ret;
+
+ /* everything fit */
+ if (ret == b_len) {
+ idxd->batch_idx_read = next_batch;
+ return ret;
+ }
+
+ /* set up for next time, update existing batch descriptor & start idx at batch_idx_read */
+ idxd->batch_idx_ring[idxd->batch_idx_read] += ret;
+ if (ret > bcount) {
+ /* we have only incomplete ones - set batch completed size to 0 */
+ struct idxd_completion *comp = &idxd->batch_comp_ring[idxd->batch_idx_read];
+ comp->completed_size = 0;
+ /* if there is only one descriptor left, job skipped so set flag appropriately */
+ if (b_len - ret == 1)
+ comp->status = IDXD_COMP_STATUS_SKIPPED;
+ } else {
+ struct idxd_completion *comp = &idxd->batch_comp_ring[idxd->batch_idx_read];
+ comp->completed_size -= ret;
+ /* if there is only one descriptor left, copy status info straight to desc */
+ if (comp->completed_size == 1) {
+ struct idxd_completion *c = (void *)
+ &idxd->desc_ring[(b_start + ret) & idxd->desc_ring_mask];
+ comp->status = c->status;
+ /* individual descs can be ok without writeback, but not batches */
+ if (comp->status == IDXD_COMP_STATUS_INCOMPLETE)
+ comp->status = IDXD_COMP_STATUS_SUCCESS;
+ } else if (bcount == b_len) {
+ /* check if we still have an error, and clear flag if not */
+ uint16_t i;
+ for (i = b_start + ret; i < b_end; i++) {
+ struct idxd_completion *c = (void *)
+ &idxd->desc_ring[i & idxd->desc_ring_mask];
+ if (c->status > IDXD_COMP_STATUS_SUCCESS)
+ break;
+ }
+ if (i == b_end) /* no errors */
+ comp->status = IDXD_COMP_STATUS_SUCCESS;
+ }
+ }
+
+ return ret;
+}
+
+uint16_t
+idxd_completed(void *dev_private, uint16_t qid __rte_unused, uint16_t max_ops,
+ uint16_t *last_idx, bool *has_error)
+{
+ struct idxd_dmadev *idxd = dev_private;
+ uint16_t batch, ret = 0;
+
+ do {
+ batch = batch_completed(idxd, max_ops - ret, has_error);
+ ret += batch;
+ } while (batch > 0 && *has_error == false);
+
+ *last_idx = idxd->ids_returned - 1;
+ return ret;
+}
+
+uint16_t
+idxd_completed_status(void *dev_private, uint16_t qid __rte_unused, uint16_t max_ops,
+ uint16_t *last_idx, enum rte_dma_status_code *status)
+{
+ struct idxd_dmadev *idxd = dev_private;
+ uint16_t batch, ret = 0;
+
+ do {
+ batch = batch_completed_status(idxd, max_ops - ret, &status[ret]);
+ ret += batch;
+ } while (batch > 0);
+
+ *last_idx = idxd->ids_returned - 1;
+ return ret;
+}
+
int
idxd_dump(const struct rte_dma_dev *dev, FILE *f)
{
@@ -273,6 +507,8 @@ idxd_dmadev_create(const char *name, struct rte_device *dev,
dmadev->fp_obj->copy = idxd_enqueue_copy;
dmadev->fp_obj->fill = idxd_enqueue_fill;
dmadev->fp_obj->submit = idxd_submit;
+ dmadev->fp_obj->completed = idxd_completed;
+ dmadev->fp_obj->completed_status = idxd_completed_status;
idxd = dmadev->data->dev_private;
*idxd = *base_idxd; /* copy over the main fields already passed in */
diff --git a/drivers/dma/idxd/idxd_internal.h b/drivers/dma/idxd/idxd_internal.h
index ab4d71095e..4208b0dee8 100644
--- a/drivers/dma/idxd/idxd_internal.h
+++ b/drivers/dma/idxd/idxd_internal.h
@@ -92,5 +92,10 @@ int idxd_enqueue_copy(void *dev_private, uint16_t qid, rte_iova_t src,
int idxd_enqueue_fill(void *dev_private, uint16_t qid, uint64_t pattern,
rte_iova_t dst, unsigned int length, uint64_t flags);
int idxd_submit(void *dev_private, uint16_t qid);
+uint16_t idxd_completed(void *dev_private, uint16_t qid, uint16_t max_ops,
+ uint16_t *last_idx, bool *has_error);
+uint16_t idxd_completed_status(void *dev_private, uint16_t qid __rte_unused,
+ uint16_t max_ops, uint16_t *last_idx,
+ enum rte_dma_status_code *status);
#endif /* _IDXD_INTERNAL_H_ */
--
2.30.2
next prev parent reply other threads:[~2021-10-19 14:30 UTC|newest]
Thread overview: 243+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-27 17:20 [dpdk-dev] [PATCH 00/13] add dmadev driver for idxd devices Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 01/13] raw/ioat: only build if dmadev not present Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 02/13] doc: initial commit for dmadevs section Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 03/13] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 04/13] dma/idxd: add bus device probing Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 05/13] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 06/13] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 07/13] dma/idxd: add datapath structures Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 08/13] dma/idxd: add configure and info_get functions Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 09/13] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 10/13] dma/idxd: add data-path job submission functions Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 11/13] dma/idxd: add data-path job completion functions Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 12/13] dma/idxd: add operation statistic tracking Kevin Laatz
2021-08-27 17:20 ` [dpdk-dev] [PATCH 13/13] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 02/16] doc: initial commit for dmadevs section Kevin Laatz
2021-09-03 10:51 ` Bruce Richardson
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 03/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 04/16] dma/idxd: add bus device probing Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 05/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 06/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 07/16] dma/idxd: add datapath structures Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 08/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 09/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 10/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 11/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 12/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 13/16] dma/idxd: add vchan idle function Kevin Laatz
2021-09-03 10:49 ` [dpdk-dev] [PATCH v2 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-09-03 10:50 ` [dpdk-dev] [PATCH v2 15/16] devbind: add dma device class Kevin Laatz
2021-09-03 10:50 ` [dpdk-dev] [PATCH v2 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-09-08 10:29 ` [dpdk-dev] [PATCH v3 00/17] add dmadev driver for idxd devices Kevin Laatz
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 01/17] raw/ioat: only build if dmadev not present Kevin Laatz
2021-09-08 16:00 ` Conor Walsh
2021-09-09 11:11 ` Kevin Laatz
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 02/17] doc: initial commit for dmadevs section Kevin Laatz
2021-09-08 16:00 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 03/17] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-09-08 16:47 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 04/17] dma/idxd: add bus device probing Kevin Laatz
2021-09-08 16:47 ` Conor Walsh
2021-09-09 11:10 ` Kevin Laatz
2021-09-15 10:12 ` Maxime Coquelin
2021-09-15 11:06 ` Bruce Richardson
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 05/17] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-09-08 16:47 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 06/17] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-09-08 16:48 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 07/17] dma/idxd: add datapath structures Kevin Laatz
2021-09-09 11:23 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 08/17] dma/idxd: add configure and info_get functions Kevin Laatz
2021-09-09 11:23 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 09/17] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-09-09 11:24 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 10/17] dma/idxd: add data-path job submission functions Kevin Laatz
2021-09-09 11:24 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 11/17] dma/idxd: add data-path job completion functions Kevin Laatz
2021-09-09 11:24 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 12/17] dma/idxd: add operation statistic tracking Kevin Laatz
2021-09-09 11:25 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 13/17] dma/idxd: add vchan status function Kevin Laatz
2021-09-09 11:26 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 14/17] dma/idxd: add burst capacity API Kevin Laatz
2021-09-09 11:26 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 15/17] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 16/17] devbind: add dma device class Kevin Laatz
2021-09-09 11:26 ` Conor Walsh
2021-09-08 10:30 ` [dpdk-dev] [PATCH v3 17/17] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-09-09 11:27 ` Conor Walsh
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 15/16] devbind: add dma device class Kevin Laatz
2021-09-17 14:02 ` [dpdk-dev] [PATCH v4 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-09-20 10:15 ` Bruce Richardson
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-09-20 10:23 ` Bruce Richardson
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-09-22 2:04 ` fengchengwen
2021-09-22 9:12 ` Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-09-22 2:12 ` fengchengwen
2021-09-22 9:18 ` Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-09-20 10:27 ` Bruce Richardson
2021-09-22 2:31 ` fengchengwen
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-09-22 2:40 ` fengchengwen
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-09-20 10:30 ` Bruce Richardson
2021-09-22 3:22 ` fengchengwen
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-09-20 10:36 ` Bruce Richardson
2021-09-22 3:47 ` fengchengwen
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-09-22 3:51 ` fengchengwen
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-09-20 10:39 ` Bruce Richardson
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-09-20 10:43 ` Bruce Richardson
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 15/16] devbind: add dma device class Kevin Laatz
2021-09-20 10:45 ` Bruce Richardson
2021-09-22 2:19 ` fengchengwen
2021-09-17 15:24 ` [dpdk-dev] [PATCH v5 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-09-20 10:46 ` Bruce Richardson
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 15/16] devbind: add dma device class Kevin Laatz
2021-09-24 13:39 ` [dpdk-dev] [PATCH v6 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-10-18 10:32 ` Thomas Monjalon
2021-10-18 10:41 ` Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 15/16] devbind: add dma device class Kevin Laatz
2021-10-13 16:30 ` [dpdk-dev] [PATCH v7 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-10-19 7:04 ` Thomas Monjalon
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 15/16] devbind: add dma device class Kevin Laatz
2021-10-18 12:28 ` [dpdk-dev] [PATCH v8 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 15/16] devbind: add dma device class Kevin Laatz
2021-10-19 11:25 ` [dpdk-dev] [PATCH v9 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-10-20 6:54 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-10-20 7:10 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-10-20 7:34 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-10-20 7:44 ` fengchengwen
2021-10-20 8:20 ` Bruce Richardson
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-10-20 7:54 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-10-20 8:04 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-10-20 8:27 ` fengchengwen
2021-10-19 14:10 ` Kevin Laatz [this message]
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-10-20 9:18 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-10-20 9:30 ` fengchengwen
2021-10-20 9:52 ` Bruce Richardson
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-10-20 9:32 ` fengchengwen
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 15/16] devbind: add dma device class Kevin Laatz
2021-10-19 14:10 ` [dpdk-dev] [PATCH v10 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-10-20 16:29 ` [dpdk-dev] [PATCH v11 00/16] add dmadev driver for idxd devices Kevin Laatz
2021-10-20 16:29 ` [dpdk-dev] [PATCH v11 01/16] raw/ioat: only build if dmadev not present Kevin Laatz
2021-10-20 16:29 ` [dpdk-dev] [PATCH v11 02/16] dma/idxd: add skeleton for VFIO based DSA device Kevin Laatz
2021-10-22 15:47 ` Thomas Monjalon
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 03/16] dma/idxd: add bus device probing Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 04/16] dma/idxd: create dmadev instances on bus probe Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 05/16] dma/idxd: create dmadev instances on pci probe Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 06/16] dma/idxd: add datapath structures Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 07/16] dma/idxd: add configure and info_get functions Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 08/16] dma/idxd: add start and stop functions for pci devices Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 09/16] dma/idxd: add data-path job submission functions Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 10/16] dma/idxd: add data-path job completion functions Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 11/16] dma/idxd: add operation statistic tracking Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 12/16] dma/idxd: add vchan status function Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 13/16] dma/idxd: add burst capacity API Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 14/16] dma/idxd: move dpdk_idxd_cfg.py from raw to dma Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 15/16] devbind: add dma device class Kevin Laatz
2021-10-20 16:30 ` [dpdk-dev] [PATCH v11 16/16] devbind: move idxd device ID to dmadev class Kevin Laatz
2021-10-22 18:07 ` [dpdk-dev] [PATCH v11 00/16] add dmadev driver for idxd devices Thomas Monjalon
2021-10-23 6:55 ` David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211019141041.1890983-11-kevin.laatz@intel.com \
--to=kevin.laatz@intel.com \
--cc=bruce.richardson@intel.com \
--cc=conor.walsh@intel.com \
--cc=dev@dpdk.org \
--cc=fengchengwen@huawei.com \
--cc=jerinj@marvell.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).