On Tue, Sep 13, 2022 at 02:22:17AM +0000, Tian, Kevin wrote: > External email: Use caution opening links or attachments > > > > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Sent: Friday, September 9, 2022 8:08 PM > > > > > > > As discussed in a side thread a note might be added to exempt calling > > > kAPI outside of the iommu driver. > > > > Sadly, not really.. The driver is responsible to santize this if it is > > relevant. It is the main downside of this approach. > > > > Better provide a clarification on what sanitization means. > > e.g. I don't think we should change errno in those kAPIs to match the > definition in iommu subsystem since e.g. -EINVAL really means different > things in different context. > > So the sanitization in iommu driver is probably that: > > - If an external kAPI returns -EINVAL, convert it to -ENODEV given iommu > domain is iommu internal object hence unlikely for external kAPIs to > capture incompatibility issue between domain/device; > - Otherwise just pass whatever returned to the caller, following the definition > of "Same behavior as -ENODEV" above I added something similar. Thanks! diff --git a/include/linux/iommu.h b/include/linux/iommu.h index ea30f00dc145..190647d018f9 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -266,6 +266,17 @@ struct iommu_ops { /** * struct iommu_domain_ops - domain specific operations * @attach_dev: attach an iommu domain to a device + * Rules of its return errno: + * EINVAL - Exclusively, device and domain are incompatible. Must + * avoid kernel prints along with this errno. An EINVAL + * returned from a kAPI must be coverted to ENODEV if it + * is device specific, or to some other reasonable errno + * being listed below + * ENOMEM - Out of memory + * ENOSPC - No space left on device + * EBUSY - Device is attached to a domain and cannot be changed + * ENODEV - Device specific errors, not able to be attached + * <others> - Treated as ENODEV by the caller. Use is discouraged * @detach_dev: detach an iommu domain from a device * @map: map a physically contiguous memory region to an iommu domain * @map_pages: map a physically contiguous set of pages of the same size to