On 2/27/23 10:00 PM, Jason Gunthorpe wrote:
On Sun, Feb 26, 2023 at 11:13:16AM +0800, Baolu Lu wrote:
On 2/25/23 8:27 AM, Jason Gunthorpe wrote:
+/**
- iommufd_device_attach - Connect a device to an iommu_domain
- @idev: device to attach
- @pt_id: Input a IOMMUFD_OBJ_IOAS, or IOMMUFD_OBJ_HW_PAGETABLE
Output the IOMMUFD_OBJ_HW_PAGETABLE ID
"Output the hwpt ID" only happens when the caller input an IOAS object and an auto domain was selected or created for the device.
Do I understand it right?
Technically it always outputs the hwpt, if a hwpt is in put then the same hwpt is output.
From the code point of view, the pt_id is set only when an auto domain is selected. Otherwise, it is untouched. Hence, probably we could describe it more accurately in the comments. That is, if auto domain is selected, its hwpt id will be returned in pt_id and the caller could return it to userspace.
EXPORT_SYMBOL_NS_GPL(iommufd_device_attach, IOMMUFD); +/**
- iommufd_device_replace - Change the device's iommu_domain
- @idev: device to change
- @pt_id: Input a IOMMUFD_OBJ_IOAS, or IOMMUFD_OBJ_HW_PAGETABLE
Output the IOMMUFD_OBJ_HW_PAGETABLE ID
If my above understanding is correct, then replace will never output a hwpt id as it only happens after a successful attach.
Replace calls iommufd_device_auto_get_domain() which always sets pt_id on success?
Yes. replace also calls iommufd_device_auto_get_domain().
If a HWPT was passed in then it just leaves it unchanged which is also correct.
Functionally right. Above I just want to make the comment matches what the real code does.
Best regards, baolu