>-----Original Message-----
>From: Steven Sistare <steven.sist...@oracle.com>
>Subject: Re: [PATCH V3 29/42] backends/iommufd: change process ioctl
>
>On 5/19/2025 11:51 AM, Steven Sistare wrote:
>> On 5/16/2025 4:42 AM, Duan, Zhenzhong wrote:
>>>> -----Original Message-----
>>>> From: Steve Sistare <steven.sist...@oracle.com>
>>>> Subject: [PATCH V3 29/42] backends/iommufd: change process ioctl
>>>>
>>>> Define the change process ioctl
>>>>
>>>> Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
>>>> ---
>>>> backends/iommufd.c       | 20 ++++++++++++++++++++
>>>> backends/trace-events    |  1 +
>>>> include/system/iommufd.h |  2 ++
>>>> 3 files changed, 23 insertions(+)
>>>>
>>>> diff --git a/backends/iommufd.c b/backends/iommufd.c
>>>> index 5c1958f..6fed1c1 100644
>>>> --- a/backends/iommufd.c
>>>> +++ b/backends/iommufd.c
>>>> @@ -73,6 +73,26 @@ static void iommufd_backend_class_init(ObjectClass
>*oc,
>>>> const void *data)
>>>>      object_class_property_add_str(oc, "fd", NULL, iommufd_backend_set_fd);
>>>> }
>>>>
>>>> +bool iommufd_change_process_capable(IOMMUFDBackend *be)
>>>> +{
>>>> +    struct iommu_ioas_change_process args = {.size = sizeof(args)};
>>>> +
>>>> +    return !ioctl(be->fd, IOMMU_IOAS_CHANGE_PROCESS, &args);
>>>> +}
>>>> +
>>>> +bool iommufd_change_process(IOMMUFDBackend *be, Error **errp)
>>>> +{
>>>> +    struct iommu_ioas_change_process args = {.size = sizeof(args)};
>>>> +    bool ret = !ioctl(be->fd, IOMMU_IOAS_CHANGE_PROCESS, &args);
>>>
>>> This is same ioctl as above check, could it be called more than once for 
>>> same
>process?
>>
>> Yes, and it is a no-op if the process has not changed since the last time DMA
>> was mapped.
>
>More questions?

Looks a bit redundant for me, meanwhile if iommufd_change_process_capable() is 
called on target qemu, may it do both checking and change?

I would suggest to define only iommufd_change_process() and comment that it's 
no-op if process not changed...

Thanks
Zhenzhong

Reply via email to