[PATCH v3 23/25] iommu: Add ops->domain_alloc_paging()

Jason Gunthorpe jgg at nvidia.com
Sat Jun 10 05:03:52 PDT 2023


On Sat, Jun 10, 2023 at 05:08:31PM +0800, Baolu Lu wrote:
> > @@ -1992,8 +1993,13 @@ static struct iommu_domain *__iommu_domain_alloc(const struct iommu_ops *ops,
> >   	if (alloc_type == IOMMU_DOMAIN_IDENTITY && ops->identity_domain)
> >   		return ops->identity_domain;
> > +	else if (type & __IOMMU_DOMAIN_PAGING) {
> > +		domain = ops->domain_alloc_paging(dev);
> 
> This might be problematic because not all IOMMU drivers implement this
> callback now. In the missing cases, the code will always result in a
> null pointer reference issue?

Ah, thank you that is a rebasing error :(

> >   struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus)
> >   {
> >   	if (bus == NULL || bus->iommu_ops == NULL)
> >   		return NULL;
> > -	return __iommu_domain_alloc(bus->iommu_ops, IOMMU_DOMAIN_UNMANAGED);
> > +	return __iommu_domain_alloc(bus->iommu_ops, NULL,
> > +				    IOMMU_DOMAIN_UNMANAGED);
> 
> Suppose that iommu_domain_alloc() is always called from device drivers
> where device pointer is always available. Is it possible to convert it
> to a real device pointer?

Yes, Robin has a series for that

Jason



More information about the Linux-rockchip mailing list