From patchwork Sun Feb 23 19:49:04 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: 13987224 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 14841C021B6 for ; Sun, 23 Feb 2025 19:51:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 420636B008A; Sun, 23 Feb 2025 14:51:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E0376B0085; Sun, 23 Feb 2025 14:51:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D9D326B0085; Sun, 23 Feb 2025 14:51:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 77D376B007B for ; Sun, 23 Feb 2025 14:51:15 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 172C5C0276 for ; Sun, 23 Feb 2025 19:51:15 +0000 (UTC) X-FDA: 83152253310.20.5CAA4E3 Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) by imf26.hostedemail.com (Postfix) with ESMTP id 89E3414000A for ; Sun, 23 Feb 2025 19:51:13 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf26.hostedemail.com: domain of riel@shelob.surriel.com designates 96.67.55.147 as permitted sender) smtp.mailfrom=riel@shelob.surriel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740340273; 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=5Ozh2K5ZnxPN1bHVR0puhyzpgukNsFrGbCRsXE51vcg=; b=Au7jlo7BfkcWs8A2N+pTaaRiddu8o6vX8GZM97hANXjcu6/fOqiliYxX4TkWQ9m6cxCmNl DdPe7/slQ0LEy9tlvKorLkn0txQeK/9qPPjhFLChOF9UEDPjC5rtLaET9LppTTWo+Bu8Yc MHcpAJIwkwNo2Un89EPPasotOoVDTz0= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf26.hostedemail.com: domain of riel@shelob.surriel.com designates 96.67.55.147 as permitted sender) smtp.mailfrom=riel@shelob.surriel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740340273; a=rsa-sha256; cv=none; b=B0VhsPGveN2LqD2ajOKIvuUJhQukQCPiWs2k6WmWw6D26NzrOuFeY/6p/HsQeFDHqqv6V+ OdM5vK3vgTDbr87IQpDpwg0gPpuZ5jMe1QObrN5dbeAVjliXoCWPz9xnb5zW7qXNWgn6ht CxTB13MftAE+Lqq3cEgKRG2Yc3SF8d0= 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 1tmHyz-000000001hX-0Zts; Sun, 23 Feb 2025 14:49:45 -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, mingo@kernel.org, Rik van Riel Subject: [PATCH v13 14/14] x86/mm: add noinvlpgb commandline option Date: Sun, 23 Feb 2025 14:49:04 -0500 Message-ID: <20250223194943.3518952-15-riel@surriel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250223194943.3518952-1-riel@surriel.com> References: <20250223194943.3518952-1-riel@surriel.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 89E3414000A X-Stat-Signature: grdbzmifg5moki97uxdbhdix3bb5sa8w X-HE-Tag: 1740340273-33068 X-HE-Meta: U2FsdGVkX18uVIfq0tBerVqRqB+mq97UroJ+i/84im7vwRNybjYHE3gR52GstmcNnd3YBxIESwFm3E4a+H/X/LDC4cc9QetomEcfOkKpYX97ucrZkMjYG4K0TF3CWK3Zv8gDuFrW1kOpLrFdKMIFdtvf1ABf0DaboubkkBmdrPbcQDiSeYkeoRQrwpUoATmQJJCwQ5BvVO+/DWAlIfNDA4/XrHHD28hof8dHmlbWCZVp/iYRyYYAwmsqlvnLJA5MzwU0EkTvlDknur1Vww0QOAs7q3vIZjd/CfRvgdgslzApZH4oK8r7HaiAfOr09RMUikAdJYwFikXJMYGrGcekHZJFI01NNlPhq21lqEGJZBncYrWkhL95wGm+gj7N5cxK5ftmpZf2slH+3UCLBhXHFnkschZi1Qg6d5RrgOYtmTyIAF2aUxhI/crVrP8sfmUY/o2sjXwQwM5qnRTfTDcDl8BYHigarPOHIcQI4063zjnxVUL5t/RybBSL1VZd4HeGqem1/9Z/bxzDRTD5CFCHjz7fgObPhvGjVgTOy3Vc9vy1e72kt97P+BlruGyPdI/SoKrIEy7zDaV5HWdZL2P8VBVesq5sgiD/fTlvvU2Zel2hi0K/ZfJVkWFYSnlsYyjBTAQDdMHomvtJ4FOKVrp6UzAyHCScGUz/utm2tV950UkYjDTJS+ZAhszFIne6XzQfeuYVCq6MXSvVjMPw9JGbPHuijwWQZYdYGIP9ou2j6JFVFanClIr32+dr6z/xw+it5JPSF3C6GFPaJ4EaQmEhxL+PfxDiREp7FTi+06FIq8RqnsT9rij+i70ugBOCBfTjdO/oLeOYGJ0daA8njR7xYmoFxtPKAax2aGSu74f79fv3zsRcW2ja2mIrAnOTGJZDOpohxfG7R0P3k2jLHfA2iux/H1u90h2zfjwyJlB/+w2e3uSN+8jq6Bi64/F5cJvaX8gdM7WXw/u53dctKJh my5KhjB3 ICkYarfMrP2fzhr2AENT4lvHORqQnf12tSpgBXVp5ROVAG96jRPp89wSFuOB1VcU/XNnCe4otHEfzbatYMJnO7Hb2ReKIszd9YlHicSZx4yRqEyEzjVSGlcgkC4FHov+c5iSAzKNx8F74D3VHeFyJRIZBRy7PSTu8/5STwuGc4v8o3M/nm5FYR/9+U5HwyuJ6skdZzT0VkmROJBac/hVgeF/s56ZqEBAYW7PJEYD3VnzI4EzudCTAZETbV3XrytjKd54z0NicTE6zl4Verza6KJd9RE/zmRyGImjo22h+W3B/8Btxyr/ik+3u6BLvY+BU4GXIDQh519yPmjTVHGD9G2cZmlIXhUUdajyE4Jzt4U4z2tUJHzJh5lWI3FgKUz/Q0cEXIDuBuxFxQVNxm2Qvc9eeiw== 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 7cce91b19fb2..b038c9b50b32 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -243,6 +243,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) { @@ -256,6 +283,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);