On 2/8/23 11:31 PM, Yi Liu wrote: > This converts iommufd to use iommu_domain_alloc_user() for iommu_domain > creation. > > Suggested-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > Signed-off-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> > --- > drivers/iommu/iommufd/hw_pagetable.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/iommufd/hw_pagetable.c b/drivers/iommu/iommufd/hw_pagetable.c > index 43d473989a06..08d963ee38c7 100644 > --- a/drivers/iommu/iommufd/hw_pagetable.c > +++ b/drivers/iommu/iommufd/hw_pagetable.c > @@ -30,6 +30,7 @@ struct iommufd_hw_pagetable * > iommufd_hw_pagetable_alloc(struct iommufd_ctx *ictx, struct iommufd_ioas *ioas, > struct device *dev) > { > + const struct iommu_ops *ops; > struct iommufd_hw_pagetable *hwpt; > int rc; > > @@ -37,7 +38,13 @@ iommufd_hw_pagetable_alloc(struct iommufd_ctx *ictx, struct iommufd_ioas *ioas, > if (IS_ERR(hwpt)) > return hwpt; > > - hwpt->domain = iommu_domain_alloc(dev->bus); > + ops = dev_iommu_ops(dev); > + if (!ops || !ops->domain_alloc_user) { > + rc = -EOPNOTSUPP; > + goto out_abort; > + } Hi Yi, This seems to break the iommufd vfio container support for any iommu that hasn't implemented domain_alloc_user yet. I noticed it using vfio-pci on s390 with CONFIG_IOMMUFD=m CONFIG_IOMMUFD_VFIO_CONTAINER=y CONFIG_VFIO_GROUP=y Not sure if the intent is to make domain_alloc_user a hard requirement for using iommufd (if so then the commit description really should highlight that). Otherwise, conditionally calling iommu_domain_alloc(dev->bus) when !ops->domain_alloc_user (instead of returning -EOPNOTSUPP) seems to restore the prior functionality for me. Thanks, Matt