From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16048C7EE30 for ; Thu, 26 Jun 2025 18:01:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 938FA8D000D; Thu, 26 Jun 2025 14:01:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8C2648D0001; Thu, 26 Jun 2025 14:01:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7637D8D000D; Thu, 26 Jun 2025 14:01:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 603398D0001 for ; Thu, 26 Jun 2025 14:01:17 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id CAED9160373 for ; Thu, 26 Jun 2025 18:01:16 +0000 (UTC) X-FDA: 83598318552.26.2768B3B Received: from mail.zytor.com (terminus.zytor.com [198.137.202.136]) by imf22.hostedemail.com (Postfix) with ESMTP id A507CC000E for ; Thu, 26 Jun 2025 18:01:14 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=zytor.com header.s=2025062101 header.b=XiizrTWD; spf=pass (imf22.hostedemail.com: domain of xin@zytor.com designates 198.137.202.136 as permitted sender) smtp.mailfrom=xin@zytor.com; dmarc=pass (policy=none) header.from=zytor.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750960875; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xIN9TxfX2EeOHS5mr8WN+HlwktJEOt8XnXSFhuBm71s=; b=DkWnXeoFJjfLBSRiki7eg73uwQbLy1VjNlUlGTGV+MPLEC5ZiyWGU9PRLR02qm1IYJ9OGe dOwQ3mixld2jgYNjsc86W2JxgwUYj9CwQ8gaQn+sLcWAZ3KEE5cjFttm51P5/5ncwBH+mQ bQ97NECAt/eQCLUfsGJJgWEafM/wIXI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750960875; a=rsa-sha256; cv=none; b=HCstcmonr9JZFrJ8p819c0V5hSwYrr5/0VXxD1upulABF0Q3zPXrYGMRnkWa7/rkctyvrL AaBwWaM8zdUmvYVdCtFIhM3fe1R5tIYUNnihLOHtO6QSMCspEbdKjYOWX+jCRQGoqM8+n1 bPnBvbrs34OFOo5+tq1I6moofXqFb9g= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=zytor.com header.s=2025062101 header.b=XiizrTWD; spf=pass (imf22.hostedemail.com: domain of xin@zytor.com designates 198.137.202.136 as permitted sender) smtp.mailfrom=xin@zytor.com; dmarc=pass (policy=none) header.from=zytor.com Received: from [192.168.7.202] ([71.202.166.45]) (authenticated bits=0) by mail.zytor.com (8.18.1/8.17.1) with ESMTPSA id 55QI0OAg2308531 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NO); Thu, 26 Jun 2025 11:00:25 -0700 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.zytor.com 55QI0OAg2308531 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com; s=2025062101; t=1750960828; bh=xIN9TxfX2EeOHS5mr8WN+HlwktJEOt8XnXSFhuBm71s=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=XiizrTWDBdMse7CSwHFWmuB1C6NNxvXY0PZR7r6jhkHu8JXgygNJBigUDDxTYWBKP MRRs4iHKgZRYmDLYf06KaJOoPXdRrKM8EFzKQjdDX8FVkyhvmnZPub/uLQDVOHLGwC fusmjTHIpxPgul2+mBnJ2wCmNlNiXlBmd6TnxA6s499MuboVgOeaJgL+x6jrC0uoaO Q+nnjd/7q0WJi4iXbH7kbI1pHhLiuANkDsLJfUzxeT3oeaPYPQoE5Zp6JgpCEQrDj5 SbhiIX7brAelU8bIlZA7XvyOIg4NhUSOotYVCZjWjRyQSxWi17B5X6PfHk7ZTrq102 /mImN9XFucKzA== Message-ID: Date: Thu, 26 Jun 2025 11:00:24 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCHv7 01/16] x86/cpu: Enumerate the LASS feature bits To: "Kirill A. Shutemov" , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Peter Zijlstra , Ard Biesheuvel , "Paul E. McKenney" , Josh Poimboeuf , Xiongwei Song , Xin Li , "Mike Rapoport (IBM)" , Brijesh Singh , Michael Roth , Tony Luck , Alexey Kardashevskiy , Alexander Shishkin Cc: Jonathan Corbet , Sohil Mehta , Ingo Molnar , Pawan Gupta , Daniel Sneddon , Kai Huang , Sandipan Das , Breno Leitao , Rick Edgecombe , Alexei Starovoitov , Hou Tao , Juergen Gross , Vegard Nossum , Kees Cook , Eric Biggers , Jason Gunthorpe , "Masami Hiramatsu (Google)" , Andrew Morton , Luis Chamberlain , Yuntao Wang , Rasmus Villemoes , Christophe Leroy , Tejun Heo , Changbin Du , Huang Shijie , Geert Uytterhoeven , Namhyung Kim , Arnaldo Carvalho de Melo , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, linux-mm@kvack.org References: <20250625125112.3943745-1-kirill.shutemov@linux.intel.com> <20250625125112.3943745-2-kirill.shutemov@linux.intel.com> Content-Language: en-US From: Xin Li Autocrypt: addr=xin@zytor.com; keydata= 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 l75w1xInsg== In-Reply-To: <20250625125112.3943745-2-kirill.shutemov@linux.intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A507CC000E X-Stat-Signature: id7a9hk1rekmhx3a8a9z5kdmmogp3af5 X-Rspam-User: X-HE-Tag: 1750960874-847088 X-HE-Meta: U2FsdGVkX1+MHKb9AulVmXgPVpIVJmk5NReC9hqGgLds50G4eHELXWA54YKmjmd7bgRxpMdXUAuXMXaIBuOkzt6tRCa96FvF8u99LJxhNR4ll2H0ZRSW6Q6Z+OwgJ5RkJun4HhX+dsZZTcZM7Wj41FxqjEzJalN/KH/V59P6MbezVgCZwuBNpAXjoYGRLGejGKzSIMv1g99z3+iflF/PpWDA+zVP1lHcaRFTKKV6F4HNMq1ZwweT4Z1w525oB4JWYHsJJ8wnzdysrFAJckvErMJrgDZ84ySHEqyGIWVxaFvzs8iHYMuVGv0A7Z7jBUXuAPznhVycXFr002v9Vz5AIY83QkJp+QPULfPZDPp4ubacy6xurHrsos/3p8LdukkdExcse25wttzbZlPOyOQ/f04Jh9FT67iv/B2SfJ89iwezmV64qd2dKsdWbCQ+zo7KJlGdBxtttMDbNKWBbwQV69/vvoWZuLTFA12iZpFgmCR3jefxa7XvVgJqPZUBrvx/3YLqPolwygiBZoPp8c/DZTt5HixZH5+pvCn+5BRObc3jsSIGvlwXxAzHVv97X0aBOC2IM3wvI9BB2Vzsc22f4kjIi2KpwdPHER8YOEBRs6pENU57S3uC+P53nEDfOXnCZ++7Z3y1wTCe+q5tWFkp276YAtjzbXGXBgqQ4BTddpmolbzWK/bFeHm5Ym824zQMzftgQ4vPlKGtfe9ZHmxYp2lpS3DuRvkLzXAnQaE64V6Nw+KHXYJB690KQE489CS1Ru5TPg/pm8TGbeagE8ghP0Wefza+iGg+tsHweZo8COm4XjjVjk+V+0TY+E7VLkpTysvhHkAKo7Mz5OLczoDxzFxaXn6CpN6Yoxtgb5324/Bg2hRFjCgIQBEaHxzjnMGzqacOfiVt+px9Ob5UAbHDdg1VZNkxxRCUHVvBZPIXTem96Au/DFZL0lKtPqqMJIOfp+h+WcF7tl/u1infh4a 6J9A1Gaf 7ZSba3Kp3eFNGxktWv/0fzIfr2sIoBEeDgTUPjw9ua8h3nJBMK5mZPk+cO4TWjX6ddS09Lbauh/TD/bqby4w4uQmbzsQQ1E1JK8BrH0T95R1DL72fYF2pYDpDAWjw/quzRmGVfP3QPRSyWO1DjnBRkjk7xj0ybXlt2ijmVfDtCoRBu7bDMbx5Yr0jQ6We6evjioa+aq1IK9kdpYdTyrBePUovzT+rYHWZvNpedQdjcY3bbYvd/beCOgxE2wwT2DFX5eWdY1mO+/9VzL/59sdv1urzFVtgK1vzuaUXdOYxcqCKiLGccnsUKYfS2B8TW4ihK/fc5RvLKoYxQYr6Hf9WxFyK6I/gk8+ptnqAD0mKN8cbTDNrX5eyPNUJ7yFOn/O4crcjWO3LKFjbGBAcCjLDSTnAUnfO4PiUeGM/TIjGaBQYred8JW0h7sGAkmZymgg8t9sy/7TJmfQBjx3K5u23oU7zAQ/9j/0OUG/ZLqyJYGYyjhFq00JFAdLEuw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 6/25/2025 5:50 AM, Kirill A. Shutemov wrote: > From: Sohil Mehta > > Linear Address Space Separation (LASS) is a security feature that > intends to prevent malicious virtual address space accesses across > user/kernel mode. > > Such mode based access protection already exists today with paging and > features such as SMEP and SMAP. However, to enforce these protections, > the processor must traverse the paging structures in memory. Malicious > software can use timing information resulting from this traversal to > determine details about the paging structures, and these details may > also be used to determine the layout of the kernel memory. > > The LASS mechanism provides the same mode-based protections as paging > but without traversing the paging structures. Because the protections > enforced by LASS are applied before paging, software will not be able to > derive paging-based timing information from the various caching > structures such as the TLBs, mid-level caches, page walker, data caches, > etc. > > LASS enforcement relies on the typical kernel implementation to divide > the 64-bit virtual address space into two halves: > Addr[63]=0 -> User address space > Addr[63]=1 -> Kernel address space > > Any data access or code execution across address spaces typically > results in a #GP fault. > > The LASS enforcement for kernel data access is dependent on CR4.SMAP > being set. The enforcement can be disabled by toggling the RFLAGS.AC bit > similar to SMAP. > > Define the CPU feature bits to enumerate this feature and include > feature dependencies to reflect the same. > > LASS provides protection against a class of speculative attacks, such as > SLAM[1]. Add the "lass" flag to /proc/cpuinfo to indicate that the feature > is supported by hardware and enabled by the kernel. This allows userspace > to determine if the setup is secure against such attacks. > > [1] https://download.vusec.net/papers/slam_sp24.pdf > > Co-developed-by: Yian Chen > Signed-off-by: Yian Chen > Signed-off-by: Sohil Mehta > Signed-off-by: Alexander Shishkin > Signed-off-by: Kirill A. Shutemov > --- > arch/x86/Kconfig.cpufeatures | 4 ++++ > arch/x86/include/asm/cpufeatures.h | 1 + > arch/x86/include/uapi/asm/processor-flags.h | 2 ++ > arch/x86/kernel/cpu/cpuid-deps.c | 1 + > tools/arch/x86/include/asm/cpufeatures.h | 1 + > 5 files changed, 9 insertions(+) > > diff --git a/arch/x86/Kconfig.cpufeatures b/arch/x86/Kconfig.cpufeatures > index 250c10627ab3..733d5aff2456 100644 > --- a/arch/x86/Kconfig.cpufeatures > +++ b/arch/x86/Kconfig.cpufeatures > @@ -124,6 +124,10 @@ config X86_DISABLED_FEATURE_PCID > def_bool y > depends on !X86_64 > > +config X86_DISABLED_FEATURE_LASS > + def_bool y > + depends on X86_32 > + > config X86_DISABLED_FEATURE_PKU > def_bool y > depends on !X86_INTEL_MEMORY_PROTECTION_KEYS > diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h > index b78af55aa22e..8eef1ad7aca2 100644 > --- a/arch/x86/include/asm/cpufeatures.h > +++ b/arch/x86/include/asm/cpufeatures.h > @@ -313,6 +313,7 @@ > #define X86_FEATURE_SM4 (12*32+ 2) /* SM4 instructions */ > #define X86_FEATURE_AVX_VNNI (12*32+ 4) /* "avx_vnni" AVX VNNI instructions */ > #define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* "avx512_bf16" AVX512 BFLOAT16 instructions */ > +#define X86_FEATURE_LASS (12*32+ 6) /* "lass" Linear Address Space Separation */ > #define X86_FEATURE_CMPCCXADD (12*32+ 7) /* CMPccXADD instructions */ > #define X86_FEATURE_ARCH_PERFMON_EXT (12*32+ 8) /* Intel Architectural PerfMon Extension */ > #define X86_FEATURE_FZRM (12*32+10) /* Fast zero-length REP MOVSB */ > diff --git a/arch/x86/include/uapi/asm/processor-flags.h b/arch/x86/include/uapi/asm/processor-flags.h > index f1a4adc78272..81d0c8bf1137 100644 > --- a/arch/x86/include/uapi/asm/processor-flags.h > +++ b/arch/x86/include/uapi/asm/processor-flags.h > @@ -136,6 +136,8 @@ > #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT) > #define X86_CR4_CET_BIT 23 /* enable Control-flow Enforcement Technology */ > #define X86_CR4_CET _BITUL(X86_CR4_CET_BIT) > +#define X86_CR4_LASS_BIT 27 /* enable Linear Address Space Separation support */ > +#define X86_CR4_LASS _BITUL(X86_CR4_LASS_BIT) > #define X86_CR4_LAM_SUP_BIT 28 /* LAM for supervisor pointers */ > #define X86_CR4_LAM_SUP _BITUL(X86_CR4_LAM_SUP_BIT) > > diff --git a/arch/x86/kernel/cpu/cpuid-deps.c b/arch/x86/kernel/cpu/cpuid-deps.c > index 46efcbd6afa4..98d0cdd82574 100644 > --- a/arch/x86/kernel/cpu/cpuid-deps.c > +++ b/arch/x86/kernel/cpu/cpuid-deps.c > @@ -89,6 +89,7 @@ static const struct cpuid_dep cpuid_deps[] = { > { X86_FEATURE_SHSTK, X86_FEATURE_XSAVES }, > { X86_FEATURE_FRED, X86_FEATURE_LKGS }, > { X86_FEATURE_SPEC_CTRL_SSBD, X86_FEATURE_SPEC_CTRL }, > + { X86_FEATURE_LASS, X86_FEATURE_SMAP }, > {} > }; > > diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h > index ee176236c2be..4473a6f7800b 100644 > --- a/tools/arch/x86/include/asm/cpufeatures.h > +++ b/tools/arch/x86/include/asm/cpufeatures.h > @@ -313,6 +313,7 @@ > #define X86_FEATURE_SM4 (12*32+ 2) /* SM4 instructions */ > #define X86_FEATURE_AVX_VNNI (12*32+ 4) /* "avx_vnni" AVX VNNI instructions */ > #define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* "avx512_bf16" AVX512 BFLOAT16 instructions */ > +#define X86_FEATURE_LASS (12*32+ 6) /* "lass" Linear Address Space Separation */ > #define X86_FEATURE_CMPCCXADD (12*32+ 7) /* CMPccXADD instructions */ > #define X86_FEATURE_ARCH_PERFMON_EXT (12*32+ 8) /* Intel Architectural PerfMon Extension */ > #define X86_FEATURE_FZRM (12*32+10) /* Fast zero-length REP MOVSB */ Reviewed-by: Xin Li (Intel)