On Thu, Sep 28, 2023 at 12:15:28AM -0700, Yi Liu wrote: > This adds the domain_alloc_user op implementation. It supports allocating > domains to be used as parent under nested translation. > > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> > --- > drivers/iommu/intel/iommu.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index 5db283c17e0d..017aed5813d8 100644 > --- a/drivers/iommu/intel/iommu.c > +++ b/drivers/iommu/intel/iommu.c > @@ -4074,6 +4074,33 @@ static struct iommu_domain *intel_iommu_domain_alloc(unsigned type) > return NULL; > } > > +static struct iommu_domain * > +intel_iommu_domain_alloc_user(struct device *dev, u32 flags) > +{ > + struct iommu_domain *domain; > + struct intel_iommu *iommu; > + > + if (flags & (~IOMMU_HWPT_ALLOC_NEST_PARENT)) > + return ERR_PTR(-EOPNOTSUPP); > + > + iommu = device_to_iommu(dev, NULL, NULL); > + if (!iommu) > + return ERR_PTR(-ENODEV); Why isn't this just struct device_domain_info *info = dev_iommu_priv_get(dev) struct intel_iommu *iommu = info->iommu ??? Same question for almost all other calls to this function! The one in probe is reasonable, but I don't think it should be ever called again. I'm going to leave this, but please make a series cleaning all the device_to_iommu() stuff next cycle.. Jason