• Robin Murphy's avatar
    iommu/arm-smmu: Use per-context TLB sync as appropriate · 11febfca
    Robin Murphy authored
    TLB synchronisation typically involves the SMMU blocking all incoming
    transactions until the TLBs report completion of all outstanding
    operations. In the common SMMUv2 configuration of a single distributed
    SMMU serving multiple peripherals, that means that a single unmap
    request has the potential to bring the hammer down on the entire system
    if synchronised globally. Since stage 1 contexts, and stage 2 contexts
    under SMMUv2, offer local sync operations, let's make use of those
    wherever we can in the hope of minimising global disruption.
    
    To that end, rather than add any more branches to the already unwieldy
    monolithic TLB maintenance ops, break them up into smaller, neater,
    functions which we can then mix and match as appropriate.
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    11febfca
arm-smmu.c 62.8 KB