RE: [RFC 3/8] iommufd: Support attach/replace hwpt per pasid

From: Tian, Kevin
Date: Wed Sep 27 2023 - 21:54:45 EST


> 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?