iommu/tegra: smmu: Remove unnecessary PTC/TLB flush all
authorHiroshi Doyu <hdoyu@nvidia.com>
Wed, 28 Nov 2012 13:52:53 +0000 (15:52 +0200)
committerJoerg Roedel <joro@8bytes.org>
Wed, 28 Nov 2012 15:11:52 +0000 (16:11 +0100)
smmu_flush_regs() does TLB/PTC flush all when freeing a second level
page table. This isn't necessay at all since each pte entry has been
already maintained by address in the above flush_ptc_and_tlb().

Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
drivers/iommu/tegra-smmu.c

index c0f7a42..48538a6 100644 (file)
@@ -696,10 +696,8 @@ static void __smmu_iommu_unmap(struct smmu_as *as, dma_addr_t iova)
        *pte = _PTE_VACANT(iova);
        FLUSH_CPU_DCACHE(pte, page, sizeof(*pte));
        flush_ptc_and_tlb(as->smmu, as, iova, pte, page, 0);
-       if (!--(*count)) {
+       if (!--(*count))
                free_ptbl(as, iova);
-               smmu_flush_regs(as->smmu, 0);
-       }
 }
 
 static void __smmu_iommu_map_pfn(struct smmu_as *as, dma_addr_t iova,