x86/cpufeature: Add the CPU feature bit for LKGS
authorH. Peter Anvin (Intel) <hpa@zytor.com>
Thu, 12 Jan 2023 07:20:28 +0000 (23:20 -0800)
committerIngo Molnar <mingo@kernel.org>
Thu, 12 Jan 2023 12:06:20 +0000 (13:06 +0100)
commit660569472dd7ac64571375b6727c3f2c1d70ba40
tree17d03cf148ec334650ff214b47b5b2c61baff874
parent0125acda7d76b943ca55811df40ed6ec0ecf670f
x86/cpufeature: Add the CPU feature bit for LKGS

Add the CPU feature bit for LKGS (Load "Kernel" GS).

LKGS instruction is introduced with Intel FRED (flexible return and
event delivery) specification. Search for the latest FRED spec in most
search engines with this search pattern:

  site:intel.com FRED (flexible return and event delivery) specification

LKGS behaves like the MOV to GS instruction except that it loads
the base address into the IA32_KERNEL_GS_BASE MSR instead of the
GS segment’s descriptor cache, which is exactly what Linux kernel
does to load a user level GS base.  Thus, with LKGS, there is no
need to SWAPGS away from the kernel GS base.

[ mingo: Minor tweaks to the description. ]

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Xin Li <xin3.li@intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230112072032.35626-2-xin3.li@intel.com
arch/x86/include/asm/cpufeatures.h
tools/arch/x86/include/asm/cpufeatures.h