diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2017-10-24 23:06:54 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2017-11-06 16:48:10 +1100 |
commit | 30b49ec798f0984b905fd94d1957d62530f08578 (patch) | |
tree | d54f99c79fb2ec242b8af62b87405fe550db0683 /arch/powerpc/include | |
parent | dffe8449c5dd63ff18b47709de75553586582cd8 (diff) | |
download | op-kernel-dev-30b49ec798f0984b905fd94d1957d62530f08578.zip op-kernel-dev-30b49ec798f0984b905fd94d1957d62530f08578.tar.gz |
powerpc/64s/radix: Fix process table entry cache invalidation
According to the architecture, the process table entry cache must be
flushed with tlbie RIC=2.
Currently the process table entry is set to invalid right before the
PID is returned to the allocator, with no invalidation. This works on
existing implementations that are known to not cache the process table
entry for any except the current PIDR.
It is architecturally correct and cleaner to invalidate with RIC=2
after clearing the process table entry and before the PID is returned
to the allocator. This can be done in arch_exit_mmap that runs before
the final flush, and to ensure the final flush (fullmm) is always a
RIC=2 variant.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r-- | arch/powerpc/include/asm/mmu_context.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h index a0d7145..20eae6f 100644 --- a/arch/powerpc/include/asm/mmu_context.h +++ b/arch/powerpc/include/asm/mmu_context.h @@ -164,9 +164,13 @@ static inline void arch_dup_mmap(struct mm_struct *oldmm, { } +#ifndef CONFIG_PPC_BOOK3S_64 static inline void arch_exit_mmap(struct mm_struct *mm) { } +#else +extern void arch_exit_mmap(struct mm_struct *mm); +#endif static inline void arch_unmap(struct mm_struct *mm, struct vm_area_struct *vma, |