]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iommu/io-pgtable-arm-v7s: Add support for the IOMMU_PRIV flag
authorRobin Murphy <robin.murphy@arm.com>
Fri, 6 Jan 2017 13:28:10 +0000 (18:58 +0530)
committerWill Deacon <will.deacon@arm.com>
Thu, 19 Jan 2017 15:56:18 +0000 (15:56 +0000)
The short-descriptor format also allows privileged-only mappings, so
let's wire it up.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Sricharan R <sricharan@codeaurora.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/iommu/io-pgtable-arm-v7s.c

index 0769276c0537c8157f3845dcb4d577998ebb5d77..1c049e2e12bf0ddacbc0e8ff9cbb09751996a549 100644 (file)
@@ -265,7 +265,9 @@ static arm_v7s_iopte arm_v7s_prot_to_pte(int prot, int lvl,
        if (!(prot & IOMMU_MMIO))
                pte |= ARM_V7S_ATTR_TEX(1);
        if (ap) {
-               pte |= ARM_V7S_PTE_AF | ARM_V7S_PTE_AP_UNPRIV;
+               pte |= ARM_V7S_PTE_AF;
+               if (!(prot & IOMMU_PRIV))
+                       pte |= ARM_V7S_PTE_AP_UNPRIV;
                if (!(prot & IOMMU_WRITE))
                        pte |= ARM_V7S_PTE_AP_RDONLY;
        }
@@ -288,6 +290,8 @@ static int arm_v7s_pte_to_prot(arm_v7s_iopte pte, int lvl)
 
        if (!(attr & ARM_V7S_PTE_AP_RDONLY))
                prot |= IOMMU_WRITE;
+       if (!(attr & ARM_V7S_PTE_AP_UNPRIV))
+               prot |= IOMMU_PRIV;
        if ((attr & (ARM_V7S_TEX_MASK << ARM_V7S_TEX_SHIFT)) == 0)
                prot |= IOMMU_MMIO;
        else if (pte & ARM_V7S_ATTR_C)