On Fri, 2022-12-02 at 10:42 -0400, Jason Gunthorpe wrote: > On Fri, Dec 02, 2022 at 03:29:50PM +0100, Niklas Schnelle wrote: > > > @Robin @Joerg, if you are open to changing .iotlb_sync_map such that it > > can return and error and then failing the mapping operation I think > > this is a great approach. One advantage over the previous approach of > > flushing the queue isthat this should work for the pure IOMMU API too. > > I think it is pretty important that the "pure" IOMMU API work with > whatever your solution its, the iommu_domain implementation in a > driver should not be sensitive to if the dma-iommu.c is operating the > domain or something else. > > Jason Agree. At the moment, i.e. with current mainline and even with the IOMMU improvements in Joerg's queue, the IOMMU APIdoesn't work when the hypervisor returns out-of-resource from the IOTLB flush (RPCIT). This is currently only handled correctly in the arch/s390/pci/pci_dma.c DMA API implementation. I think both handling this with a hidden/inlined .iotlb_sync_map in s390_iommu_map_pages() or with an enhanced .iotlb_sync_map that then must be able to return an error will fix this shortcoming. The latter would be something like this commit I'm currently testing with: https://git.kernel.org/pub/scm/linux/kernel/git/niks/linux.git/commit/?h=dma_iommu_v3&id=a2aecd821fe3c5e2549946a68d8b07e05b288a9b Thanks, Niklas