summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/iommu/msm_iommu_pagetable.c3
-rw-r--r--drivers/iommu/msm_iommu_pagetable_lpae.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/iommu/msm_iommu_pagetable.c b/drivers/iommu/msm_iommu_pagetable.c
index 797a2214e644..3f86de5af139 100644
--- a/drivers/iommu/msm_iommu_pagetable.c
+++ b/drivers/iommu/msm_iommu_pagetable.c
@@ -26,6 +26,7 @@
#define NUM_FL_PTE 4096
#define NUM_SL_PTE 256
+#define GUARD_PTE 2
#define NUM_TEX_CLASS 8
/* First-level page table bits */
@@ -173,7 +174,7 @@ static u32 *make_second_level(struct msm_iommu_pt *pt,
goto fail;
}
memset(sl, 0, SZ_4K);
- clean_pte(sl, sl + NUM_SL_PTE, pt->redirect);
+ clean_pte(sl, sl + NUM_SL_PTE + GUARD_PTE, pt->redirect);
*fl_pte = ((((int)__pa(sl)) & FL_BASE_MASK) | \
FL_TYPE_TABLE);
diff --git a/drivers/iommu/msm_iommu_pagetable_lpae.c b/drivers/iommu/msm_iommu_pagetable_lpae.c
index 18a4ff6ce3c3..59b4c8484540 100644
--- a/drivers/iommu/msm_iommu_pagetable_lpae.c
+++ b/drivers/iommu/msm_iommu_pagetable_lpae.c
@@ -24,6 +24,7 @@
#define NUM_FL_PTE 4 /* First level */
#define NUM_SL_PTE 512 /* Second level */
#define NUM_TL_PTE 512 /* Third level */
+#define GUARD_PTE 2
#define PTE_SIZE 8
@@ -191,7 +192,7 @@ static inline u64 *make_second_level_tbl(s32 redirect, u64 *fl_pte)
goto fail;
}
memset(sl, 0, SZ_4K);
- clean_pte(sl, sl + NUM_SL_PTE, redirect);
+ clean_pte(sl, sl + NUM_SL_PTE + GUARD_PTE, redirect);
/* Leave APTable bits 0 to let next level decide access permissinons */
*fl_pte = (((phys_addr_t)__pa(sl)) & FLSL_BASE_MASK) | FLSL_TYPE_TABLE;
@@ -209,7 +210,7 @@ static inline u64 *make_third_level_tbl(s32 redirect, u64 *sl_pte)
goto fail;
}
memset(tl, 0, SZ_4K);
- clean_pte(tl, tl + NUM_TL_PTE, redirect);
+ clean_pte(tl, tl + NUM_TL_PTE + GUARD_PTE, redirect);
/* Leave APTable bits 0 to let next level decide access permissions */
*sl_pte = (((phys_addr_t)__pa(tl)) & FLSL_BASE_MASK) | FLSL_TYPE_TABLE;