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 v5: * Address review feedback. * Dropped patches moving kup to generic name. * Dropped static key changes related to execute only support. Changes from v4: * Drop hash KUAP/KUEP changes. Changes from v3: * Fix build error reported by kernel test robot <l...@intel.com> 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 (23): powerpc/book3s64/pkeys: Use PVR check instead of cpu feature 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: Simplify pkey disable branch powerpc/book3s64/pkeys: Convert pkey_total to num_pkey powerpc/book3s64/pkeys: Make initial_allocation_mask static powerpc/book3s64/pkeys: Mark all the pkeys above max pkey as reserved powerpc/book3s64/pkeys: Add MMU_FTR_PKEY powerpc/book3s64/kuep: Add MMU_FTR_KUEP powerpc/book3s64/pkeys: Use pkey_execute_disable_supported 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 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: Don't update expected UAMOR value powerpc/book3s64/pkeys: Remove is_pkey_enabled() 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 ++ arch/powerpc/include/asm/book3s/64/kexec.h | 23 ++ 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 | 27 ++ arch/powerpc/include/asm/cputable.h | 13 +- arch/powerpc/include/asm/kexec.h | 12 + arch/powerpc/include/asm/mmu.h | 17 + arch/powerpc/include/asm/pkeys.h | 65 +--- arch/powerpc/include/asm/processor.h | 1 - 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 | 27 +- arch/powerpc/kernel/smp.c | 1 + arch/powerpc/kexec/core_64.c | 2 + arch/powerpc/mm/book3s64/hash_utils.c | 4 + arch/powerpc/mm/book3s64/pgtable.c | 3 + arch/powerpc/mm/book3s64/pkeys.c | 294 ++++++++++-------- arch/powerpc/mm/book3s64/radix_pgtable.c | 8 +- .../selftests/powerpc/ptrace/ptrace-pkey.c | 55 ++-- 24 files changed, 404 insertions(+), 269 deletions(-) create mode 100644 arch/powerpc/include/asm/book3s/64/hash-pkey.h create mode 100644 arch/powerpc/include/asm/book3s/64/kexec.h create mode 100644 arch/powerpc/include/asm/book3s/64/pkeys.h -- 2.26.2