From: Jason Gunthorpe jgg@nvidia.com Sent: Wednesday, September 27, 2023 11:44 PM
On Wed, Sep 27, 2023 at 10:49:29AM +0800, Baolu Lu wrote:
On 9/26/23 5:26 PM, Yi Liu wrote:
From: Kevin Tiankevin.tian@intel.com
This introduces three APIs for device drivers to manage pasid attach/ replace/detach.
int iommufd_device_pasid_attach(struct iommufd_device *idev, u32 pasid, u32 *pt_id); int iommufd_device_pasid_replace(struct iommufd_device *idev, u32 pasid, u32 *pt_id); void iommufd_device_pasid_detach(struct iommufd_device *idev, u32 pasid);
I am a bit puzzled. Do we really need both attach and replace interfaces to install a hwpt onto a pasid on device? The IOMMUFD already tracks the connections between hwpt and {device, pasid}, so it could easily call the right iommu interfaces (attach vs. replace). Perhaps I overlooked previous discussion on this.
It was a decision that attach will fail if something is already attached..
But for this API we could go the way of the iommu code and have only 'set' and 'unset' as the two operations.
I'm not sure the benefit of doing so. Instead it makes the caller side vfio more confusing by using attach/replace/detach for device vs. using set/unset for pasid?