On 4/28/23 1:49 AM, Jacob Pan wrote:
+ioasid_t iommu_alloc_global_pasid_dev(struct device *dev) +{ + int ret; + ioasid_t max; + + max = dev_iommu_get_max_pasids(dev);
Perhaps you can use dev->iommu->max_pasids. It's static, so no need to recalculate it.
+ ret = ida_alloc_range(&iommu_global_pasid_ida, IOMMU_DEF_RID_PASID + 1, max, GFP_KERNEL); + if (ret < 0) + return IOMMU_PASID_INVALID; + + return ret; +} +EXPORT_SYMBOL_GPL(iommu_alloc_global_pasid_dev);
Best regards, baolu