From: Chengwen Feng <fengchengwen@huawei.com> To: <thomas@monjalon.net>, <ferruh.yigit@intel.com>, <bruce.richardson@intel.com>, <jerinj@marvell.com>, <jerinjacobk@gmail.com>, <andrew.rybchenko@oktetlabs.ru> Cc: <dev@dpdk.org>, <mb@smartsharesystems.com>, <nipun.gupta@nxp.com>, <hemant.agrawal@nxp.com>, <maxime.coquelin@redhat.com>, <honnappa.nagarahalli@arm.com>, <david.marchand@redhat.com>, <sburla@marvell.com>, <pkapoor@marvell.com>, <konstantin.ananyev@intel.com>, <conor.walsh@intel.com>, <kevin.laatz@intel.com> Subject: [dpdk-dev] [PATCH v26 4/6] dmadev: add multi-process support Date: Wed, 13 Oct 2021 20:24:58 +0800 [thread overview] Message-ID: <20211013122500.51552-5-fengchengwen@huawei.com> (raw) In-Reply-To: <20211013122500.51552-1-fengchengwen@huawei.com> This patch add multi-process support for dmadev. Signed-off-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Reviewed-by: Kevin Laatz <kevin.laatz@intel.com> Reviewed-by: Conor Walsh <conor.walsh@intel.com> --- doc/guides/rel_notes/release_21_11.rst | 1 + lib/dmadev/rte_dmadev.c | 183 ++++++++++++++++++++----- lib/dmadev/rte_dmadev_core.h | 2 +- lib/dmadev/rte_dmadev_pmd.h | 29 +++- 4 files changed, 169 insertions(+), 46 deletions(-) diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 2953bc3e97..888f123237 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -82,6 +82,7 @@ New Features hardware and software DMA devices. * Added generic API which support a number of different DMA operations. + * Added multi-process support. * **Updated af_packet ethdev driver.** diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c index 54e15817fa..7099bbb28d 100644 --- a/lib/dmadev/rte_dmadev.c +++ b/lib/dmadev/rte_dmadev.c @@ -19,6 +19,13 @@ static int16_t dma_devices_max; struct rte_dma_fp_object *rte_dma_fp_objs; struct rte_dma_dev *rte_dma_devices; +static struct { + /* Hold the dev_max information of the primary process. This field is + * set by the primary process and is read by the secondary process. + */ + int16_t dev_max; + struct rte_dma_dev_data data[0]; +} *dma_devices_shared_data; RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO); #define RTE_DMA_LOG(level, ...) \ @@ -70,11 +77,11 @@ dma_find_free_id(void) { int16_t i; - if (rte_dma_devices == NULL) + if (rte_dma_devices == NULL || dma_devices_shared_data == NULL) return -1; for (i = 0; i < dma_devices_max; i++) { - if (rte_dma_devices[i].state == RTE_DMA_DEV_UNUSED) + if (dma_devices_shared_data->data[i].dev_name[0] == '\0') return i; } @@ -91,7 +98,7 @@ dma_find_by_name(const char *name) for (i = 0; i < dma_devices_max; i++) { if ((rte_dma_devices[i].state != RTE_DMA_DEV_UNUSED) && - (!strcmp(name, rte_dma_devices[i].dev_name))) + (!strcmp(name, rte_dma_devices[i].data->dev_name))) return &rte_dma_devices[i]; } @@ -147,23 +154,71 @@ dma_dev_data_prepare(void) return 0; } +static int +dma_shared_data_prepare(void) +{ + const char *mz_name = "rte_dma_dev_data"; + const struct rte_memzone *mz; + size_t size; + + if (dma_devices_shared_data != NULL) + return 0; + + size = sizeof(*dma_devices_shared_data) + + sizeof(struct rte_dma_dev_data) * dma_devices_max; + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + mz = rte_memzone_reserve(mz_name, size, rte_socket_id(), 0); + else + mz = rte_memzone_lookup(mz_name); + if (mz == NULL) + return -ENOMEM; + + dma_devices_shared_data = mz->addr; + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + memset(dma_devices_shared_data, 0, size); + dma_devices_shared_data->dev_max = dma_devices_max; + } else { + dma_devices_max = dma_devices_shared_data->dev_max; + } + + return 0; +} + static int dma_data_prepare(void) { int ret; - if (dma_devices_max == 0) - dma_devices_max = RTE_DMADEV_DEFAULT_MAX; - - ret = dma_fp_data_prepare(); - if (ret) - return ret; + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + if (dma_devices_max == 0) + dma_devices_max = RTE_DMADEV_DEFAULT_MAX; + ret = dma_fp_data_prepare(); + if (ret) + return ret; + ret = dma_dev_data_prepare(); + if (ret) + return ret; + ret = dma_shared_data_prepare(); + if (ret) + return ret; + } else { + ret = dma_shared_data_prepare(); + if (ret) + return ret; + ret = dma_fp_data_prepare(); + if (ret) + return ret; + ret = dma_dev_data_prepare(); + if (ret) + return ret; + } - return dma_dev_data_prepare(); + return 0; } static struct rte_dma_dev * -dma_allocate(const char *name, int numa_node, size_t private_data_size) +dma_allocate_primary(const char *name, int numa_node, size_t private_data_size) { struct rte_dma_dev *dev; void *dev_private; @@ -197,12 +252,59 @@ dma_allocate(const char *name, int numa_node, size_t private_data_size) } dev = &rte_dma_devices[dev_id]; - rte_strscpy(dev->dev_name, name, sizeof(dev->dev_name)); - dev->dev_id = dev_id; - dev->numa_node = numa_node; - dev->dev_private = dev_private; - dev->fp_obj = &rte_dma_fp_objs[dev_id]; - dma_fp_object_dummy(dev->fp_obj); + dev->data = &dma_devices_shared_data->data[dev_id]; + rte_strscpy(dev->data->dev_name, name, sizeof(dev->data->dev_name)); + dev->data->dev_id = dev_id; + dev->data->numa_node = numa_node; + dev->data->dev_private = dev_private; + + return dev; +} + +static struct rte_dma_dev * +dma_attach_secondary(const char *name) +{ + struct rte_dma_dev *dev; + int16_t i; + int ret; + + ret = dma_data_prepare(); + if (ret < 0) { + RTE_DMA_LOG(ERR, "Cannot initialize dmadevs data"); + return NULL; + } + + for (i = 0; i < dma_devices_max; i++) { + if (!strcmp(dma_devices_shared_data->data[i].dev_name, name)) + break; + } + if (i == dma_devices_max) { + RTE_DMA_LOG(ERR, + "Device %s is not driven by the primary process", + name); + return NULL; + } + + dev = &rte_dma_devices[i]; + dev->data = &dma_devices_shared_data->data[i]; + + return dev; +} + +static struct rte_dma_dev * +dma_allocate(const char *name, int numa_node, size_t private_data_size) +{ + struct rte_dma_dev *dev; + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + dev = dma_allocate_primary(name, numa_node, private_data_size); + else + dev = dma_attach_secondary(name); + + if (dev) { + dev->fp_obj = &rte_dma_fp_objs[dev->data->dev_id]; + dma_fp_object_dummy(dev->fp_obj); + } return dev; } @@ -210,7 +312,11 @@ dma_allocate(const char *name, int numa_node, size_t private_data_size) static void dma_release(struct rte_dma_dev *dev) { - rte_free(dev->dev_private); + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + rte_free(dev->data->dev_private); + memset(dev->data, 0, sizeof(struct rte_dma_dev_data)); + } + dma_fp_object_dummy(dev->fp_obj); memset(dev, 0, sizeof(struct rte_dma_dev)); } @@ -245,7 +351,7 @@ rte_dma_pmd_release(const char *name) return -EINVAL; if (dev->state == RTE_DMA_DEV_READY) - return rte_dma_close(dev->dev_id); + return rte_dma_close(dev->data->dev_id); dma_release(dev); return 0; @@ -263,7 +369,7 @@ rte_dma_get_dev_id_by_name(const char *name) if (dev == NULL) return -EINVAL; - return dev->dev_id; + return dev->data->dev_id; } bool @@ -307,9 +413,9 @@ rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info) if (ret != 0) return ret; - dev_info->dev_name = dev->dev_name; + dev_info->dev_name = dev->data->dev_name; dev_info->numa_node = dev->device->numa_node; - dev_info->nb_vchans = dev->dev_conf.nb_vchans; + dev_info->nb_vchans = dev->data->dev_conf.nb_vchans; return 0; } @@ -324,7 +430,7 @@ rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf) if (!rte_dma_is_valid(dev_id) || dev_conf == NULL) return -EINVAL; - if (dev->dev_started != 0) { + if (dev->data->dev_started != 0) { RTE_DMA_LOG(ERR, "Device %d must be stopped to allow configuration", dev_id); @@ -356,7 +462,8 @@ rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf) ret = (*dev->dev_ops->dev_configure)(dev, dev_conf, sizeof(struct rte_dma_conf)); if (ret == 0) - memcpy(&dev->dev_conf, dev_conf, sizeof(struct rte_dma_conf)); + memcpy(&dev->data->dev_conf, dev_conf, + sizeof(struct rte_dma_conf)); return ret; } @@ -370,12 +477,12 @@ rte_dma_start(int16_t dev_id) if (!rte_dma_is_valid(dev_id)) return -EINVAL; - if (dev->dev_conf.nb_vchans == 0) { + if (dev->data->dev_conf.nb_vchans == 0) { RTE_DMA_LOG(ERR, "Device %d must be configured first", dev_id); return -EINVAL; } - if (dev->dev_started != 0) { + if (dev->data->dev_started != 0) { RTE_DMA_LOG(WARNING, "Device %d already started", dev_id); return 0; } @@ -388,7 +495,7 @@ rte_dma_start(int16_t dev_id) return ret; mark_started: - dev->dev_started = 1; + dev->data->dev_started = 1; return 0; } @@ -401,7 +508,7 @@ rte_dma_stop(int16_t dev_id) if (!rte_dma_is_valid(dev_id)) return -EINVAL; - if (dev->dev_started == 0) { + if (dev->data->dev_started == 0) { RTE_DMA_LOG(WARNING, "Device %d already stopped", dev_id); return 0; } @@ -414,7 +521,7 @@ rte_dma_stop(int16_t dev_id) return ret; mark_stopped: - dev->dev_started = 0; + dev->data->dev_started = 0; return 0; } @@ -428,7 +535,7 @@ rte_dma_close(int16_t dev_id) return -EINVAL; /* Device must be stopped before it can be closed */ - if (dev->dev_started == 1) { + if (dev->data->dev_started == 1) { RTE_DMA_LOG(ERR, "Device %d must be stopped before closing", dev_id); return -EBUSY; @@ -454,7 +561,7 @@ rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan, if (!rte_dma_is_valid(dev_id) || conf == NULL) return -EINVAL; - if (dev->dev_started != 0) { + if (dev->data->dev_started != 0) { RTE_DMA_LOG(ERR, "Device %d must be stopped to allow configuration", dev_id); @@ -466,7 +573,7 @@ rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan, RTE_DMA_LOG(ERR, "Device %d get device info fail", dev_id); return -EINVAL; } - if (dev->dev_conf.nb_vchans == 0) { + if (dev->data->dev_conf.nb_vchans == 0) { RTE_DMA_LOG(ERR, "Device %d must be configured first", dev_id); return -EINVAL; } @@ -540,7 +647,7 @@ rte_dma_stats_get(int16_t dev_id, uint16_t vchan, struct rte_dma_stats *stats) if (!rte_dma_is_valid(dev_id) || stats == NULL) return -EINVAL; - if (vchan >= dev->dev_conf.nb_vchans && + if (vchan >= dev->data->dev_conf.nb_vchans && vchan != RTE_DMA_ALL_VCHAN) { RTE_DMA_LOG(ERR, "Device %d vchan %u out of range", dev_id, vchan); @@ -561,7 +668,7 @@ rte_dma_stats_reset(int16_t dev_id, uint16_t vchan) if (!rte_dma_is_valid(dev_id)) return -EINVAL; - if (vchan >= dev->dev_conf.nb_vchans && + if (vchan >= dev->data->dev_conf.nb_vchans && vchan != RTE_DMA_ALL_VCHAN) { RTE_DMA_LOG(ERR, "Device %d vchan %u out of range", dev_id, vchan); @@ -634,14 +741,14 @@ rte_dma_dump(int16_t dev_id, FILE *f) } (void)fprintf(f, "DMA Dev %d, '%s' [%s]\n", - dev->dev_id, - dev->dev_name, - dev->dev_started ? "started" : "stopped"); + dev->data->dev_id, + dev->data->dev_name, + dev->data->dev_started ? "started" : "stopped"); dma_dump_capability(f, dev_info.dev_capa); (void)fprintf(f, " max_vchans_supported: %u\n", dev_info.max_vchans); (void)fprintf(f, " nb_vchans_configured: %u\n", dev_info.nb_vchans); (void)fprintf(f, " silent_mode: %s\n", - dev->dev_conf.enable_silent ? "on" : "off"); + dev->data->dev_conf.enable_silent ? "on" : "off"); if (dev->dev_ops->dev_dump != NULL) return (*dev->dev_ops->dev_dump)(dev, f); diff --git a/lib/dmadev/rte_dmadev_core.h b/lib/dmadev/rte_dmadev_core.h index a6946052db..236d9d38e5 100644 --- a/lib/dmadev/rte_dmadev_core.h +++ b/lib/dmadev/rte_dmadev_core.h @@ -60,7 +60,7 @@ typedef uint16_t (*rte_dma_completed_status_t)(void *dev_private, */ struct rte_dma_fp_object { /** PMD-specific private data. The driver should copy - * rte_dma_dev.dev_private to this field during initialization. + * rte_dma_dev.data->dev_private to this field during initialization. */ void *dev_private; rte_dma_copy_t copy; diff --git a/lib/dmadev/rte_dmadev_pmd.h b/lib/dmadev/rte_dmadev_pmd.h index d6d2161306..23b07a4e1c 100644 --- a/lib/dmadev/rte_dmadev_pmd.h +++ b/lib/dmadev/rte_dmadev_pmd.h @@ -76,6 +76,27 @@ struct rte_dma_dev_ops { rte_dma_dump_t dev_dump; }; + +/** + * @internal + * The data part, with no function pointers, associated with each DMA device. + * + * This structure is safe to place in shared memory to be common among different + * processes in a multi-process configuration. + * + * @see struct rte_dma_dev::data + */ +struct rte_dma_dev_data { + char dev_name[RTE_DEV_NAME_MAX_LEN]; /**< Unique identifier name */ + int16_t dev_id; /**< Device [external] identifier. */ + int16_t numa_node; /**< Local NUMA memory ID. -1 if unknown. */ + void *dev_private; /**< PMD-specific private data. */ + struct rte_dma_conf dev_conf; /**< DMA device configuration. */ + __extension__ + uint8_t dev_started : 1; /**< Device state: STARTED(1)/STOPPED(0). */ + uint64_t reserved[2]; /**< Reserved for future fields */ +} __rte_cache_aligned; + /** * Possible states of a DMA device. * @@ -94,20 +115,14 @@ enum rte_dma_dev_state { * The generic data structure associated with each DMA device. */ struct rte_dma_dev { - char dev_name[RTE_DEV_NAME_MAX_LEN]; /**< Unique identifier name */ - int16_t dev_id; /**< Device [external] identifier. */ - int16_t numa_node; /**< Local NUMA memory ID. -1 if unknown. */ - void *dev_private; /**< PMD-specific private data. */ /** Device info which supplied during device initialization. */ struct rte_device *device; + struct rte_dma_dev_data *data; /**< Pointer to shared device data. */ /**< Fast-path functions and related data. */ struct rte_dma_fp_object *fp_obj; /** Functions implemented by PMD. */ const struct rte_dma_dev_ops *dev_ops; - struct rte_dma_conf dev_conf; /**< DMA device configuration. */ enum rte_dma_dev_state state; /**< Flag indicating the device state. */ - __extension__ - uint8_t dev_started : 1; /**< Device state: STARTED(1)/STOPPED(0). */ uint64_t reserved[2]; /**< Reserved for future fields. */ } __rte_cache_aligned; -- 2.33.0
next prev parent reply other threads:[~2021-10-13 12:29 UTC|newest] Thread overview: 339+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-02 13:18 [dpdk-dev] [PATCH] dmadev: introduce DMA device library Chengwen Feng 2021-07-02 13:59 ` Bruce Richardson 2021-07-04 9:30 ` Jerin Jacob 2021-07-05 10:52 ` Bruce Richardson 2021-07-05 11:12 ` Morten Brørup 2021-07-05 13:44 ` Bruce Richardson 2021-07-05 15:55 ` Jerin Jacob 2021-07-05 17:16 ` Bruce Richardson 2021-07-07 8:08 ` Jerin Jacob 2021-07-07 8:35 ` Bruce Richardson 2021-07-07 10:34 ` Jerin Jacob 2021-07-07 11:01 ` Bruce Richardson 2021-07-08 3:11 ` fengchengwen 2021-07-08 18:35 ` Jerin Jacob 2021-07-09 9:14 ` Bruce Richardson 2021-07-11 7:14 ` Jerin Jacob 2021-07-12 7:01 ` Morten Brørup 2021-07-12 7:59 ` Jerin Jacob 2021-07-06 8:20 ` fengchengwen 2021-07-06 9:27 ` Bruce Richardson 2021-07-06 3:01 ` fengchengwen 2021-07-06 10:01 ` Bruce Richardson 2021-07-04 14:57 ` Andrew Rybchenko 2021-07-06 3:56 ` fengchengwen 2021-07-06 10:02 ` Bruce Richardson 2021-07-04 15:21 ` Matan Azrad 2021-07-06 6:25 ` fengchengwen 2021-07-06 6:50 ` Matan Azrad 2021-07-06 9:08 ` fengchengwen 2021-07-06 9:17 ` Matan Azrad 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 0/9] dmadev rfc suggested updates Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 1/9] dmadev: add missing exports Bruce Richardson 2021-07-07 8:26 ` David Marchand 2021-07-07 8:36 ` Bruce Richardson 2021-07-07 8:57 ` David Marchand 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 2/9] dmadev: change virtual addresses to IOVA Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 3/9] dmadev: add dump function Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 4/9] dmadev: remove xstats functions Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 5/9] dmadev: drop cookie typedef Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 6/9] dmadev: allow NULL parameters to completed ops call Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 7/9] dmadev: stats structure updates Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 8/9] drivers: add dma driver category Bruce Richardson 2021-07-06 20:28 ` [dpdk-dev] [RFC UPDATE PATCH 9/9] app/test: add basic dmadev unit test Bruce Richardson 2021-07-07 3:16 ` [dpdk-dev] [RFC UPDATE PATCH 0/9] dmadev rfc suggested updates fengchengwen 2021-07-07 8:11 ` Bruce Richardson 2021-07-07 8:14 ` Bruce Richardson 2021-07-07 10:42 ` Jerin Jacob 2021-07-11 9:25 ` [dpdk-dev] [PATCH v2] dmadev: introduce DMA device library Chengwen Feng 2021-07-11 9:42 ` fengchengwen 2021-07-11 13:34 ` Jerin Jacob 2021-07-12 7:40 ` Morten Brørup 2021-07-11 14:25 ` Jerin Jacob 2021-07-12 7:15 ` Morten Brørup 2021-07-12 9:59 ` Jerin Jacob 2021-07-12 13:32 ` Bruce Richardson 2021-07-12 16:34 ` Jerin Jacob 2021-07-12 17:00 ` Bruce Richardson 2021-07-13 8:59 ` Jerin Jacob 2021-07-12 12:05 ` Bruce Richardson 2021-07-12 15:50 ` Bruce Richardson 2021-07-13 9:07 ` Jerin Jacob 2021-07-13 14:19 ` Ananyev, Konstantin 2021-07-13 14:28 ` Bruce Richardson 2021-07-13 12:27 ` [dpdk-dev] [PATCH v3] " Chengwen Feng 2021-07-13 13:06 ` fengchengwen 2021-07-13 13:37 ` Bruce Richardson 2021-07-15 6:44 ` Jerin Jacob 2021-07-15 8:25 ` Bruce Richardson 2021-07-15 9:49 ` Jerin Jacob 2021-07-15 10:00 ` Bruce Richardson 2021-07-13 16:02 ` Bruce Richardson 2021-07-14 12:22 ` Nipun Gupta 2021-07-15 8:29 ` fengchengwen 2021-07-15 11:16 ` Nipun Gupta 2021-07-15 12:11 ` Bruce Richardson 2021-07-15 12:31 ` Jerin Jacob 2021-07-15 12:34 ` Nipun Gupta 2021-07-14 16:05 ` Bruce Richardson 2021-07-15 7:10 ` Jerin Jacob 2021-07-15 9:03 ` Bruce Richardson 2021-07-15 9:30 ` Jerin Jacob 2021-07-15 10:03 ` Bruce Richardson 2021-07-15 10:05 ` Bruce Richardson 2021-07-15 15:41 ` [dpdk-dev] [PATCH v4] " Chengwen Feng 2021-07-15 16:04 ` fengchengwen 2021-07-15 16:33 ` Bruce Richardson 2021-07-16 3:04 ` fengchengwen 2021-07-16 9:50 ` Bruce Richardson 2021-07-16 12:34 ` Jerin Jacob 2021-07-16 12:40 ` Jerin Jacob 2021-07-16 12:48 ` Bruce Richardson 2021-07-16 12:54 ` Jerin Jacob 2021-07-16 2:45 ` [dpdk-dev] [PATCH v5] " Chengwen Feng 2021-07-16 13:20 ` Jerin Jacob 2021-07-16 14:41 ` Bruce Richardson 2021-07-19 3:29 ` [dpdk-dev] [PATCH v6] " Chengwen Feng 2021-07-19 6:21 ` Jerin Jacob 2021-07-19 13:20 ` fengchengwen 2021-07-19 13:36 ` Jerin Jacob 2021-07-19 13:05 ` [dpdk-dev] [PATCH v7] " Chengwen Feng 2021-07-20 1:14 ` [dpdk-dev] [PATCH v8] " Chengwen Feng 2021-07-20 5:03 ` Jerin Jacob 2021-07-20 6:53 ` fengchengwen 2021-07-20 9:43 ` Jerin Jacob 2021-07-20 10:13 ` Bruce Richardson 2021-07-20 11:12 ` [dpdk-dev] [PATCH v9] " Chengwen Feng 2021-07-20 12:05 ` Bruce Richardson 2021-07-20 12:46 ` [dpdk-dev] [PATCH v10] " Chengwen Feng 2021-07-26 6:53 ` fengchengwen 2021-07-26 8:31 ` Bruce Richardson 2021-07-27 3:57 ` fengchengwen 2021-07-26 11:03 ` Morten Brørup 2021-07-26 11:21 ` Jerin Jacob 2021-07-27 3:39 ` [dpdk-dev] [PATCH v11 0/2] support dmadev Chengwen Feng 2021-07-27 3:39 ` [dpdk-dev] [PATCH v11 1/2] dmadev: introduce DMA device library Chengwen Feng 2021-07-28 11:13 ` Bruce Richardson 2021-07-29 1:26 ` fengchengwen 2021-07-29 9:15 ` Bruce Richardson 2021-07-29 13:33 ` fengchengwen 2021-07-29 10:44 ` Jerin Jacob 2021-07-29 13:30 ` fengchengwen 2021-07-27 3:40 ` [dpdk-dev] [PATCH v11 2/2] doc: add dmadev library guide Chengwen Feng 2021-07-29 11:02 ` Jerin Jacob 2021-07-29 13:13 ` fengchengwen 2021-07-29 13:28 ` fengchengwen 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 0/6] support dmadev Chengwen Feng 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 1/6] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 2/6] dmadev: introduce DMA device library internal header Chengwen Feng 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 3/6] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 4/6] dmadev: introduce DMA device library implementation Chengwen Feng 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 5/6] doc: add DMA device library guide Chengwen Feng 2021-07-29 13:06 ` [dpdk-dev] [PATCH v12 6/6] maintainers: add for dmadev Chengwen Feng 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 0/6] support dmadev Chengwen Feng 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 1/6] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 2/6] dmadev: introduce DMA device library internal header Chengwen Feng 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 3/6] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 4/6] dmadev: introduce DMA device library implementation Chengwen Feng 2021-08-05 12:56 ` Walsh, Conor 2021-08-05 13:12 ` fengchengwen 2021-08-05 13:44 ` Conor Walsh 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 5/6] doc: add DMA device library guide Chengwen Feng 2021-08-03 14:55 ` Jerin Jacob 2021-08-05 13:15 ` fengchengwen 2021-08-03 11:29 ` [dpdk-dev] [PATCH v13 6/6] maintainers: add for dmadev Chengwen Feng 2021-08-03 11:46 ` [dpdk-dev] [PATCH v13 0/6] support dmadev fengchengwen 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 " Chengwen Feng 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 1/6] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 2/6] dmadev: introduce DMA device library internal header Chengwen Feng 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 3/6] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 4/6] dmadev: introduce DMA device library implementation Chengwen Feng 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 5/6] doc: add DMA device library guide Chengwen Feng 2021-08-10 15:27 ` Walsh, Conor 2021-08-11 0:47 ` fengchengwen 2021-08-13 9:20 ` fengchengwen 2021-08-13 10:12 ` Walsh, Conor 2021-08-10 11:54 ` [dpdk-dev] [PATCH v14 6/6] maintainers: add for dmadev Chengwen Feng 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 0/6] support dmadev Chengwen Feng 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 1/6] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-08-19 14:52 ` Bruce Richardson 2021-08-23 3:43 ` fengchengwen 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 2/6] dmadev: introduce DMA device library internal header Chengwen Feng 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 3/6] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 4/6] dmadev: introduce DMA device library implementation Chengwen Feng 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 5/6] doc: add DMA device library guide Chengwen Feng 2021-08-13 9:09 ` [dpdk-dev] [PATCH v15 6/6] maintainers: add for dmadev Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 0/9] support dmadev Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 1/9] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 2/9] dmadev: introduce DMA device library internal header Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 3/9] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 4/9] dmadev: introduce DMA device library implementation Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 5/9] doc: add DMA device library guide Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 6/9] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-08-26 18:39 ` Bruce Richardson 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 7/9] dma/skeleton: add test cases Chengwen Feng 2021-08-23 14:03 ` Bruce Richardson 2021-08-26 9:30 ` fengchengwen 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 8/9] test: enable dmadev skeleton test Chengwen Feng 2021-08-23 3:31 ` [dpdk-dev] [PATCH v16 9/9] maintainers: add for dmadev Chengwen Feng 2021-08-28 7:29 ` [dpdk-dev] [PATCH v17 0/8] support dmadev Chengwen Feng 2021-08-28 7:29 ` [dpdk-dev] [PATCH v17 1/8] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 2/8] dmadev: introduce DMA device library internal header Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 3/8] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 4/8] dmadev: introduce DMA device library implementation Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 5/8] doc: add DMA device library guide Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 6/8] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 7/8] app/test: add dmadev API test Chengwen Feng 2021-08-28 7:30 ` [dpdk-dev] [PATCH v17 8/8] maintainers: add for dmadev Chengwen Feng 2021-08-28 8:25 ` fengchengwen 2021-08-30 8:19 ` Bruce Richardson 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 0/8] support dmadev Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 1/8] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 2/8] dmadev: introduce DMA device library internal header Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 3/8] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 4/8] dmadev: introduce DMA device library implementation Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 5/8] doc: add DMA device library guide Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 6/8] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 7/8] app/test: add dmadev API test Chengwen Feng 2021-09-02 10:54 ` [dpdk-dev] [PATCH v18 8/8] maintainers: add for dmadev Chengwen Feng 2021-09-02 11:51 ` Bruce Richardson 2021-09-02 13:39 ` fengchengwen 2021-09-03 12:59 ` Maxime Coquelin 2021-09-04 7:02 ` fengchengwen 2021-09-06 1:46 ` Li, Xiaoyun 2021-09-06 8:00 ` fengchengwen 2021-09-06 2:03 ` Xia, Chenbo 2021-09-06 8:01 ` fengchengwen 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 0/7] support dmadev Chengwen Feng 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 1/7] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-09-03 11:42 ` Gagandeep Singh 2021-09-04 1:31 ` fengchengwen 2021-09-06 6:48 ` Gagandeep Singh 2021-09-06 7:52 ` fengchengwen 2021-09-06 8:06 ` Jerin Jacob 2021-09-06 8:08 ` Bruce Richardson 2021-09-07 12:55 ` fengchengwen 2021-09-03 13:03 ` Bruce Richardson 2021-09-04 3:05 ` fengchengwen 2021-09-04 10:10 ` Morten Brørup 2021-09-03 15:13 ` Kevin Laatz 2021-09-03 15:35 ` Conor Walsh 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 2/7] dmadev: introduce DMA device library internal header Chengwen Feng 2021-09-03 15:13 ` Kevin Laatz 2021-09-03 15:35 ` Conor Walsh 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 3/7] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-09-03 15:13 ` Kevin Laatz 2021-09-03 15:35 ` Conor Walsh 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 4/7] dmadev: introduce DMA device library implementation Chengwen Feng 2021-09-03 15:13 ` Kevin Laatz 2021-09-03 15:30 ` Bruce Richardson 2021-09-03 15:35 ` Conor Walsh 2021-09-04 8:52 ` fengchengwen 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 5/7] doc: add DMA device library guide Chengwen Feng 2021-09-03 15:13 ` Kevin Laatz 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 6/7] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-09-03 15:14 ` Kevin Laatz 2021-09-04 7:17 ` fengchengwen 2021-09-03 15:36 ` Conor Walsh 2021-09-02 13:13 ` [dpdk-dev] [PATCH v19 7/7] app/test: add dmadev API test Chengwen Feng 2021-09-02 14:11 ` Walsh, Conor 2021-09-03 0:39 ` fengchengwen 2021-09-03 15:38 ` Walsh, Conor 2021-09-04 7:22 ` fengchengwen 2021-09-03 15:14 ` Kevin Laatz 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 0/7] support dmadev Chengwen Feng 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 1/7] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 2/7] dmadev: introduce DMA device library internal header Chengwen Feng 2021-09-06 13:35 ` Bruce Richardson 2021-09-07 13:05 ` fengchengwen 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 3/7] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 4/7] dmadev: introduce DMA device library implementation Chengwen Feng 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 5/7] doc: add DMA device library guide Chengwen Feng 2021-09-04 10:17 ` Jerin Jacob 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 6/7] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-09-04 10:10 ` [dpdk-dev] [PATCH v20 7/7] app/test: add dmadev API test Chengwen Feng 2021-09-06 13:37 ` [dpdk-dev] [PATCH v20 0/7] support dmadev Bruce Richardson 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 " Chengwen Feng 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 1/7] dmadev: introduce DMA device library public APIs Chengwen Feng 2021-09-09 10:33 ` Thomas Monjalon 2021-09-09 11:18 ` Bruce Richardson 2021-09-09 11:29 ` Thomas Monjalon 2021-09-09 12:45 ` Bruce Richardson 2021-09-09 13:54 ` fengchengwen 2021-09-09 14:26 ` Thomas Monjalon 2021-09-09 14:31 ` Bruce Richardson 2021-09-09 14:28 ` Bruce Richardson 2021-09-09 15:12 ` Morten Brørup 2021-09-09 13:33 ` fengchengwen 2021-09-09 14:19 ` Thomas Monjalon 2021-09-16 3:57 ` fengchengwen 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 2/7] dmadev: introduce DMA device library internal header Chengwen Feng 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 3/7] dmadev: introduce DMA device library PMD header Chengwen Feng 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 4/7] dmadev: introduce DMA device library implementation Chengwen Feng 2021-09-08 9:54 ` Walsh, Conor 2021-09-09 13:25 ` fengchengwen 2021-09-15 13:51 ` Kevin Laatz 2021-09-15 14:34 ` Bruce Richardson 2021-09-15 14:47 ` Kevin Laatz 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 5/7] doc: add DMA device library guide Chengwen Feng 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 6/7] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-09-07 12:56 ` [dpdk-dev] [PATCH v21 7/7] app/test: add dmadev API test Chengwen Feng 2021-09-16 3:41 ` [dpdk-dev] [PATCH v22 0/5] support dmadev Chengwen Feng 2021-09-16 3:41 ` [dpdk-dev] [PATCH v22 1/5] dmadev: introduce DMA device library Chengwen Feng 2021-09-16 3:41 ` [dpdk-dev] [PATCH v22 2/5] dmadev: add control plane function support Chengwen Feng 2021-09-16 3:41 ` [dpdk-dev] [PATCH v22 3/5] dmadev: add data " Chengwen Feng 2021-09-16 3:41 ` [dpdk-dev] [PATCH v22 4/5] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-09-16 3:41 ` [dpdk-dev] [PATCH v22 5/5] app/test: add dmadev API test Chengwen Feng 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 0/6] support dmadev Chengwen Feng 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 1/6] dmadev: introduce DMA device library Chengwen Feng 2021-10-04 21:12 ` Radha Mohan 2021-10-05 8:24 ` Kevin Laatz 2021-10-05 16:39 ` Radha Mohan 2021-10-08 1:52 ` fengchengwen 2021-10-06 10:26 ` Thomas Monjalon 2021-10-08 7:13 ` fengchengwen 2021-10-08 10:09 ` Thomas Monjalon 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 2/6] dmadev: add control plane function support Chengwen Feng 2021-10-05 10:16 ` Matan Azrad 2021-10-08 3:28 ` fengchengwen 2021-10-06 10:46 ` Thomas Monjalon 2021-10-08 7:55 ` fengchengwen 2021-10-08 10:18 ` Thomas Monjalon 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 3/6] dmadev: add data " Chengwen Feng 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 4/6] dmadev: add multi-process support Chengwen Feng 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 5/6] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-09-24 10:53 ` [dpdk-dev] [PATCH v23 6/6] app/test: add dmadev API test Chengwen Feng 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 0/6] support dmadev Chengwen Feng 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 1/6] dmadev: introduce DMA device library Chengwen Feng 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 2/6] dmadev: add control plane API support Chengwen Feng 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 3/6] dmadev: add data " Chengwen Feng 2021-10-09 10:03 ` fengchengwen 2021-10-11 10:40 ` Bruce Richardson 2021-10-11 12:31 ` fengchengwen 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 4/6] dmadev: add multi-process support Chengwen Feng 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 5/6] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-10-09 9:33 ` [dpdk-dev] [PATCH v24 6/6] app/test: add dmadev API test Chengwen Feng 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 0/6] support dmadev Chengwen Feng 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 1/6] dmadev: introduce DMA device library Chengwen Feng 2021-10-12 19:09 ` Thomas Monjalon 2021-10-13 0:21 ` fengchengwen 2021-10-13 7:41 ` Thomas Monjalon 2021-10-15 8:29 ` Thomas Monjalon 2021-10-15 9:59 ` fengchengwen 2021-10-15 13:46 ` Thomas Monjalon 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 2/6] dmadev: add control plane API support Chengwen Feng 2021-10-11 15:44 ` Bruce Richardson 2021-10-12 3:57 ` fengchengwen 2021-10-12 18:57 ` Thomas Monjalon 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 3/6] dmadev: add data " Chengwen Feng 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 4/6] dmadev: add multi-process support Chengwen Feng 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 5/6] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-10-11 7:33 ` [dpdk-dev] [PATCH v25 6/6] app/test: add dmadev API test Chengwen Feng 2021-10-13 12:24 ` [dpdk-dev] [PATCH v26 0/6] support dmadev Chengwen Feng 2021-10-13 12:24 ` [dpdk-dev] [PATCH v26 1/6] dmadev: introduce DMA device library Chengwen Feng 2021-10-13 12:24 ` [dpdk-dev] [PATCH v26 2/6] dmadev: add control plane API support Chengwen Feng 2021-10-13 12:24 ` [dpdk-dev] [PATCH v26 3/6] dmadev: add data " Chengwen Feng 2021-10-13 12:24 ` Chengwen Feng [this message] 2021-10-13 12:24 ` [dpdk-dev] [PATCH v26 5/6] dma/skeleton: introduce skeleton dmadev driver Chengwen Feng 2021-10-13 12:25 ` [dpdk-dev] [PATCH v26 6/6] app/test: add dmadev API test Chengwen Feng 2021-10-17 19:17 ` [dpdk-dev] [PATCH v26 0/6] support dmadev Thomas Monjalon
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=20211013122500.51552-5-fengchengwen@huawei.com \ --to=fengchengwen@huawei.com \ --cc=andrew.rybchenko@oktetlabs.ru \ --cc=bruce.richardson@intel.com \ --cc=conor.walsh@intel.com \ --cc=david.marchand@redhat.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=hemant.agrawal@nxp.com \ --cc=honnappa.nagarahalli@arm.com \ --cc=jerinj@marvell.com \ --cc=jerinjacobk@gmail.com \ --cc=kevin.laatz@intel.com \ --cc=konstantin.ananyev@intel.com \ --cc=maxime.coquelin@redhat.com \ --cc=mb@smartsharesystems.com \ --cc=nipun.gupta@nxp.com \ --cc=pkapoor@marvell.com \ --cc=sburla@marvell.com \ --cc=thomas@monjalon.net \ --subject='Re: [dpdk-dev] [PATCH v26 4/6] dmadev: add multi-process support' \ /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
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.