On Thu, Mar 13, 2025 at 03:51:13PM +1100, Alexey Kardashevskiy wrote: > About this atomical restructure - I looked at yours iommu-pt branch on > github but __cut_mapping()->pt_table_install64() only atomically swaps the > PDE but it does not do IOMMU TLB invalidate, have I missed it? That branch doesn't have the invalidation wired in, there is another branch that has invalidation but not cut yet.. It is a journey > And if it did so, that would not be atomic but it won't matter as > long as we do not destroy the old PDE before invalidating IOMMU TLB, > is this the idea? Thanks, When splitting the change in the PDE->PTE doesn't change the translation in effect. So if the IOTLB has cached the PDE, the SW will update it to an array of PTEs of same address, any concurrent DMA will continue to hit the same address, then when we invalidate the IOTLB the PDE will get dropped from cache and the next DMA will load PTEs. When I say atomic I mean from the perspective of the DMA initator there is no visible alteration. Perhaps I should say hitless. Jason