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 7AED0C282D0 for ; Fri, 28 Feb 2025 19:48:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E89D1280002; Fri, 28 Feb 2025 14:48:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E385F280001; Fri, 28 Feb 2025 14:48:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CDA00280002; Fri, 28 Feb 2025 14:48:22 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id ABF6B280001 for ; Fri, 28 Feb 2025 14:48:22 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 31AB61211F6 for ; Fri, 28 Feb 2025 19:48:22 +0000 (UTC) X-FDA: 83170390044.04.56CAC5D Received: from mail.alien8.de (mail.alien8.de [65.109.113.108]) by imf17.hostedemail.com (Postfix) with ESMTP id 2DE2240012 for ; Fri, 28 Feb 2025 19:48:19 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=alien8.de header.s=alien8 header.b=K0M6voRW; dmarc=pass (policy=none) header.from=alien8.de; spf=pass (imf17.hostedemail.com: domain of bp@alien8.de designates 65.109.113.108 as permitted sender) smtp.mailfrom=bp@alien8.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740772100; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0SzmodUXTclpxnZRp7IzVUT4gYGfpQPgKhQxXZ5liLo=; b=sgbPSkyvO9S7FrUcfFbJo+fRA/6ORu63MgrXNBlqV3qElXmB/1xK16rwkbB1hAxjVwQl8V jlr2HtNOU/trytS+9kUd4Yjh8zWP0vrWBJHz5UOnaOe49Pjgdza39iVCQv9ptrEeXRL8oy fyVyB7r631Q1Oqwu0mN/nfGkL0iYTjw= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=alien8.de header.s=alien8 header.b=K0M6voRW; dmarc=pass (policy=none) header.from=alien8.de; spf=pass (imf17.hostedemail.com: domain of bp@alien8.de designates 65.109.113.108 as permitted sender) smtp.mailfrom=bp@alien8.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740772100; a=rsa-sha256; cv=none; b=zibLfSKAv68nAIi7D5uHJAe1dzUKkxFWZFz2DFzalOifnZ8iF1T4snZuSK+Luj/QeY6PzG /4pXXFuMzcqZ9peZPmtewPGiQECp3m5ACbkKJ4nxB6wvjrd40WAAAmvsOti7tD7YgtSvUk sx4sYuyirXdPmHxCYyef20K8ZJPcbiU= Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 7C63640E01C5; Fri, 28 Feb 2025 19:48:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at mail.alien8.de Received: from mail.alien8.de ([127.0.0.1]) by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 2onyYHBaD317; Fri, 28 Feb 2025 19:47:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8; t=1740772077; bh=0SzmodUXTclpxnZRp7IzVUT4gYGfpQPgKhQxXZ5liLo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=K0M6voRWvsoR+4hspNFZ3zXaVZOFVhfXlOZwNUQgISfLGpGziazs8c3R/gOodKaqK d1Au7kFY8/2M6xDqsYFZfdrtSUcFuT65mSTve0pz9epbSNOCoZ/jG18/9uXJuKXGG8 EEFllENCaKji5kC9rzBCV/s2wXzzfyVg8mATZREaf7Pmq67OBEJ2jsPJxB+Zhoe/Qk ZJDiHCpbNpxFGg0pYRyIOXimcJ52LbsnB7cjdVLWkcCsMVczouFzxXe4oXhPPnAW5M JNm6OK2HC93Ozlh9dDoos8jmZh+dtN6UnWvP9WExaLRGc7leXL25KU6Rwqksu+dnGa uejF6GV5cOrOPlgjaSt6w5wcpPSd8TZHnSm/A1o9zwXIpg5E1JsPO+E1r/E3mL7I8c NIVQdsj5SLGUAFGUyquns5ShlxrMraehdifxCgNk7WgukpN9asrUphRRw5D33GcGd0 7+OA+G0+8p138Cf4Q2rjJ0osCEgvz8Pfl7pF1eyJPMs40eBMYXUvzcKbEgR8gTIm6p jAGUZMrztErSTBQHfepKQnqO9EtnTwSmL8FcJ7rBt9t5krhhai20uVCGVYjwj214VP C03tiRCbR9FjmLJuQGfgh6GLuLNthyEqjaDkUbUiFXNF6kOq4vuH4zZT3id07cV/7g Sy3Ncv5OtbNpz/TY5H6PWR8k= Received: from zn.tnic (pd95303ce.dip0.t-ipconnect.de [217.83.3.206]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 61E4140E01AE; Fri, 28 Feb 2025 19:47:39 +0000 (UTC) Date: Fri, 28 Feb 2025 20:47:34 +0100 From: Borislav Petkov To: Rik van Riel Cc: x86@kernel.org, linux-kernel@vger.kernel.org, peterz@infradead.org, dave.hansen@linux.intel.com, zhengqi.arch@bytedance.com, nadav.amit@gmail.com, thomas.lendacky@amd.com, kernel-team@meta.com, linux-mm@kvack.org, akpm@linux-foundation.org, jackmanb@google.com, jannh@google.com, mhklinux@outlook.com, andrew.cooper3@citrix.com, Manali.Shukla@amd.com, mingo@kernel.org, Dave Hansen Subject: Re: [PATCH v14 03/13] x86/mm: add INVLPGB support code Message-ID: <20250228194734.GGZ8IS1iFVpPzmEyYl@fat_crate.local> References: <20250226030129.530345-1-riel@surriel.com> <20250226030129.530345-4-riel@surriel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20250226030129.530345-4-riel@surriel.com> X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 2DE2240012 X-Rspam-User: X-Stat-Signature: wh71awd39mjio9kdsc4zfucc9mb6smwm X-HE-Tag: 1740772099-770702 X-HE-Meta: U2FsdGVkX1+UzLWlM8u5YqitNkYMdLHfDr1nlDJaJixJCDWjoTfIl1UVjHCvFyd1OScPn+ZQj5Vcwynb5NNJKJAPIbi7KM6g8Hlkv3kOMf9u8t05YRsdPaW1g+16M59dt86X6T6GWs7JMO+UCi+wzn4F/Zg6TuG5T3D1Jjw8X3Oq1Dwyb3DQJpRWH6AEFKa90ISgXksY+F0fE42UozPqWhZ0dgCEqHUqy+AdAFXkxAy9/2Z08IKqUjImiW4RIVDlazHSi54aAuywH+IQBf+HLugKU5TNdRQxXs+5r2R+/oqwvApCNbH4gJFiqobwm9C61GZ0LQ4YX8KP3jmkwey9TTs1J2r7g7oM+yT7/mFEfrYk7BorK9XtSvM8e2dcJHPIBiDZJ7JGXNnhpVhsLChFpYyNfAhBgGAbAXFFi1I5dpXyWQuIMGz2u+kOJuhUI721MvggizQuLg6DssQkG3PuVcuok4c4zhxgQWr+3vZYAs+yQa0OhLyUYh5tcEaIMDIXXgb0mU3IT+poRDgpiJ4gZqIXgJVhts16ZoBDvLBGEeT8Sce9jVRNSbtjx09mwfb0npYTS18up4AK4ciILxd8kV4uzt4vR2RspXjIkyoL0BOkRaKV2M5rwG8Uj3WRlAu3yUETJ5NFk39zCZV3BaILOOSRfVXIIOkvp+ufsVFLp77kCvnCkgY700BmNJGreFG09UXRv6rfFv7mU47jZlWwdRZ8snYFVNnAOP7wn1+lXbBuwb1YjQPmLlRgnvMTWJ89taDbx8QXK2rhm4EE2S0NoY0DAQ/pNkd5ijHOdRTilPL6sivR/HulwhhQXUJEkYO+mxZ4qQFA9Z6YvTQjyxwfK3xTjCzOqhORs59o6e9FJ4Gv6Qn3BJsw+owyKnVByVqujI20PAYnohsHo9HV99buAUOFcNEKg7RlxTaPr6E2FpTFcIMN+skwMClK/3ZbhKZMogmQClkiEVcOnzoIWib thlNhaQe 8RFrSdRdc8xjwp5/gSeVNiudB4LZlAIyfzDbixLLtIpo58swkvQdW2uPe/rah4+Zr4DTXeIItWsIR60BDdpreJfv/wyAPY77Ldi/wzOcO/W6J8zeQkV9Oxfx3JbcTkEi59bc73ZPablse3fq5SApKSSp+QaNzOgx7iLHOabuPpknFVfKeMk1r9/988TsK2gBeQkbneiLecW27HpgrmE7oBndHl8VKoV+MOxp86cPM57n7Ln6FOYcNa6kI10KyXEwUjzC9kktYfL1loYM1nHaIQEyhkNwIvtCr43c2xsUPqOBgjMOQsz1v7Btz8hTo9mj87l2oE63EhH0CdymYvU21c9woc7/4YwCfl+j73QrmUv/YXKWtAAC+2p6exC2wOgW4B9gKNn7AQJlqo5Ze93QLPRPdPClEaiZBH2WgPhhhM8Ny5TWq51IIwRBgm1kxJ801LP0Gu8qZ3L50H/WMNqNGAcAZROAtP8llXch/mua7UEHpl/1jjzIlPYxgAg== 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 Tue, Feb 25, 2025 at 10:00:38PM -0500, Rik van Riel wrote: > Add helper functions and definitions needed to use broadcast TLB > invalidation on AMD EPYC 3 and newer CPUs. > > All the functions defined in invlpgb.h are used later in the series. > > Compile time disabling X86_FEATURE_INVLPGB when the config > option is not set allows the compiler to omit unnecessary code. > > Signed-off-by: Rik van Riel > Tested-by: Manali Shukla > Tested-by: Brendan Jackman > Tested-by: Michael Kelley > Acked-by: Dave Hansen > --- > arch/x86/include/asm/disabled-features.h | 8 +- > arch/x86/include/asm/tlb.h | 98 ++++++++++++++++++++++++ > 2 files changed, 105 insertions(+), 1 deletion(-) My edits ontop. x86/cpu has dropped {disabled,required}-features.h in favor of a new, better mechanism to compile-time disable X86 features, see below. --- /tmp/current.patch 2025-02-28 20:44:40.765404608 +0100 +++ /tmp/0001-x86-mm-Add-INVLPGB-support-code.patch 2025-02-28 20:44:18.492326903 +0100 @@ -1,55 +1,38 @@ +From ce22946ea806ae459b4d88767a59b010e70682d5 Mon Sep 17 00:00:00 2001 From: Rik van Riel -Date: Tue, 25 Feb 2025 22:00:38 -0500 -Subject: x86/mm: Add INVLPGB support code +Date: Fri, 28 Feb 2025 20:32:30 +0100 +Subject: [PATCH] x86/mm: Add INVLPGB support code Add helper functions and definitions needed to use broadcast TLB -invalidation on AMD EPYC 3 and newer CPUs. +invalidation on AMD CPUs. -All the functions defined in invlpgb.h are used later in the series. - -Compile time disabling X86_FEATURE_INVLPGB when the config -option is not set allows the compiler to omit unnecessary code. + [ bp: + - Cleanup commit message + - port it to new Kconfig.cpufeatures machinery + - add a comment about flushing any PCID and ASID ] Signed-off-by: Rik van Riel Signed-off-by: Borislav Petkov (AMD) -Acked-by: Dave Hansen -Tested-by: Manali Shukla -Tested-by: Brendan Jackman -Tested-by: Michael Kelley Link: https://lore.kernel.org/r/20250226030129.530345-4-riel@surriel.com --- - arch/x86/include/asm/disabled-features.h | 8 +- - arch/x86/include/asm/tlb.h | 98 ++++++++++++++++++++++++ - 2 files changed, 105 insertions(+), 1 deletion(-) - -diff --git a/arch/x86/include/asm/disabled-features.h b/arch/x86/include/asm/disabled-features.h -index c492bdc97b05..625a89259968 100644 ---- a/arch/x86/include/asm/disabled-features.h -+++ b/arch/x86/include/asm/disabled-features.h -@@ -129,6 +129,12 @@ - #define DISABLE_SEV_SNP (1 << (X86_FEATURE_SEV_SNP & 31)) - #endif - -+#ifdef CONFIG_X86_BROADCAST_TLB_FLUSH -+#define DISABLE_INVLPGB 0 -+#else -+#define DISABLE_INVLPGB (1 << (X86_FEATURE_INVLPGB & 31)) -+#endif -+ - /* - * Make sure to add features to the correct mask - */ -@@ -146,7 +152,7 @@ - #define DISABLED_MASK11 (DISABLE_RETPOLINE|DISABLE_RETHUNK|DISABLE_UNRET| \ - DISABLE_CALL_DEPTH_TRACKING|DISABLE_USER_SHSTK) - #define DISABLED_MASK12 (DISABLE_FRED|DISABLE_LAM) --#define DISABLED_MASK13 0 -+#define DISABLED_MASK13 (DISABLE_INVLPGB) - #define DISABLED_MASK14 0 - #define DISABLED_MASK15 0 - #define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP| \ + arch/x86/Kconfig.cpufeatures | 4 ++ + arch/x86/include/asm/tlb.h | 101 +++++++++++++++++++++++++++++++++++ + 2 files changed, 105 insertions(+) + +diff --git a/arch/x86/Kconfig.cpufeatures b/arch/x86/Kconfig.cpufeatures +index 5dcc49d928c5..f9af51205f07 100644 +--- a/arch/x86/Kconfig.cpufeatures ++++ b/arch/x86/Kconfig.cpufeatures +@@ -195,3 +195,7 @@ config X86_DISABLED_FEATURE_FRED + config X86_DISABLED_FEATURE_SEV_SNP + def_bool y + depends on !KVM_AMD_SEV ++ ++config X86_DISABLED_FEATURE_BROADCAST_TLB_FLUSH ++ def_bool y ++ depends on !X86_BROADCAST_TLB_FLUSH diff --git a/arch/x86/include/asm/tlb.h b/arch/x86/include/asm/tlb.h -index 77f52bc1578a..91c9a4da3ace 100644 +index 77f52bc1578a..45d9c7687d61 100644 --- a/arch/x86/include/asm/tlb.h +++ b/arch/x86/include/asm/tlb.h @@ -6,6 +6,9 @@ @@ -62,7 +45,7 @@ index 77f52bc1578a..91c9a4da3ace 100644 static inline void tlb_flush(struct mmu_gather *tlb) { -@@ -25,4 +28,99 @@ static inline void invlpg(unsigned long addr) +@@ -25,4 +28,102 @@ static inline void invlpg(unsigned long addr) asm volatile("invlpg (%0)" ::"r" (addr) : "memory"); } @@ -157,11 +140,14 @@ index 77f52bc1578a..91c9a4da3ace 100644 +/* Flush all mappings for all PCIDs except globals. */ +static inline void invlpgb_flush_all_nonglobals(void) +{ ++ /* ++ * @addr=0 means both rax[1] (valid PCID) and rax[2] (valid ASID) are clear ++ * so flush *any* PCID and ASID. ++ */ + __invlpgb(0, 0, 0, 1, 0, 0); + __tlbsync(); +} -+ #endif /* _ASM_X86_TLB_H */ -- -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette