linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] Enable LKGS instruction
@ 2022-10-06 15:40 Xin Li
  2022-10-06 15:40 ` [PATCH 1/6] x86/cpufeature: add cpu feature bit for LKGS Xin Li
                   ` (5 more replies)
  0 siblings, 6 replies; 34+ messages in thread
From: Xin Li @ 2022-10-06 15:40 UTC (permalink / raw)
  To: linux-kernel, x86; +Cc: tglx, mingo, bp, dave.hansen, hpa

LKGS instruction is introduced with Intel FRED (flexible return and event
delivery) specification https://cdrdv2.intel.com/v1/dl/getContent/678938.

LKGS is independent of FRED, so we enable it as a standalone CPU feature.

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 user level
GS base.  Thus, with LKGS, there is no need to SWAPGS away from the kernel
GS base.

H. Peter Anvin (Intel) (6):
  x86/cpufeature: add cpu feature bit for LKGS
  x86/opcode: add LKGS instruction to x86-opcode-map
  x86/gsseg: make asm_load_gs_index() take an u16
  x86/gsseg: move local_irq_save/restore() into asm_load_gs_index()
  x86/gsseg: move load_gs_index() to its own header file
  x86/gsseg: use the LKGS instruction if available for load_gs_index()

 arch/x86/entry/entry_64.S                | 28 +++++++++---
 arch/x86/ia32/ia32_signal.c              |  1 +
 arch/x86/include/asm/cpufeatures.h       |  1 +
 arch/x86/include/asm/gsseg.h             | 58 ++++++++++++++++++++++++
 arch/x86/include/asm/mmu_context.h       |  1 +
 arch/x86/include/asm/special_insns.h     | 21 ---------
 arch/x86/kernel/paravirt.c               |  1 +
 arch/x86/kernel/tls.c                    |  1 +
 arch/x86/lib/x86-opcode-map.txt          |  1 +
 tools/arch/x86/include/asm/cpufeatures.h |  1 +
 tools/arch/x86/lib/x86-opcode-map.txt    |  1 +
 11 files changed, 88 insertions(+), 27 deletions(-)
 create mode 100644 arch/x86/include/asm/gsseg.h

-- 
2.34.1


^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2022-10-14  4:37 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-06 15:40 [PATCH 0/6] Enable LKGS instruction Xin Li
2022-10-06 15:40 ` [PATCH 1/6] x86/cpufeature: add cpu feature bit for LKGS Xin Li
2022-10-06 15:40 ` [PATCH 2/6] x86/opcode: add LKGS instruction to x86-opcode-map Xin Li
2022-10-06 15:40 ` [PATCH 3/6] x86/gsseg: make asm_load_gs_index() take an u16 Xin Li
2022-10-06 15:40 ` [PATCH 4/6] x86/gsseg: move local_irq_save/restore() into asm_load_gs_index() Xin Li
2022-10-07 14:50   ` Peter Zijlstra
2022-10-07 17:47     ` H. Peter Anvin
2022-10-06 15:40 ` [PATCH 5/6] x86/gsseg: move load_gs_index() to its own header file Xin Li
2022-10-07 15:40   ` Brian Gerst
2022-10-07 17:43     ` H. Peter Anvin
2022-10-07 22:41       ` Li, Xin3
2022-10-06 15:40 ` [PATCH 6/6] x86/gsseg: use the LKGS instruction if available for load_gs_index() Xin Li
2022-10-07 14:47   ` Peter Zijlstra
2022-10-07 17:45     ` H. Peter Anvin
2022-10-07 18:07       ` Li, Xin3
2022-10-07 18:49         ` H. Peter Anvin
2022-10-07 18:01     ` Li, Xin3
2022-10-07 19:24       ` Peter Zijlstra
2022-10-07 20:03         ` H. Peter Anvin
2022-10-07 20:23           ` Peter Zijlstra
2022-10-07 20:33             ` H. Peter Anvin
2022-10-08  5:32               ` Li, Xin3
2022-10-08  7:16                 ` H. Peter Anvin
2022-10-10  4:21                   ` Li, Xin3
2022-10-14  4:36               ` Li, Xin3
2022-10-07 14:52   ` Peter Zijlstra
2022-10-07 15:09   ` Peter Zijlstra
2022-10-08  5:31     ` Li, Xin3
2022-10-07 16:18   ` Brian Gerst
2022-10-08  5:40     ` Li, Xin3
2022-10-08 12:40       ` Brian Gerst
2022-10-10  4:32         ` Li, Xin3
2022-10-10  4:51           ` H. Peter Anvin
2022-10-10  7:53           ` Peter Zijlstra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).