mm, tracing: unify PFN format strings
[linux-2.6-microblaze.git] / drivers / iommu / io-pgtable-arm.c
index b34b00f..87def58 100644 (file)
 /* IOPTE accessors */
 #define iopte_deref(pte,d) __va(iopte_to_paddr(pte, d))
 
-#define iopte_type(pte,l)                                      \
+#define iopte_type(pte)                                        \
        (((pte) >> ARM_LPAE_PTE_TYPE_SHIFT) & ARM_LPAE_PTE_TYPE_MASK)
 
 #define iopte_prot(pte)        ((pte) & ARM_LPAE_PTE_ATTR_MASK)
@@ -151,9 +151,9 @@ static inline bool iopte_leaf(arm_lpae_iopte pte, int lvl,
                              enum io_pgtable_fmt fmt)
 {
        if (lvl == (ARM_LPAE_MAX_LEVELS - 1) && fmt != ARM_MALI_LPAE)
-               return iopte_type(pte, lvl) == ARM_LPAE_PTE_TYPE_PAGE;
+               return iopte_type(pte) == ARM_LPAE_PTE_TYPE_PAGE;
 
-       return iopte_type(pte, lvl) == ARM_LPAE_PTE_TYPE_BLOCK;
+       return iopte_type(pte) == ARM_LPAE_PTE_TYPE_BLOCK;
 }
 
 static arm_lpae_iopte paddr_to_iopte(phys_addr_t paddr,
@@ -280,7 +280,7 @@ static int arm_lpae_init_pte(struct arm_lpae_io_pgtable *data,
                /* We require an unmap first */
                WARN_ON(!selftest_running);
                return -EEXIST;
-       } else if (iopte_type(pte, lvl) == ARM_LPAE_PTE_TYPE_TABLE) {
+       } else if (iopte_type(pte) == ARM_LPAE_PTE_TYPE_TABLE) {
                /*
                 * We need to unmap and free the old table before
                 * overwriting it with a block entry.
@@ -450,10 +450,6 @@ static int arm_lpae_map(struct io_pgtable_ops *ops, unsigned long iova,
        arm_lpae_iopte prot;
        long iaext = (s64)iova >> cfg->ias;
 
-       /* If no access, then nothing to do */
-       if (!(iommu_prot & (IOMMU_READ | IOMMU_WRITE)))
-               return 0;
-
        if (WARN_ON(!size || (size & cfg->pgsize_bitmap) != size))
                return -EINVAL;
 
@@ -462,6 +458,10 @@ static int arm_lpae_map(struct io_pgtable_ops *ops, unsigned long iova,
        if (WARN_ON(iaext || paddr >> cfg->oas))
                return -ERANGE;
 
+       /* If no access, then nothing to do */
+       if (!(iommu_prot & (IOMMU_READ | IOMMU_WRITE)))
+               return 0;
+
        prot = arm_lpae_prot_to_pte(data, iommu_prot);
        ret = __arm_lpae_map(data, iova, paddr, size, prot, lvl, ptep, gfp);
        /*
@@ -554,7 +554,7 @@ static size_t arm_lpae_split_blk_unmap(struct arm_lpae_io_pgtable *data,
                 * block, but anything else is invalid. We can't misinterpret
                 * a page entry here since we're never at the last level.
                 */
-               if (iopte_type(pte, lvl - 1) != ARM_LPAE_PTE_TYPE_TABLE)
+               if (iopte_type(pte) != ARM_LPAE_PTE_TYPE_TABLE)
                        return 0;
 
                tablep = iopte_deref(pte, data);
@@ -1094,7 +1094,6 @@ static void __init dummy_tlb_add_page(struct iommu_iotlb_gather *gather,
 static const struct iommu_flush_ops dummy_tlb_ops __initconst = {
        .tlb_flush_all  = dummy_tlb_flush_all,
        .tlb_flush_walk = dummy_tlb_flush,
-       .tlb_flush_leaf = dummy_tlb_flush,
        .tlb_add_page   = dummy_tlb_add_page,
 };