powerpc/64s/radix: introduce options to disable use of the tlbie instruction
authorNicholas Piggin <npiggin@gmail.com>
Mon, 2 Sep 2019 15:29:31 +0000 (01:29 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 5 Sep 2019 04:22:41 +0000 (14:22 +1000)
commit2275d7b5754a573ffb2ca9e40bd0546eeb986696
treebade285c88d930fa71326efe75fcb7f994d31eb5
parent7d805accbec57a151bd0dd305a1109feebdfd4a4
powerpc/64s/radix: introduce options to disable use of the tlbie instruction

Introduce two options to control the use of the tlbie instruction. A
boot time option which completely disables the kernel using the
instruction, this is currently incompatible with HASH MMU, KVM, and
coherent accelerators.

And a debugfs option can be switched at runtime and avoids using tlbie
for invalidating CPU TLBs for normal process and kernel address
mappings. Coherent accelerators are still managed with tlbie, as will
KVM partition scope translations.

Cross-CPU TLB flushing is implemented with IPIs and tlbiel. This is a
basic implementation which does not attempt to make any optimisation
beyond the tlbie implementation.

This is useful for performance testing among other things. For example
in certain situations on large systems, using IPIs may be faster than
tlbie as they can be directed rather than broadcast. Later we may also
take advantage of the IPIs to do more interesting things such as trim
the mm cpumask more aggressively.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190902152931.17840-7-npiggin@gmail.com
Documentation/admin-guide/kernel-parameters.txt
arch/powerpc/include/asm/book3s/64/tlbflush.h
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/mm/book3s64/pgtable.c
arch/powerpc/mm/book3s64/radix_tlb.c
drivers/misc/cxl/main.c
drivers/misc/ocxl/main.c