* [PATCH 0/4] test/dma: run tests as per configured pmd
@ 2023-08-10 12:21 Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 1/4] dmadev: add function to get list of device identifiers Gowrishankar Muthukrishnan
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Gowrishankar Muthukrishnan @ 2023-08-10 12:21 UTC (permalink / raw)
To: dev; +Cc: anoobj, Chengwen Feng, Vamsi Attunuru, Gowrishankar Muthukrishnan
This series enables dmadev tests to run as per configured PMDs,
similar to other subsystem like cryptodev.
Gowrishankar Muthukrishnan (4):
dmadev: add function to get list of device identifiers
test/dma: run tests according to PMD
dma/cnxk: update PCI driver name
test/dma: enable cnxk tests
app/test/meson.build | 8 ++-
app/test/test_dmadev.c | 96 ++++++++++++++++++++++++++--------
drivers/dma/cnxk/cnxk_dmadev.c | 8 +--
lib/dmadev/rte_dmadev.c | 20 +++++++
lib/dmadev/rte_dmadev.h | 21 ++++++++
lib/dmadev/version.map | 1 +
6 files changed, 128 insertions(+), 26 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] dmadev: add function to get list of device identifiers
2023-08-10 12:21 [PATCH 0/4] test/dma: run tests as per configured pmd Gowrishankar Muthukrishnan
@ 2023-08-10 12:21 ` Gowrishankar Muthukrishnan
2023-10-08 1:40 ` fengchengwen
2023-08-10 12:21 ` [PATCH 2/4] test/dma: run tests according to PMD Gowrishankar Muthukrishnan
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Gowrishankar Muthukrishnan @ 2023-08-10 12:21 UTC (permalink / raw)
To: dev; +Cc: anoobj, Chengwen Feng, Vamsi Attunuru, Gowrishankar Muthukrishnan
Add a function to get list of device identifiers for a given driver
name.
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
lib/dmadev/rte_dmadev.c | 20 ++++++++++++++++++++
lib/dmadev/rte_dmadev.h | 21 +++++++++++++++++++++
lib/dmadev/version.map | 1 +
3 files changed, 42 insertions(+)
diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
index 8c095e1f35..f2a106564d 100644
--- a/lib/dmadev/rte_dmadev.c
+++ b/lib/dmadev/rte_dmadev.c
@@ -388,6 +388,26 @@ rte_dma_get_dev_id_by_name(const char *name)
return dev->data->dev_id;
}
+uint8_t
+rte_dma_get_dev_list_by_driver(const char *name, int16_t *devs, uint8_t nb_devs)
+{
+ uint8_t i, count = 0;
+
+ if (name == NULL)
+ return count;
+
+ for (i = 0; i < dma_devices_max && count < nb_devs; i++) {
+ if (rte_dma_devices[i].state == RTE_DMA_DEV_UNUSED)
+ continue;
+
+ if (strncmp(rte_dma_devices[i].device->driver->name,
+ name, strlen(name) + 1) == 0)
+ devs[count++] = i;
+ }
+
+ return count;
+}
+
bool
rte_dma_is_valid(int16_t dev_id)
{
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index e61d71959e..689062a686 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -191,6 +191,27 @@ int rte_dma_dev_max(size_t dev_max);
__rte_experimental
int rte_dma_get_dev_id_by_name(const char *name);
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice.
+ *
+ * Get the list of device identifiers for the DMA driver.
+ *
+ * @param name
+ * DMA driver name.
+ * @param devs
+ * Output devices identifiers.
+ * @param nb_devs
+ * Maximal number of devices.
+ *
+ * @return
+ * Returns number of device identifiers.
+ */
+__rte_experimental
+uint8_t rte_dma_get_dev_list_by_driver(const char *name,
+ int16_t *devs,
+ uint8_t nb_devs);
+
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice.
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335..b4d56b41a0 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -7,6 +7,7 @@ EXPERIMENTAL {
rte_dma_dev_max;
rte_dma_dump;
rte_dma_get_dev_id_by_name;
+ rte_dma_get_dev_list_by_driver;
rte_dma_info_get;
rte_dma_is_valid;
rte_dma_next_dev;
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/4] test/dma: run tests according to PMD
2023-08-10 12:21 [PATCH 0/4] test/dma: run tests as per configured pmd Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 1/4] dmadev: add function to get list of device identifiers Gowrishankar Muthukrishnan
@ 2023-08-10 12:21 ` Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 3/4] dma/cnxk: update PCI driver name Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 4/4] test/dma: enable cnxk tests Gowrishankar Muthukrishnan
3 siblings, 0 replies; 6+ messages in thread
From: Gowrishankar Muthukrishnan @ 2023-08-10 12:21 UTC (permalink / raw)
To: dev; +Cc: anoobj, Chengwen Feng, Vamsi Attunuru, Gowrishankar Muthukrishnan
Run tests according to PMD configured.
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
app/test/meson.build | 7 +++-
app/test/test_dmadev.c | 87 +++++++++++++++++++++++++++++++-----------
2 files changed, 71 insertions(+), 23 deletions(-)
diff --git a/app/test/meson.build b/app/test/meson.build
index 66897c14a3..de671b665f 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -319,7 +319,12 @@ driver_test_names = [
'cryptodev_sw_snow3g_autotest',
'cryptodev_sw_zuc_autotest',
'cryptodev_uadk_autotest',
- 'dmadev_autotest',
+ 'dmadev_dpaa_autotest',
+ 'dmadev_dpaa2_autotest',
+ 'dmadev_hisilicon_autotest',
+ 'dmadev_idxd_autotest',
+ 'dmadev_ioat_autotest',
+ 'dmadev_skeleton_autotest',
]
dump_test_names = []
diff --git a/app/test/test_dmadev.c b/app/test/test_dmadev.c
index abe970baaf..5e72e8535c 100644
--- a/app/test/test_dmadev.c
+++ b/app/test/test_dmadev.c
@@ -1025,40 +1025,83 @@ test_dmadev_instance(int16_t dev_id)
}
static int
-test_apis(void)
+test_dma(const char *pmd)
+{
+ int16_t devs[UINT8_MAX];
+ uint8_t nb_devs;
+ int i;
+
+ if (rte_dma_count_avail() == 0)
+ return TEST_SKIPPED;
+
+ nb_devs = rte_dma_get_dev_list_by_driver(pmd, devs, UINT8_MAX);
+ if (nb_devs == 0)
+ ERR_RETURN("Error, No device found for pmd %s\n", pmd);
+
+ printf("\n### Test dmadev infrastructure using %s driver\n", pmd);
+ if (test_dma_api(devs[0]) < 0)
+ ERR_RETURN("Error, test failure for %d device\n", devs[0]);
+
+ for (i = 0; i < nb_devs; i++)
+ if (test_dmadev_instance(devs[i]) < 0)
+ ERR_RETURN("Error, test failure for %d device\n", devs[i]);
+
+ return 0;
+}
+
+static int
+test_skeleton_dma(void)
{
const char *pmd = "dma_skeleton";
- int id;
- int ret;
- /* attempt to create skeleton instance - ignore errors due to one being already present */
+ /* Attempt to create skeleton instance - ignore errors due to one being already present */
rte_vdev_init(pmd, NULL);
- id = rte_dma_get_dev_id_by_name(pmd);
- if (id < 0)
- return TEST_SKIPPED;
- printf("\n### Test dmadev infrastructure using skeleton driver\n");
- ret = test_dma_api(id);
+ return test_dma(pmd);
+}
- return ret;
+static int
+test_dpaa_dma(void)
+{
+ const char *pmd = "dpaa_qdma";
+
+ return test_dma(pmd);
}
static int
-test_dma(void)
+test_dpaa2_dma(void)
{
- int i;
+ const char *pmd = "dpaa2_qdma";
- /* basic sanity on dmadev infrastructure */
- if (test_apis() < 0)
- ERR_RETURN("Error performing API tests\n");
+ return test_dma(pmd);
+}
- if (rte_dma_count_avail() == 0)
- return TEST_SKIPPED;
+static int
+test_hisilicon_dma(void)
+{
+ const char *pmd = "dma_hisilicon";
- RTE_DMA_FOREACH_DEV(i)
- if (test_dmadev_instance(i) < 0)
- ERR_RETURN("Error, test failure for device %d\n", i);
+ return test_dma(pmd);
+}
- return 0;
+static int
+test_idxd_dma(void)
+{
+ const char *pmd = "dmadev_idxd_pci";
+
+ return test_dma(pmd);
+}
+
+static int
+test_ioat_dma(void)
+{
+ const char *pmd = "dmadev_ioat";
+
+ return test_dma(pmd);
}
-REGISTER_TEST_COMMAND(dmadev_autotest, test_dma);
+REGISTER_TEST_COMMAND(dmadev_skeleton_autotest, test_skeleton_dma);
+REGISTER_TEST_COMMAND(dmadev_dpaa_autotest, test_dpaa_dma);
+REGISTER_TEST_COMMAND(dmadev_dpaa2_autotest, test_dpaa2_dma);
+REGISTER_TEST_COMMAND(dmadev_hisilicon_autotest, test_hisilicon_dma);
+REGISTER_TEST_COMMAND(dmadev_idxd_autotest, test_idxd_dma);
+REGISTER_TEST_COMMAND(dmadev_ioat_autotest, test_ioat_dma);
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/4] dma/cnxk: update PCI driver name
2023-08-10 12:21 [PATCH 0/4] test/dma: run tests as per configured pmd Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 1/4] dmadev: add function to get list of device identifiers Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 2/4] test/dma: run tests according to PMD Gowrishankar Muthukrishnan
@ 2023-08-10 12:21 ` Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 4/4] test/dma: enable cnxk tests Gowrishankar Muthukrishnan
3 siblings, 0 replies; 6+ messages in thread
From: Gowrishankar Muthukrishnan @ 2023-08-10 12:21 UTC (permalink / raw)
To: dev; +Cc: anoobj, Chengwen Feng, Vamsi Attunuru, Gowrishankar Muthukrishnan
Follow PCI driver naming convention standard across drivers.
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
drivers/dma/cnxk/cnxk_dmadev.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/dma/cnxk/cnxk_dmadev.c b/drivers/dma/cnxk/cnxk_dmadev.c
index a6f4a31e0e..8c5d1409b3 100644
--- a/drivers/dma/cnxk/cnxk_dmadev.c
+++ b/drivers/dma/cnxk/cnxk_dmadev.c
@@ -17,6 +17,8 @@
#include <roc_api.h>
#include <cnxk_dmadev.h>
+#define PCI_DRIVER_NAME dma_cnxk
+
static int
cnxk_dmadev_info_get(const struct rte_dma_dev *dev,
struct rte_dma_info *dev_info, uint32_t size)
@@ -719,6 +721,6 @@ static struct rte_pci_driver cnxk_dmadev = {
.remove = cnxk_dmadev_remove,
};
-RTE_PMD_REGISTER_PCI(cnxk_dmadev_pci_driver, cnxk_dmadev);
-RTE_PMD_REGISTER_PCI_TABLE(cnxk_dmadev_pci_driver, cnxk_dma_pci_map);
-RTE_PMD_REGISTER_KMOD_DEP(cnxk_dmadev_pci_driver, "vfio-pci");
+RTE_PMD_REGISTER_PCI(PCI_DRIVER_NAME, cnxk_dmadev);
+RTE_PMD_REGISTER_PCI_TABLE(PCI_DRIVER_NAME, cnxk_dma_pci_map);
+RTE_PMD_REGISTER_KMOD_DEP(PCI_DRIVER_NAME, "vfio-pci");
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/4] test/dma: enable cnxk tests
2023-08-10 12:21 [PATCH 0/4] test/dma: run tests as per configured pmd Gowrishankar Muthukrishnan
` (2 preceding siblings ...)
2023-08-10 12:21 ` [PATCH 3/4] dma/cnxk: update PCI driver name Gowrishankar Muthukrishnan
@ 2023-08-10 12:21 ` Gowrishankar Muthukrishnan
3 siblings, 0 replies; 6+ messages in thread
From: Gowrishankar Muthukrishnan @ 2023-08-10 12:21 UTC (permalink / raw)
To: dev; +Cc: anoobj, Chengwen Feng, Vamsi Attunuru, Gowrishankar Muthukrishnan
Enable DMA tests for CNXK driver.
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
app/test/meson.build | 1 +
app/test/test_dmadev.c | 9 +++++++++
2 files changed, 10 insertions(+)
diff --git a/app/test/meson.build b/app/test/meson.build
index de671b665f..fa5987f3a2 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -319,6 +319,7 @@ driver_test_names = [
'cryptodev_sw_snow3g_autotest',
'cryptodev_sw_zuc_autotest',
'cryptodev_uadk_autotest',
+ 'dmadev_cnxk_autotest',
'dmadev_dpaa_autotest',
'dmadev_dpaa2_autotest',
'dmadev_hisilicon_autotest',
diff --git a/app/test/test_dmadev.c b/app/test/test_dmadev.c
index 5e72e8535c..090a6e3ce3 100644
--- a/app/test/test_dmadev.c
+++ b/app/test/test_dmadev.c
@@ -1099,9 +1099,18 @@ test_ioat_dma(void)
return test_dma(pmd);
}
+static int
+test_cnxk_dma(void)
+{
+ const char *pmd = "dma_cnxk";
+
+ return test_dma(pmd);
+}
+
REGISTER_TEST_COMMAND(dmadev_skeleton_autotest, test_skeleton_dma);
REGISTER_TEST_COMMAND(dmadev_dpaa_autotest, test_dpaa_dma);
REGISTER_TEST_COMMAND(dmadev_dpaa2_autotest, test_dpaa2_dma);
REGISTER_TEST_COMMAND(dmadev_hisilicon_autotest, test_hisilicon_dma);
REGISTER_TEST_COMMAND(dmadev_idxd_autotest, test_idxd_dma);
REGISTER_TEST_COMMAND(dmadev_ioat_autotest, test_ioat_dma);
+REGISTER_TEST_COMMAND(dmadev_cnxk_autotest, test_cnxk_dma);
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/4] dmadev: add function to get list of device identifiers
2023-08-10 12:21 ` [PATCH 1/4] dmadev: add function to get list of device identifiers Gowrishankar Muthukrishnan
@ 2023-10-08 1:40 ` fengchengwen
0 siblings, 0 replies; 6+ messages in thread
From: fengchengwen @ 2023-10-08 1:40 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan, dev; +Cc: anoobj, Vamsi Attunuru
Hi Gowrishankar,
This could create a help function in test, just like:
func() {
RTE_DMA_FOREACH_DEV(i) {
rte_dma_info_get(i, &dev_info);
if (strncmp(dev_info->dev_name, xxx)
...
}
}
If some application (not test) should pick some specific device, I suggest
add more general API, e.g.
typedef int (*rte_dma_filter_fn)(struct rte_dma_info *dev_info, void *param);
uint16_t
rte_dma_get_devs_by_filter(rte_dma_filter_fn fn, void *param, uint16_t *dev_ids, uint16_t nb_ids) {
RTE_DMA_FOREACH_DEV(i) {
rte_dma_info_get(i, &dev_info);
if (fn(&dev_info, param) == 0) {
// add to out list
}
}
}
So we could filter special name-prefix/capability/multi-vchans
Thanks.
On 2023/8/10 20:21, Gowrishankar Muthukrishnan wrote:
> Add a function to get list of device identifiers for a given driver
> name.
>
> Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
> ---
> lib/dmadev/rte_dmadev.c | 20 ++++++++++++++++++++
> lib/dmadev/rte_dmadev.h | 21 +++++++++++++++++++++
> lib/dmadev/version.map | 1 +
> 3 files changed, 42 insertions(+)
>
> diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> index 8c095e1f35..f2a106564d 100644
> --- a/lib/dmadev/rte_dmadev.c
> +++ b/lib/dmadev/rte_dmadev.c
> @@ -388,6 +388,26 @@ rte_dma_get_dev_id_by_name(const char *name)
> return dev->data->dev_id;
> }
>
> +uint8_t
> +rte_dma_get_dev_list_by_driver(const char *name, int16_t *devs, uint8_t nb_devs)
> +{
> + uint8_t i, count = 0;
> +
> + if (name == NULL)
> + return count;
> +
> + for (i = 0; i < dma_devices_max && count < nb_devs; i++) {
> + if (rte_dma_devices[i].state == RTE_DMA_DEV_UNUSED)
> + continue;
> +
> + if (strncmp(rte_dma_devices[i].device->driver->name,
> + name, strlen(name) + 1) == 0)
> + devs[count++] = i;
> + }
> +
> + return count;
> +}
> +
> bool
> rte_dma_is_valid(int16_t dev_id)
> {
> diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
> index e61d71959e..689062a686 100644
> --- a/lib/dmadev/rte_dmadev.h
> +++ b/lib/dmadev/rte_dmadev.h
> @@ -191,6 +191,27 @@ int rte_dma_dev_max(size_t dev_max);
> __rte_experimental
> int rte_dma_get_dev_id_by_name(const char *name);
>
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change without prior notice.
> + *
> + * Get the list of device identifiers for the DMA driver.
> + *
> + * @param name
> + * DMA driver name.
> + * @param devs
> + * Output devices identifiers.
> + * @param nb_devs
> + * Maximal number of devices.
> + *
> + * @return
> + * Returns number of device identifiers.
> + */
> +__rte_experimental
> +uint8_t rte_dma_get_dev_list_by_driver(const char *name,
> + int16_t *devs,
> + uint8_t nb_devs);
> +
> /**
> * @warning
> * @b EXPERIMENTAL: this API may change without prior notice.
> diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
> index 7031d6b335..b4d56b41a0 100644
> --- a/lib/dmadev/version.map
> +++ b/lib/dmadev/version.map
> @@ -7,6 +7,7 @@ EXPERIMENTAL {
> rte_dma_dev_max;
> rte_dma_dump;
> rte_dma_get_dev_id_by_name;
> + rte_dma_get_dev_list_by_driver;
> rte_dma_info_get;
> rte_dma_is_valid;
> rte_dma_next_dev;
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-10-08 1:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-10 12:21 [PATCH 0/4] test/dma: run tests as per configured pmd Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 1/4] dmadev: add function to get list of device identifiers Gowrishankar Muthukrishnan
2023-10-08 1:40 ` fengchengwen
2023-08-10 12:21 ` [PATCH 2/4] test/dma: run tests according to PMD Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 3/4] dma/cnxk: update PCI driver name Gowrishankar Muthukrishnan
2023-08-10 12:21 ` [PATCH 4/4] test/dma: enable cnxk tests Gowrishankar Muthukrishnan
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).