1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2020 Intel Corporation
5 #include <rte_rawdev_pmd.h>
6 #include <rte_memzone.h>
7 #include <rte_common.h>
9 #include "ioat_private.h"
12 idxd_rawdev_close(struct rte_rawdev *dev __rte_unused)
18 idxd_rawdev_create(const char *name, struct rte_device *dev,
19 const struct idxd_rawdev *base_idxd,
20 const struct rte_rawdev_ops *ops)
22 struct idxd_rawdev *idxd;
23 struct rte_rawdev *rawdev = NULL;
24 const struct rte_memzone *mz = NULL;
25 char mz_name[RTE_MEMZONE_NAMESIZE];
29 IOAT_PMD_ERR("Invalid name of the device!");
34 /* Allocate device structure */
35 rawdev = rte_rawdev_pmd_allocate(name, sizeof(struct idxd_rawdev),
38 IOAT_PMD_ERR("Unable to allocate raw device");
43 snprintf(mz_name, sizeof(mz_name), "rawdev%u_private", rawdev->dev_id);
44 mz = rte_memzone_reserve(mz_name, sizeof(struct idxd_rawdev),
45 dev->numa_node, RTE_MEMZONE_IOVA_CONTIG);
47 IOAT_PMD_ERR("Unable to reserve memzone for private data\n");
51 rawdev->dev_private = mz->addr;
52 rawdev->dev_ops = ops;
54 rawdev->driver_name = IOAT_PMD_RAWDEV_NAME_STR;
56 idxd = rawdev->dev_private;
57 *idxd = *base_idxd; /* copy over the main fields already passed in */
58 idxd->rawdev = rawdev;
65 rte_rawdev_pmd_release(rawdev);