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 <[email protected]>
---
drivers/vfio/fsl-mc/vfio_fsl_mc.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
index 27713aa86878..d17c5b3148ad 100644
--- a/drivers/vfio/fsl-mc/vfio_fsl_mc.c
+++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
@@ -310,7 +310,20 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
}
case VFIO_DEVICE_RESET:
{
- return -ENOTTY;
+ int ret = 0;
+
+ 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;
--
2.17.1
Hi Diana,
On 8/26/20 11:33 AM, Diana Craciun wrote:
> 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 <[email protected]>
> ---
> drivers/vfio/fsl-mc/vfio_fsl_mc.c | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
> index 27713aa86878..d17c5b3148ad 100644
> --- a/drivers/vfio/fsl-mc/vfio_fsl_mc.c
> +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
> @@ -310,7 +310,20 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
> }
> case VFIO_DEVICE_RESET:
> {
> - return -ENOTTY;
> + int ret = 0;
initialization not needed
> +
spare empty line
> + 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;
it is an error case or do we just don't care?
> +
> + 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;
>
Thanks
Eric
Hi Eric,
On 9/4/2020 11:21 AM, Auger Eric wrote:
> Hi Diana,
>
> On 8/26/20 11:33 AM, Diana Craciun wrote:
>> 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 <[email protected]>
>> ---
>> drivers/vfio/fsl-mc/vfio_fsl_mc.c | 15 ++++++++++++++-
>> 1 file changed, 14 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>> index 27713aa86878..d17c5b3148ad 100644
>> --- a/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>> +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>> @@ -310,7 +310,20 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
>> }
>> case VFIO_DEVICE_RESET:
>> {
>> - return -ENOTTY;
>> + int ret = 0;
> initialization not needed
>> +
> spare empty line
>> + 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;
> it is an error case or do we just don't care?
I rather don't care, but shouldn't the userspace know that the reset for
that device failed?
>> +
>> + 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;
>>
> Thanks
>
> Eric
>
Thanks,
Diana
Hi Diana,
On 9/7/20 4:36 PM, Diana Craciun OSS wrote:
> Hi Eric,
>
> On 9/4/2020 11:21 AM, Auger Eric wrote:
>> Hi Diana,
>>
>> On 8/26/20 11:33 AM, Diana Craciun wrote:
>>> 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 <[email protected]>
>>> ---
>>> drivers/vfio/fsl-mc/vfio_fsl_mc.c | 15 ++++++++++++++-
>>> 1 file changed, 14 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>>> b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>>> index 27713aa86878..d17c5b3148ad 100644
>>> --- a/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>>> +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
>>> @@ -310,7 +310,20 @@ static long vfio_fsl_mc_ioctl(void *device_data,
>>> unsigned int cmd,
>>> }
>>> case VFIO_DEVICE_RESET:
>>> {
>>> - return -ENOTTY;
>>> + int ret = 0;
>> initialization not needed
>>> +
>> spare empty line
>>> + 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;
>> it is an error case or do we just don't care?
>
>
> I rather don't care, but shouldn't the userspace know that the reset for
> that device failed?I don't know what makes more sense. It was more a question.
Thanks
Eric
>
>>> +
>>> + 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;
>>>
>> Thanks
>>
>> Eric
>>
>
> Thanks,
> Diana
>