On Thu, Apr 13, 2023 at 08:37:14AM -0300, Jason Gunthorpe wrote: > > > > @@ -266,6 +267,9 @@ struct iommu_ops { > > > > > > > > /* Domain allocation and freeing by the iommu driver */ > > > > struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type); > > > > + struct iommu_domain *(*domain_alloc_user)(struct device *dev, > > > > + struct iommu_domain *parent, > > > > + const void *user_data); > > > > > > Since the kernel does the copy from user and manages the zero fill > > > compat maybe this user_data have a union like Robin suggested. > > > > > > But yes, this is the idea. > > > > > > Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > > > > We pass in a read-only data to this ->domain_alloc_user() while > > it also returns NULL on failure, matching ->domain_alloc(). So, > > there seems to be no error feedback pathway from the driver to > > user space. > > > > Robin remarked in the SMMU series that an STE configuration can > > fail. So, a proper error feedback is required for this callback > > too. > > > > To return a driver/HW specific error, I think we could define a > > "u8 out_error" in the user_data structure. So, we probably need > > a non-const pass-in here. What do you think? > > What is wrong with err_ptr? I see. That could keep the "const" then. Will try that. Thanks! Nic