Merge branch 'arm/smmu' into arm/mediatek
authorJoerg Roedel <jroedel@suse.de>
Fri, 30 Aug 2019 14:12:10 +0000 (16:12 +0200)
committerJoerg Roedel <jroedel@suse.de>
Fri, 30 Aug 2019 14:12:10 +0000 (16:12 +0200)
1  2 
MAINTAINERS
drivers/iommu/dma-iommu.c
drivers/iommu/io-pgtable-arm-v7s.c
drivers/iommu/mtk_iommu.c
drivers/iommu/mtk_iommu_v1.c
include/linux/io-pgtable.h

diff --cc MAINTAINERS
Simple merge
Simple merge
index 5452871481478643f6c397c63fce0843d4812b5c,18e7d212c7de17d985943822328386ebe748a1e1..4cb394937700ce4e0f5ff7133042f6e9f5f6a38c
@@@ -627,12 -582,11 +627,11 @@@ static size_t arm_v7s_split_blk_unmap(s
                if (!ARM_V7S_PTE_IS_TABLE(pte, 1))
                        return 0;
  
 -              tablep = iopte_deref(pte, 1);
 +              tablep = iopte_deref(pte, 1, data);
-               return __arm_v7s_unmap(data, iova, size, 2, tablep);
+               return __arm_v7s_unmap(data, gather, iova, size, 2, tablep);
        }
  
-       io_pgtable_tlb_add_flush(&data->iop, iova, size, size, true);
-       io_pgtable_tlb_sync(&data->iop);
+       io_pgtable_tlb_add_page(&data->iop, gather, iova, size);
        return size;
  }
  
@@@ -683,10 -638,9 +683,9 @@@ static size_t __arm_v7s_unmap(struct ar
                for (i = 0; i < num_entries; i++) {
                        if (ARM_V7S_PTE_IS_TABLE(pte[i], lvl)) {
                                /* Also flush any partial walks */
-                               io_pgtable_tlb_add_flush(iop, iova, blk_size,
-                                       ARM_V7S_BLOCK_SIZE(lvl + 1), false);
-                               io_pgtable_tlb_sync(iop);
+                               io_pgtable_tlb_flush_walk(iop, iova, blk_size,
+                                               ARM_V7S_BLOCK_SIZE(lvl + 1));
 -                              ptep = iopte_deref(pte[i], lvl);
 +                              ptep = iopte_deref(pte[i], lvl, data);
                                __arm_v7s_free_table(ptep, lvl + 1, data);
                        } else if (iop->cfg.quirks & IO_PGTABLE_QUIRK_NON_STRICT) {
                                /*
        }
  
        /* Keep on walkin' */
 -      ptep = iopte_deref(pte[0], lvl);
 +      ptep = iopte_deref(pte[0], lvl, data);
-       return __arm_v7s_unmap(data, iova, size, lvl + 1, ptep);
+       return __arm_v7s_unmap(data, gather, iova, size, lvl + 1, ptep);
  }
  
  static size_t arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova,
index 400066d0d37ba7633e990b8205bc1372488c82f0,0827d51936faeaeeb08deed989f0b8025538e12b..67a483c1a9357c7629d569ae1456ca8181b92c89
@@@ -299,12 -285,11 +321,12 @@@ static int mtk_iommu_domain_finalise(st
        dom->cfg = (struct io_pgtable_cfg) {
                .quirks = IO_PGTABLE_QUIRK_ARM_NS |
                        IO_PGTABLE_QUIRK_NO_PERMS |
 -                      IO_PGTABLE_QUIRK_TLBI_ON_MAP,
 +                      IO_PGTABLE_QUIRK_TLBI_ON_MAP |
 +                      IO_PGTABLE_QUIRK_ARM_MTK_EXT,
                .pgsize_bitmap = mtk_iommu_ops.pgsize_bitmap,
                .ias = 32,
 -              .oas = 32,
 +              .oas = 34,
-               .tlb = &mtk_iommu_gather_ops,
+               .tlb = &mtk_iommu_flush_ops,
                .iommu_dev = data->dev,
        };
  
Simple merge
Simple merge