This patch series update the pkey subsystem with more documentation and rename variables so that it is easy to follow the code. We drop the changes to support KUAP/KUEP with hash translation in this update. The changes are adding 200 cycles to null syscalls benchmark and I want to look at that closely before requesting a merge. The rest of the patches are included in this series. This should avoid having to carry a large patchset across the upstream merge. Some of the changes in here make the hash KUEP/KUAP addition simpler.
Changes from v4: * Drop hash KUAP/KUEP changes. Changes from v3: * Fix build error reported by kernel test robot <[email protected]> Changes from v2: * Rebase to the latest kernel. * Fixed a bug with disabling KUEP/KUAP on kernel command line * Added a patch to make kup key dynamic. Changes from v1: * Rebased on latest kernel Aneesh Kumar K.V (26): powerpc/book3s64/pkeys: Fixup bit numbering powerpc/book3s64/pkeys: pkeys are supported only on hash on book3s. powerpc/book3s64/pkeys: Move pkey related bits in the linux page table powerpc/book3s64/pkeys: Explain key 1 reservation details powerpc/book3s64/pkeys: Simplify the key initialization powerpc/book3s64/pkeys: Prevent key 1 modification from userspace. powerpc/book3s64/pkeys: kill cpu feature key CPU_FTR_PKEY powerpc/book3s64/pkeys: Convert execute key support to static key powerpc/book3s64/pkeys: Simplify pkey disable branch powerpc/book3s64/pkeys: Convert pkey_total to max_pkey powerpc/book3s64/pkeys: Make initial_allocation_mask static powerpc/book3s64/pkeys: Mark all the pkeys above max pkey as reserved powerpc/book3s64/pkeys: Enable MMU_FTR_PKEY powerpc/book3s64/kuep: Add MMU_FTR_KUEP powerpc/book3s64/pkeys: Use execute_pkey_disable static key powerpc/book3s64/pkeys: Use MMU_FTR_PKEY instead of pkey_disabled static key powerpc/book3s64/keys: Print information during boot. powerpc/book3s64/keys/kuap: Reset AMR/IAMR values on kexec powerpc/book3s64/kuap: Move KUAP related function outside radix powerpc/book3s64/kuep: Move KUEP related function outside radix powerpc/book3s64/kuap: Rename MMU_FTR_RADIX_KUAP to MMU_FTR_KUAP powerpc/book3s64/kuap/kuep: Make KUAP and KUEP a subfeature of PPC_MEM_KEYS powerpc/book3s64/kuap: Move UAMOR setup to key init function powerpc/selftest/ptrave-pkey: Rename variables to make it easier to follow code powerpc/selftest/ptrace-pkey: Update the test to mark an invalid pkey correctly powerpc/selftest/ptrace-pkey: IAMR and uamor cannot be updated by ptrace arch/powerpc/include/asm/book3s/64/hash-4k.h | 21 +- arch/powerpc/include/asm/book3s/64/hash-64k.h | 12 +- .../powerpc/include/asm/book3s/64/hash-pkey.h | 32 ++ .../asm/book3s/64/{kup-radix.h => kup.h} | 70 ++-- arch/powerpc/include/asm/book3s/64/mmu-hash.h | 8 +- arch/powerpc/include/asm/book3s/64/mmu.h | 6 + arch/powerpc/include/asm/book3s/64/pgtable.h | 17 +- arch/powerpc/include/asm/book3s/64/pkeys.h | 25 ++ arch/powerpc/include/asm/cputable.h | 13 +- arch/powerpc/include/asm/kup.h | 16 +- arch/powerpc/include/asm/mmu.h | 17 +- arch/powerpc/include/asm/pkeys.h | 65 +--- arch/powerpc/include/asm/processor.h | 1 - arch/powerpc/include/asm/ptrace.h | 2 +- arch/powerpc/kernel/asm-offsets.c | 2 +- arch/powerpc/kernel/dt_cpu_ftrs.c | 6 - arch/powerpc/kernel/misc_64.S | 14 - arch/powerpc/kernel/prom.c | 5 + arch/powerpc/kernel/ptrace/ptrace-view.c | 17 +- arch/powerpc/kernel/smp.c | 5 + arch/powerpc/kernel/syscall_64.c | 2 +- arch/powerpc/kexec/core_64.c | 3 + arch/powerpc/mm/book3s64/pgtable.c | 3 + arch/powerpc/mm/book3s64/pkeys.c | 315 +++++++++++------- arch/powerpc/mm/book3s64/radix_pgtable.c | 36 -- arch/powerpc/platforms/Kconfig.cputype | 4 +- .../selftests/powerpc/ptrace/ptrace-pkey.c | 53 ++- 27 files changed, 448 insertions(+), 322 deletions(-) create mode 100644 arch/powerpc/include/asm/book3s/64/hash-pkey.h rename arch/powerpc/include/asm/book3s/64/{kup-radix.h => kup.h} (78%) create mode 100644 arch/powerpc/include/asm/book3s/64/pkeys.h -- 2.26.2
