linux/arch/powerpc
Christophe Leroy 43afcf8f01 powerpc: Add KUAP support for BOOKE and 40x
On booke/40x we don't have segments like book3s/32.
On booke/40x we don't have access protection groups like 8xx.

Use the PID register to provide user access protection.
Kernel address space can be accessed with any PID.
User address space has to be accessed with the PID of the user.
User PID is always not null.

Everytime the kernel is entered, set PID register to 0 and
restore PID register when returning to user.

Everytime kernel needs to access user data, PID is restored
for the access.

In TLB miss handlers, check the PID and bail out to data storage
exception when PID is 0 and accessed address is in user space.

Note that also forbids execution of user text by kernel except
when user access is unlocked. But this shouldn't be a problem
as the kernel is not supposed to ever run user text.

This patch prepares the infrastructure but the real activation of KUAP
is done by following patches for each processor type one by one.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/5d65576a8e31e9480415785a180c92dd4e72306d.1634627931.git.christophe.leroy@csgroup.eu
2021-12-09 22:41:19 +11:00
..
boot powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
configs powerpc/microwatt: add POWER9_CPU, clear PPC_64S_HASH_MMU 2021-12-09 22:41:16 +11:00
crypto powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
include powerpc: Add KUAP support for BOOKE and 40x 2021-12-09 22:41:19 +11:00
kernel powerpc: Add KUAP support for BOOKE and 40x 2021-12-09 22:41:19 +11:00
kexec powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU 2021-12-09 22:41:13 +11:00
kvm powerpc/64s: Make hash MMU support configurable 2021-12-09 22:40:24 +11:00
lib powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
math-emu powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
mm powerpc: Add KUAP support for BOOKE and 40x 2021-12-09 22:41:19 +11:00
net bpf ppc32: Access only if addr is kernel address 2021-11-25 11:25:32 +11:00
perf powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an overflown PMC 2021-11-30 17:15:49 +11:00
platforms powerpc/kuap: Make PPC_KUAP_DEBUG depend on PPC_KUAP only 2021-12-09 22:41:19 +11:00
purgatory
sysdev powerpc/xive: Fix compile when !CONFIG_PPC_POWERNV. 2021-12-02 10:40:38 +11:00
tools powerpc/head_check: Fix shellcheck errors 2021-08-17 22:52:02 +10:00
xmon powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU 2021-12-09 22:41:13 +11:00
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kconfig powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU 2021-12-09 22:41:13 +11:00
Kconfig.debug powerpc/ptdump: Convert powerpc to GENERIC_PTDUMP 2021-08-25 13:35:48 +10:00
Makefile Kbuild updates for v5.16 2021-11-08 09:15:45 -08:00
Makefile.postlink