diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2018-06-01 12:01:18 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2018-06-03 12:40:35 +0200 |
commit | 68662f85f3c3ea8a6fb61586a05955ab51bbb9e6 (patch) | |
tree | 546d2ada5dd5d7e9fe1901285f23c9df67d0b224 /arch/powerpc/mm/mem.c | |
parent | powerpc/64s/radix: make ptep_get_and_clear_full non-atomic for the full case (diff) | |
download | linux-68662f85f3c3ea8a6fb61586a05955ab51bbb9e6.tar.xz linux-68662f85f3c3ea8a6fb61586a05955ab51bbb9e6.zip |
powerpc/64s/radix: prefetch user address in update_mmu_cache
Prefetch the faulting address in update_mmu_cache to give the page
table walker perhaps 100 cycles head start as locks are dropped and
the interrupt completed.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r-- | arch/powerpc/mm/mem.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index c3c39b02b2ba..8cecda4bd66a 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -509,8 +509,10 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, */ unsigned long access, trap; - if (radix_enabled()) + if (radix_enabled()) { + prefetch((void *)address); return; + } /* We only want HPTEs for linux PTEs that have _PAGE_ACCESSED set */ if (!pte_young(*ptep) || address >= TASK_SIZE) |