/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2015-2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016-2019 NXP
+ * Copyright 2016-2021 NXP
*
*/
case DPAA2_BPOOL:
case DPAA2_DPRTC:
case DPAA2_MUX:
+ case DPAA2_DPRC:
TAILQ_FOREACH(object, &dpaa2_obj_list, next) {
if (dev->dev_type == object->dev_type)
object->create(dev_fd, &device_info,
return -1;
}
+ /* Search for DPRC device next as it updates endpoint of
+ * other devices.
+ */
+ current_device = 0;
+ RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) {
+ if (dev->dev_type == DPAA2_DPRC) {
+ ret = fslmc_process_iodevices(dev);
+ if (ret) {
+ DPAA2_BUS_ERR("Unable to process dprc");
+ return -1;
+ }
+ TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev, next);
+ }
+ }
+
current_device = 0;
RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next,
dev_temp) {
{
int groupid;
int ret;
+ int vfio_container_fd;
struct vfio_group_status status = { .argsz = sizeof(status) };
/* if already done once */
return 0;
}
+ ret = rte_vfio_container_create();
+ if (ret < 0) {
+ DPAA2_BUS_ERR("Failed to open VFIO container");
+ return ret;
+ }
+ vfio_container_fd = ret;
+
/* Get the actual group fd */
- ret = rte_vfio_get_group_fd(groupid);
+ ret = rte_vfio_container_group_bind(vfio_container_fd, groupid);
if (ret < 0)
return ret;
vfio_group.fd = ret;