+37
−22
+6
−4
+6
−3
Loading
This extends the below APIs to support PASID. Device drivers to manage pasid
attach/replace/detach.
int iommufd_device_attach(struct iommufd_device *idev,
ioasid_t pasid, u32 *pt_id);
int iommufd_device_replace(struct iommufd_device *idev,
ioasid_t pasid, u32 *pt_id);
void iommufd_device_detach(struct iommufd_device *idev,
ioasid_t pasid);
The pasid operations share underlying attach/replace/detach infrastructure
with the device operations, but still have some different implications:
- no reserved region per pasid otherwise SVA architecture is already
broken (CPU address space doesn't count device reserved regions);
- accordingly no sw_msi trick;
Cache coherency enforcement is still applied to pasid operations since
it is about memory accesses post page table walking (no matter the walk
is per RID or per PASID).
Link: https://patch.msgid.link/r/20250321171940.7213-12-yi.l.liu@intel.com
Reviewed-by:
Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by:
Kevin Tian <kevin.tian@intel.com>
Reviewed-by:
Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by:
Yi Liu <yi.l.liu@intel.com>
Tested-by:
Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by:
Jason Gunthorpe <jgg@nvidia.com>