This is the device driver API for SVA (Shared Virtual Addressing). Changes since v1 [1]:
* Following comments, return a handle rather than a PASID. I agree that it makes things easier for device drivers as well, because they don't need to worry about the unbind()/mm_exit() race as much. Previously they couldn't issue an unbind() if the mm exited since the PASID could have been reallocated. * If a handle already exists, reuse it and take a reference instead of returning EEXIST. As noted by Zhangfei and myself during development, it can make things a bit easier for device drivers that need to handle multiple threads in a process issuing bind() for the same dev and mm. The four dev_feature functions are implemented by Lu Baolu's IOMMU-aware mdev series [2]. iommu_dev_has_feature(dev, IOMMU_DEV_FEAT_SVA) -> true/false iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) -> 0/err iommu_dev_disable_feature(dev, IOMMU_DEV_FEAT_SVA) -> 0/err iommu_dev_feature_enabled(dev, IOMMU_DEV_FEAT_SVA) -> true/false Patch 1/1 adds the next four functions, once the SVA feature is enabled: iommu_sva_bind(dev, mm, drvdata) -> handle /* * Only exit_mm() for now, but later callbacks to deal with * unhandled PRI faults and possible others: */ iommu_sva_set_ops(handle, iommu_sva_ops) -> 0/err iommu_sva_get_pasid(handle) -> pasid/invalid iommu_sva_unbind(handle) Full support for the SMMUv3 can be found at [3] [1] https://lore.kernel.org/lkml/20190220142759.33308-1-jean-philippe.bruc...@arm.com/ [2] https://lore.kernel.org/lkml/20190213040301.23021-10-baolu...@linux.intel.com/T/ [3] git://linux-arm.org/linux-jpb.git sva/current http://www.linux-arm.org/git?p=linux-jpb.git;a=shortlog;h=refs/heads/sva/current Jean-Philippe Brucker (1): iommu: Bind process address spaces to devices drivers/iommu/iommu.c | 105 ++++++++++++++++++++++++++++++++++++++++++ include/linux/iommu.h | 71 ++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+) -- 2.21.0 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu