Skip to content

Commit 980e301

Browse files
yiliu1765joergroedel
authored andcommitted
iommu: Make set_dev_pasid op support domain replacement
The iommu core is going to support domain replacement for pasid, it needs to make the set_dev_pasid op support replacing domain and keep the old domain config in the failure case. AMD iommu driver does not support domain replacement for pasid yet, so it would fail the set_dev_pasid op to keep the old config if the input @old is non-NULL. Till now, all the set_dev_pasid callbacks can handle the old parameter and can keep the old config when failed, so update the kdoc of set_dev_pasid op. Suggested-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Vasant Hegde <vasant.hegde@amd.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> Link: https://lore.kernel.org/r/20241107122234.7424-14-yi.l.liu@intel.com Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent e9f1f72 commit 980e301

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

drivers/iommu/amd/pasid.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ int iommu_sva_set_dev_pasid(struct iommu_domain *domain,
109109
unsigned long flags;
110110
int ret = -EINVAL;
111111

112+
if (old)
113+
return -EOPNOTSUPP;
114+
112115
/* PASID zero is used for requests from the I/O device without PASID */
113116
if (!is_pasid_valid(dev_data, pasid))
114117
return ret;

include/linux/iommu.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,8 @@ struct iommu_ops {
616616
* * EBUSY - device is attached to a domain and cannot be changed
617617
* * ENODEV - device specific errors, not able to be attached
618618
* * <others> - treated as ENODEV by the caller. Use is discouraged
619-
* @set_dev_pasid: set an iommu domain to a pasid of device
619+
* @set_dev_pasid: set or replace an iommu domain to a pasid of device. The pasid of
620+
* the device should be left in the old config in error case.
620621
* @map_pages: map a physically contiguous set of pages of the same size to
621622
* an iommu domain.
622623
* @unmap_pages: unmap a number of pages of the same size from an iommu domain

0 commit comments

Comments
 (0)