raw/ioat: support secondary process

Add support for secondary processes in ioat devices. The update
allocates a memzone for a primary process or returns it in a
secondary process.

Signed-off-by: Kumar Amber <kumar.amber@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
Kumar Amber 2021-01-08 22:22:16 +05:30 committed by Thomas Monjalon
parent d70e87907a
commit bc230b569e
2 changed files with 30 additions and 0 deletions

View File

@ -215,7 +215,22 @@ idxd_rawdev_create(const char *name, struct rte_device *dev,
goto cleanup;
}
/* Allocate memory for the primary process or else return the memory
* of primary memzone for the secondary process.
*/
snprintf(mz_name, sizeof(mz_name), "rawdev%u_private", rawdev->dev_id);
if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
mz = rte_memzone_lookup(mz_name);
if (mz == NULL) {
IOAT_PMD_ERR("Unable lookup memzone for private data\n");
ret = -ENOMEM;
goto cleanup;
}
rawdev->dev_private = mz->addr;
rawdev->dev_ops = ops;
rawdev->device = dev;
return 0;
}
mz = rte_memzone_reserve(mz_name, sizeof(struct idxd_rawdev),
dev->numa_node, RTE_MEMZONE_IOVA_CONTIG);
if (mz == NULL) {

View File

@ -165,7 +165,22 @@ ioat_rawdev_create(const char *name, struct rte_pci_device *dev)
goto cleanup;
}
/* Allocate memory for the primary process or else return the memory
* of primary memzone for the secondary process.
*/
snprintf(mz_name, sizeof(mz_name), "rawdev%u_private", rawdev->dev_id);
if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
mz = rte_memzone_lookup(mz_name);
if (mz == NULL) {
IOAT_PMD_ERR("Unable lookup memzone for private data\n");
ret = -ENOMEM;
goto cleanup;
}
rawdev->dev_private = mz->addr;
rawdev->dev_ops = &ioat_rawdev_ops;
rawdev->device = &dev->device;
return 0;
}
mz = rte_memzone_reserve(mz_name, sizeof(struct rte_ioat_rawdev),
dev->device.numa_node, RTE_MEMZONE_IOVA_CONTIG);
if (mz == NULL) {