[tip: x86/cpu] x86/cpu: Remove LASS restriction on vsyscall emulation

From: tip-bot2 for Sohil Mehta

Date: Thu Mar 19 2026 - 18:59:49 EST


The following commit has been merged into the x86/cpu branch of tip:

Commit-ID: 584d752b8a1f0ee3a7d5a831e55623c10e7ca0ee
Gitweb: https://git.kernel.org/tip/584d752b8a1f0ee3a7d5a831e55623c10e7ca0ee
Author: Sohil Mehta <sohil.mehta@xxxxxxxxx>
AuthorDate: Mon, 09 Mar 2026 11:10:29 -07:00
Committer: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
CommitterDate: Thu, 19 Mar 2026 15:11:13 -07:00

x86/cpu: Remove LASS restriction on vsyscall emulation

Vsyscall emulation has two modes of operation: XONLY and EMULATE. The
default XONLY mode is now supported with a LASS-triggered #GP. OTOH,
LASS is disabled if someone requests the deprecated EMULATE mode via the
vsyscall=emulate command line option. So, remove the restriction on LASS
when the overall vsyscall emulation support is compiled in.

As a result, there is no need for setup_lass() anymore. LASS is enabled
by default through a late_initcall().

Signed-off-by: Sohil Mehta <sohil.mehta@xxxxxxxxx>
Signed-off-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
Reviewed-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
Reviewed-by: H. Peter Anvin (Intel) <hpa@xxxxxxxxx>
Reviewed-by:
Tested-by: Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx>
Link: https://patch.msgid.link/20260309181029.398498-6-sohil.mehta@xxxxxxxxx
---
arch/x86/kernel/cpu/common.c | 15 ---------------
1 file changed, 15 deletions(-)

diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 3557f0e..02472fc 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -406,20 +406,6 @@ out:
cr4_clear_bits(X86_CR4_UMIP);
}

-static __always_inline void setup_lass(struct cpuinfo_x86 *c)
-{
- if (!cpu_feature_enabled(X86_FEATURE_LASS))
- return;
-
- /*
- * Legacy vsyscall page access causes a #GP when LASS is active.
- * Disable LASS because the #GP handler doesn't support vsyscall
- * emulation.
- */
- if (IS_ENABLED(CONFIG_X86_VSYSCALL_EMULATION))
- setup_clear_cpu_cap(X86_FEATURE_LASS);
-}
-
static int enable_lass(unsigned int cpu)
{
cr4_set_bits(X86_CR4_LASS);
@@ -2061,7 +2047,6 @@ static void identify_cpu(struct cpuinfo_x86 *c)
setup_smep(c);
setup_smap(c);
setup_umip(c);
- setup_lass(c);

/* Enable FSGSBASE instructions if available. */
if (cpu_has(c, X86_FEATURE_FSGSBASE)) {