diff options
author | Will Deacon <will@kernel.org> | 2019-08-21 12:38:15 +0100 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2019-08-21 17:58:41 +0100 |
commit | 7314ca8699e1defd6f2883f203c0e828a4f51f9f (patch) | |
tree | 5d4d8295400c34caec78e010ff4909431991049a /drivers/iommu/arm-smmu-v3.c | |
parent | f75d8e33df91ee66fc12820d0da1454b76ebcff9 (diff) | |
download | lwn-7314ca8699e1defd6f2883f203c0e828a4f51f9f.tar.gz lwn-7314ca8699e1defd6f2883f203c0e828a4f51f9f.zip |
iommu/arm-smmu-v3: Don't issue CMD_SYNC for zero-length invalidations
Calling arm_smmu_tlb_inv_range() with a size of zero, perhaps due to
an empty 'iommu_iotlb_gather' structure, should be a NOP. Elide the
CMD_SYNC when there is no invalidation to be performed.
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'drivers/iommu/arm-smmu-v3.c')
-rw-r--r-- | drivers/iommu/arm-smmu-v3.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index 2be11a11bb8b..b7b3b0ff8ed6 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -1977,6 +1977,9 @@ static void arm_smmu_tlb_inv_range(unsigned long iova, size_t size, }, }; + if (!size) + return; + if (smmu_domain->stage == ARM_SMMU_DOMAIN_S1) { cmd.opcode = CMDQ_OP_TLBI_NH_VA; cmd.tlbi.asid = smmu_domain->s1_cfg.cd.asid; |