[PATCH] iommu/io-pgtable-arm: Drop DMA API usage for CMOs

Mostafa Saleh smostafa at google.com
Thu Jan 8 05:44:51 PST 2026


On Thu, Jan 8, 2026 at 1:27 PM Mostafa Saleh <smostafa at google.com> wrote:
>
> On Thu, Jan 8, 2026 at 12:59 PM Jason Gunthorpe <jgg at ziepe.ca> wrote:
> >
> > On Thu, Jan 08, 2026 at 11:38:46AM +0000, Mostafa Saleh wrote:
> > > Jason pointed out that the DMA-API calls are not really needed [2].
> > >
> > > Looking more into this. Initially, the io-pgtable API let drivers
> > > do the CMOs using tlb::flush_pgtable() where drivers were using the
> > > DMA API (map/unmap_single) only to do CMOs as the low-level cache
> > > functions won’t be available for modules.
> >
> > This isn't what I ment at all, the iommu-pages.h could do the flush
> > inside itself using the already existing
> > iommu_pages_flush_incoherent() instead of open coding the dma api
> > calls everwhere, and maybe that could directly call the arch function
> > on arm (as x86 does) which would be easier to implement in pkvm's
> > hypervisor.
> >
>
> I see, so basically, we add the check for IOMMU_PAGES_USE_DMA_API in
> iommu_pages_flush_incoherent() with the DMA-API stuff and call it from
> the io-pgtable-arm instead.
>

iommu_pages_flush_incoherent() is also used to flush non-cacheable
pages in generic_pt from flush_writes_*(), so it might not be that
simple; We might need to add a new variant.

Thanks,
Mostafa

> > Then it is reasonable to have a pkvm version of the iommu-pages api
> > for the page table and drive rto use.
> >
>
> That makes sense, I will look it over and send another version if
> Robin is Ok with it.
>
> Thanks,
> Mostafa
>
> > Jason



More information about the linux-arm-kernel mailing list