• W
    iommu/arm-smmu-v3: Avoid locking on invalidation path when not using ATS · cdb8a3c3
    Will Deacon 提交于
    When ATS is not in use, we can avoid taking the 'devices_lock' for the
    domain on the invalidation path by simply caching the number of ATS
    masters currently attached. The fiddly part is handling a concurrent
    ->attach() of an ATS-enabled master to a domain that is being
    invalidated, but we can handle this using an 'smp_mb()' to ensure that
    our check of the count is ordered after completion of our prior TLB
    invalidation.
    
    This also makes our ->attach() and ->detach() flows symmetric wrt ATS
    interactions.
    Acked-by: NRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: NWill Deacon <will@kernel.org>
    cdb8a3c3
arm-smmu-v3.c 96.6 KB