lkml.org 
[lkml]   [2021]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/9] iommu: Refactor flush queues into iommu-dma
    Date
    Hi all,

    As promised, this series cleans up the flush queue code and streamlines
    it directly into iommu-dma. Since we no longer have per-driver DMA ops
    implementations, a lot of the abstraction is now no longer necessary, so
    there's a nice degree of simplification in the process. Un-abstracting
    the queued page freeing mechanism is also the perfect opportunity to
    revise which struct page fields we use so we can be better-behaved
    from the MM point of view, thanks to Matthew.

    These changes should also make it viable to start using the gather
    freelist in io-pgtable-arm, and eliminate some more synchronous
    invalidations from the normal flow there, but that is proving to need a
    bit more careful thought than I have time for in this cycle, so I've
    parked that again for now and will revisit it in the new year.

    For convenience, branch at:
    https://gitlab.arm.com/linux-arm/linux-rm/-/tree/iommu/iova

    I've build-tested for x86_64, and boot-tested arm64 to the point of
    confirming that put_pages_list() gets passed a valid empty list when
    flushing, while everything else still works.

    Cheers,
    Robin.


    Matthew Wilcox (Oracle) (2):
    iommu/amd: Use put_pages_list
    iommu/vt-d: Use put_pages_list

    Robin Murphy (7):
    gpu: host1x: Add missing DMA API include
    iommu/iova: Squash entry_dtor abstraction
    iommu/iova: Squash flush_cb abstraction
    iommu/amd: Simplify pagetable freeing
    iommu/iova: Consolidate flush queue code
    iommu/iova: Move flush queue code to iommu-dma
    iommu: Move flush queue data into iommu_dma_cookie

    drivers/gpu/host1x/bus.c | 1 +
    drivers/iommu/amd/io_pgtable.c | 116 ++++++--------
    drivers/iommu/dma-iommu.c | 266 +++++++++++++++++++++++++++------
    drivers/iommu/intel/iommu.c | 89 ++++-------
    drivers/iommu/iova.c | 200 -------------------------
    include/linux/iommu.h | 3 +-
    include/linux/iova.h | 69 +--------
    7 files changed, 295 insertions(+), 449 deletions(-)

    --
    2.28.0.dirty

    \
     
     \ /
      Last update: 2021-11-23 15:11    [W:8.156 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site