x86/cpu: Sanitize X86_FEATURE_OSPKE
authorThomas Gleixner <tglx@linutronix.de>
Wed, 23 Jun 2021 12:02:07 +0000 (14:02 +0200)
committerBorislav Petkov <bp@suse.de>
Wed, 23 Jun 2021 16:59:44 +0000 (18:59 +0200)
commit8a1dc55a3f3ef0a723c3c117a567e7b5dd2c1793
tree81c47aabaa457f59348e7d168325ecf9d803340c
parentb2681e791dbcee6acb1dca7a5076a0285109ac4c
x86/cpu: Sanitize X86_FEATURE_OSPKE

X86_FEATURE_OSPKE is enabled first on the boot CPU and the feature flag is
set. Secondary CPUs have to enable CR4.PKE as well and set their per CPU
feature flag. That's ineffective because all call sites have checks for
boot_cpu_data.

Make it smarter and force the feature flag when PKU is enabled on the boot
cpu which allows then to use cpu_feature_enabled(X86_FEATURE_OSPKE) all
over the place. That either compiles the code out when PKEY support is
disabled in Kconfig or uses a static_cpu_has() for the feature check which
makes a significant difference in hotpaths, e.g. context switch.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210623121455.305113644@linutronix.de
arch/x86/include/asm/pkeys.h
arch/x86/include/asm/pkru.h
arch/x86/kernel/cpu/common.c
arch/x86/kernel/fpu/core.c
arch/x86/kernel/fpu/xstate.c
arch/x86/kernel/process_64.c
arch/x86/mm/fault.c