diff options
author | Krishna Reddy <vdumpa@nvidia.com> | 2012-05-29 16:29:10 -0700 |
---|---|---|
committer | Ryan Wong <ryanw@nvidia.com> | 2012-06-13 16:05:19 -0700 |
commit | dadd7b60d43d97d088c40f3fc7019219bc74a057 (patch) | |
tree | 822d0aee529a6f92897aa5a2803dfd7eb009428b | |
parent | f69499e0b170678a911ae756e1d541142f868247 (diff) |
mm: Ensure pte and pmd stores ordering.
Bug 974153
Signed-off-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-on: http://git-master/r/105215
(cherry picked from commit 25c3334f0e1ea6bde84c0514bad0eb1859566dba)
Change-Id: I3a77ce812fab77f785c488a3aac9d0bc66e8236d
Reviewed-on: http://git-master/r/108446
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sang-Hun Lee <sanlee@nvidia.com>
Tested-by: Sang-Hun Lee <sanlee@nvidia.com>
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
-rw-r--r-- | arch/arm/mm/pageattr.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mm/pageattr.c b/arch/arm/mm/pageattr.c index 5f8071110e88..b7ff7f19b541 100644 --- a/arch/arm/mm/pageattr.c +++ b/arch/arm/mm/pageattr.c @@ -331,6 +331,10 @@ static void __set_pmd_pte(pmd_t *pmd, unsigned long address, pte_t *pte) cpa_debug("__set_pmd_pte %x %x %x\n", pmd, pte, *pte); + /* enforce pte entry stores ordering to avoid pmd writes + * bypassing pte stores. + */ + dsb(); /* change init_mm */ pmd_populate_kernel(&init_mm, pmd, pte); @@ -342,7 +346,10 @@ static void __set_pmd_pte(pmd_t *pmd, unsigned long address, pte_t *pte) pgd_index(address), address); pmd_populate_kernel(NULL, pmd, pte); } - + /* enforce pmd entry stores ordering to avoid tlb flush bypassing + * pmd entry stores. + */ + dsb(); } static int |