diff options
author | Scott Wood <scottwood@freescale.com> | 2015-07-18 22:24:57 +0300 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2015-08-08 07:00:01 +0300 |
commit | 0d61f0b3e222b588480e2ad1e85bb2ea57561c4b (patch) | |
tree | dfc4af3ad3b0c421b5855218b133a918ed894bc1 /arch/powerpc/mm | |
parent | cf184dc2dd33847f4b211b01d8c7ec0526e6c5e4 (diff) | |
download | linux-0d61f0b3e222b588480e2ad1e85bb2ea57561c4b.tar.xz |
powerpc/booke64: Move mb() to __set_pte_at() with kernel-addr test
map_kernel() doesn't catch all places that create kernel PTEs. In
particular, vmalloc() calls set_pte_at() directly. This causes a
crash when booting a non-SMP kernel on e6500.
Move the sync to __set_pte(), to be executed only for kernel addresses.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/pgtable_64.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index 876232d64126..e92cb2146b18 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c @@ -149,17 +149,7 @@ int map_kernel_page(unsigned long ea, unsigned long pa, int flags) #endif /* !CONFIG_PPC_MMU_NOHASH */ } -#ifdef CONFIG_PPC_BOOK3E_64 - /* - * With hardware tablewalk, a sync is needed to ensure that - * subsequent accesses see the PTE we just wrote. Unlike userspace - * mappings, we can't tolerate spurious faults, so make sure - * the new PTE will be seen the first time. - */ - mb(); -#else smp_wmb(); -#endif return 0; } |