[PATCH 20/20] iommu: Convert remaining simple drivers to domain_alloc_paging()
Jason Gunthorpe
jgg at nvidia.com
Tue May 2 08:25:08 PDT 2023
On Tue, May 02, 2023 at 04:52:32PM +0200, Niklas Schnelle wrote:
> @@ -1947,7 +1948,7 @@ static struct iommu_domain *__iommu_domain_alloc(struct bus_type *bus,
> if ((type == IOMMU_DOMAIN_UNMANAGED || type == IOMMU_DOMAIN_DMA) &&
> bus->iommu_ops->domain_alloc_paging)
> domain = bus->iommu_ops->domain_alloc_paging(dev);
> - else
> + else if (bus->iommu_ops->domain_alloc)
> domain = bus->iommu_ops->domain_alloc(type);
> if (!domain)
> return NULL;
Agh, yes, it should fail, this is right, I'll fold it in, thanks
> This then uses the fallback of an empty IOMMU_DOMAIN_UNMANAGED and I
> get a working device in the guest. Also tried hot unplug where the
> device is taken over by the host again.
Great, thanks, I'll add your tested-by for the s390 drivers.
> I think with my DMA API
> conversion patches we can support blocking domains properly but for a
> temporary solution the above may be acceptable.
Yes, this is a good idea, I encourage all drivers to implement at
least one of BLOCKING or IDENTITY as global static singletons that
can't fail - this will allow us to have cleaner error recovery flows.
Jason
More information about the Linux-rockchip
mailing list