> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > 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 Tian<kevin.tian@xxxxxxxxx> > > > > > > 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?