From patchwork Fri Feb 21 00:53:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rik van Riel X-Patchwork-Id: 13984690 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 E3467C021B2 for ; Fri, 21 Feb 2025 00:55:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7D9926B0093; Thu, 20 Feb 2025 19:55:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7624A280014; Thu, 20 Feb 2025 19:55:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4EEC26B0096; Thu, 20 Feb 2025 19:55:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 2BC256B0093 for ; Thu, 20 Feb 2025 19:55:32 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D541CB01D7 for ; Fri, 21 Feb 2025 00:55:31 +0000 (UTC) X-FDA: 83142133662.28.D91D4E8 Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) by imf06.hostedemail.com (Postfix) with ESMTP id 4BDBA180009 for ; Fri, 21 Feb 2025 00:55:30 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of riel@shelob.surriel.com designates 96.67.55.147 as permitted sender) smtp.mailfrom=riel@shelob.surriel.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740099330; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ShmVTFQrWHLQViUCKUWp5kVyIRrTH+Y6FMbtaGon1Tw=; b=b/28wHneFDbAXCeAjrzkZsvV9+No2380rNR7OP+d/aXn2cJPuc8Z732PAGMyIOhb5ecLzU fpNWoFTM+AhQ3Gj3DbThWMZIqEh0jPSNIWT8XTsC6QLXYhN1TBX7OmJNkdWgJh1CbdEtM/ 0xhjXi77vnzA148J77CwwLOI2BDWxvs= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of riel@shelob.surriel.com designates 96.67.55.147 as permitted sender) smtp.mailfrom=riel@shelob.surriel.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740099330; a=rsa-sha256; cv=none; b=zBHsAhYtCLjSqkDamOPwNUg9dIw9jpl27vEUjM3mQlbhgvYn76Hgd4M71rRgqEYTFHeeRu f8WB30700ZXxlXgt7CEd8E2PZ/Ydko/he5sEw8K0KneUL/8Lh5WsCrHUjm4mc1cYmqRhcx MBYaHH6HcI+CJNU99ATSx0GIyBPB5hU= Received: from fangorn.home.surriel.com ([10.0.13.7]) by shelob.surriel.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.97.1) (envelope-from ) id 1tlHIZ-000000003Qf-2CL0; Thu, 20 Feb 2025 19:53:47 -0500 From: Rik van Riel To: x86@kernel.org Cc: linux-kernel@vger.kernel.org, bp@alien8.de, 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, Rik van Riel Subject: [PATCH v12 16/16] x86/mm: add noinvlpgb commandline option Date: Thu, 20 Feb 2025 19:53:15 -0500 Message-ID: <20250221005345.2156760-17-riel@surriel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250221005345.2156760-1-riel@surriel.com> References: <20250221005345.2156760-1-riel@surriel.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 4BDBA180009 X-Stat-Signature: si7g8ofcd9b8mhjizoxegu1r76i6owbu X-Rspamd-Server: rspam03 X-HE-Tag: 1740099330-20637 X-HE-Meta: U2FsdGVkX1+ao714oPPs5QhYqxa0FJfl6FdLWR6WxfgnpXbMT5NqSekRDts0JDwuZFcDjBAd7MLA2sy7kKMzipPxAty/aUjAk4ozwG++/yfHWJxtvlDZL0+A2t2JRIFRhNnldvoyx4YvETsvmphR1XL4DUfady1Cr47lNtaGaByPslCjCudPPu4okltw3c8ZseTYfPJ/0tZhDtmUcF58BqUPCVuZZRzA2EU+5QG0wp49zxIRZv+lle7YRKm/VLhUt1Bl2nT9xOjbg+P6cfkwGgG4ldlgwiVFDLvk5EUWD/d+nZ5/67xB74A0mQ1j5y6V0nyYQuESwcH/6+IvuganTDyu7A2ZhtYtevFBRwjyVbXTq3pgY/VRi2gfZnYiBrKzzgzs+pXrY3PFQG8nkygTGgwxkeZDHii3BHu2hEJkDXwgEyR1BvHtTu2A78/ec+XJQD3bfukVR99Uwxc2tWjciHExJ9qvbTkzi06DYop+KguQK22gLDTm6HSb93WSBk3abkVuWyrHmm+4+4H5sogGxDrl3//deW9CbCBWfGCAjl+BqrI3WN0wGA7N7CDokiYES4BCvRwui49uePSa+jrgQjAWtZAKnoaRW1MOe6uvq8tjlZwm8ABXyAuOqLk6iqNMAH6BiN4uf1szTtCqaHC8B20m0RmZxuyFyPiwCvyW8/SOMALD7oCf86ExqElWpspUm0gad/dd+zYKZjydTo+pTfpDe1ttxgQnZ1yb/miQNQgd359Npjv1rCetHqSfn82Tz63OJ9KB4ilkBCh2bUdmefXoJyiP163UgRfFqFgxVoVPVJoiII+GVgSkZJoRfCBD7hH+BKA8//+gvUadRK5n+/rAASVlmoHZcte3HDVFwUEevwU6+CIOFW/VduTFJ4EkHSnOMqnNzmW4ZYbgw33C+fG63bmGQnANNdxtcq9iUSAvzvWmImDV9DipusLlPgg8GKHaPoZkhHyHOA7RJ1u qeS6QOo0 m9onKxfbtL0628pVbh0p1vj3HaWkAG1IZHdqxqtT8AGB6GCEKPK7kPFRU++hfSrLkE8AHeF6oCdU3xkwxSClii7RjJNT9dQH5D5mkRB8N6o2YAU89NdtXILzOmAKeifKrQxfav6OesiVgbP7z2nwu3rGgKEpzR6HaboCPBwR60K8zQTj6rW62W24dkfRIHgp9IRr4m61Ieopftz3gIkuWroGiTPKoUAo0suz8auT4L4H2XtB/NP3M0LgbUYjb+iKeYXo9CiYWnNBfxHzau/o9eYGSWsBwOub1tWgORzAiTPz5ywVfkZOkfUjnbh7ezfxRQr/dTG97Zw7ig+E9rdFC8s4dBX2y6nLh6XmK5Hq7n71t4KJgjhGYRyoWx4z5nKYMwNCWJVQjqdnGm+Hv3PuUobGgh+FhdxspWoAR 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: Add a "noinvlpgb" commandline option to disable AMD broadcast TLB flushing at boot time. Also fix up the "nopcid" boot option to automatically disable INVLPGB functionality, which relies on processes to run on globally allocated PCIDs. Signed-off-by: Rik van Riel Suggested-by: Brendan Jackman --- .../admin-guide/kernel-parameters.txt | 3 ++ arch/x86/kernel/cpu/common.c | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index fb8752b42ec8..91260e1949fb 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4182,6 +4182,8 @@ nomodule Disable module load + noinvlpgb [X86-64,EARLY] Disable the INVLPGB cpu feature. + nonmi_ipi [X86] Disable using NMI IPIs during panic/reboot to shutdown the other cpus. Instead use the REBOOT_VECTOR irq. @@ -4190,6 +4192,7 @@ pagetables) support. nopcid [X86-64,EARLY] Disable the PCID cpu feature. + This also disables INVLPGB, which relies on PCID. nopku [X86] Disable Memory Protection Keys CPU feature found in some Intel CPUs. diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 742bdb0c4846..b1ead1136d5c 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -245,6 +245,33 @@ DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { } }; EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); +#ifdef CONFIG_X86_BROADCAST_TLB_FLUSH +static void disable_invlpgb(void) +{ + /* do not emit a message if the feature is not present */ + if (!boot_cpu_has(X86_FEATURE_INVLPGB)) + return; + + setup_clear_cpu_cap(X86_FEATURE_INVLPGB); + pr_info("INVLPGB feature disabled\n"); +} + +static int __init x86_noinvlpgb_setup(char *s) +{ + /* noinvlpgb doesn't accept parameters */ + if (s) + return -EINVAL; + + disable_invlpgb(); + return 0; +} +early_param("noinvlpgb", x86_noinvlpgb_setup); +#else +static void disable_invlpgb(void) +{ +} +#endif + #ifdef CONFIG_X86_64 static int __init x86_nopcid_setup(char *s) { @@ -258,6 +285,7 @@ static int __init x86_nopcid_setup(char *s) setup_clear_cpu_cap(X86_FEATURE_PCID); pr_info("nopcid: PCID feature disabled\n"); + disable_invlpgb(); return 0; } early_param("nopcid", x86_nopcid_setup);