diff options
-rw-r--r-- | drivers/iommu/io-pgtable-arm.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index a40ce3406fef..feacc54bec68 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c | |||
@@ -350,11 +350,14 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data, | |||
350 | 350 | ||
351 | if (data->iop.fmt == ARM_64_LPAE_S1 || | 351 | if (data->iop.fmt == ARM_64_LPAE_S1 || |
352 | data->iop.fmt == ARM_32_LPAE_S1) { | 352 | data->iop.fmt == ARM_32_LPAE_S1) { |
353 | pte = ARM_LPAE_PTE_AP_UNPRIV | ARM_LPAE_PTE_nG; | 353 | pte = ARM_LPAE_PTE_nG; |
354 | 354 | ||
355 | if (!(prot & IOMMU_WRITE) && (prot & IOMMU_READ)) | 355 | if (!(prot & IOMMU_WRITE) && (prot & IOMMU_READ)) |
356 | pte |= ARM_LPAE_PTE_AP_RDONLY; | 356 | pte |= ARM_LPAE_PTE_AP_RDONLY; |
357 | 357 | ||
358 | if (!(prot & IOMMU_PRIV)) | ||
359 | pte |= ARM_LPAE_PTE_AP_UNPRIV; | ||
360 | |||
358 | if (prot & IOMMU_MMIO) | 361 | if (prot & IOMMU_MMIO) |
359 | pte |= (ARM_LPAE_MAIR_ATTR_IDX_DEV | 362 | pte |= (ARM_LPAE_MAIR_ATTR_IDX_DEV |
360 | << ARM_LPAE_PTE_ATTRINDX_SHIFT); | 363 | << ARM_LPAE_PTE_ATTRINDX_SHIFT); |