vfio/fsl-mc: Add support for device reset
Currently only resetting the DPRC container is supported which will reset all the objects inside it. Resetting individual objects is possible from the userspace by issueing commands towards MC firmware. Signed-off-by: Diana Craciun <diana.craciun@oss.nxp.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
1bb141ed5e
commit
ac93ab2bf6
|
@ -217,6 +217,10 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
|
|||
return -EINVAL;
|
||||
|
||||
info.flags = VFIO_DEVICE_FLAGS_FSL_MC;
|
||||
|
||||
if (is_fsl_mc_bus_dprc(mc_dev))
|
||||
info.flags |= VFIO_DEVICE_FLAGS_RESET;
|
||||
|
||||
info.num_regions = mc_dev->obj_desc.region_count;
|
||||
info.num_irqs = mc_dev->obj_desc.irq_count;
|
||||
|
||||
|
@ -299,7 +303,19 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
|
|||
}
|
||||
case VFIO_DEVICE_RESET:
|
||||
{
|
||||
return -ENOTTY;
|
||||
int ret;
|
||||
struct fsl_mc_device *mc_dev = vdev->mc_dev;
|
||||
|
||||
/* reset is supported only for the DPRC */
|
||||
if (!is_fsl_mc_bus_dprc(mc_dev))
|
||||
return -ENOTTY;
|
||||
|
||||
ret = dprc_reset_container(mc_dev->mc_io, 0,
|
||||
mc_dev->mc_handle,
|
||||
mc_dev->obj_desc.id,
|
||||
DPRC_RESET_OPTION_NON_RECURSIVE);
|
||||
return ret;
|
||||
|
||||
}
|
||||
default:
|
||||
return -ENOTTY;
|
||||
|
|
Loading…
Reference in New Issue