• Robin Murphy's avatar
    iommu/mtk: Avoid redundant TLB syncs locally · 98a8f63e
    Robin Murphy authored
    Under certain circumstances, the io-pgtable code may end up issuing two
    TLB sync operations without any intervening invalidations. This goes
    badly for the M4U hardware, since it means the second sync ends up
    polling for a non-existent operation to finish, and as a result times
    out and warns. The io_pgtable_tlb_* helpers implement a high-level
    optimisation to avoid issuing the second sync at all in such cases, but
    in order to work correctly that requires all pagetable operations to be
    serialised under a lock, thus is no longer applicable to all io-pgtable
    users.
    
    Since we're the only user actually relying on this flag for correctness,
    let's reimplement it locally to avoid the headache of trying to make the
    high-level version concurrency-safe for other users.
    
    CC: Yong Wu <yong.wu@mediatek.com>
    CC: Matthias Brugger <matthias.bgg@gmail.com>
    Tested-by: default avatarYong Wu <yong.wu@mediatek.com>
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    98a8f63e
mtk_iommu.h 1.89 KB