Message ID | 20250226030129.530345-6-riel@surriel.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 A5E3BC021BE for <linux-mm@archiver.kernel.org>; Wed, 26 Feb 2025 03:02:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DCDEB280010; Tue, 25 Feb 2025 22:02:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D7B8928000F; Tue, 25 Feb 2025 22:02:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA68D280010; Tue, 25 Feb 2025 22:02:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 9322C28000F for <linux-mm@kvack.org>; Tue, 25 Feb 2025 22:02:40 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 4AD3F12066E for <linux-mm@kvack.org>; Wed, 26 Feb 2025 03:02:40 +0000 (UTC) X-FDA: 83160598080.05.3F9AA9E Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) by imf13.hostedemail.com (Postfix) with ESMTP id AE11F2000A for <linux-mm@kvack.org>; Wed, 26 Feb 2025 03:02:38 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.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=1740538958; a=rsa-sha256; cv=none; b=e0lGD5h4I0UThe5swxfcQf2U/M/rgmI32kAPYLpoxBF0lxBwaZ6NiKJnZ0fzb7hoVGJrpR BzOo1Tbv8XO4ut6qNcAP6hkQwQ8z1Cb+fTu7B8z+KvkzCEG5FZw3vP42vJm7FluKmuKhRF RHht6pMWu/XAwZfRrg3yFkpBbW9ajko= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740538958; 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=1Zd3l1/qscIsnVfm1nsLSgX0cb8GjaRTPKf9eVV/oC0=; b=G3l1vkS4M5E4+GdoSWW0GvHDlxODWOxRT8YeoRMh6MCWuhf1AcaKT7hEKSPw02QUOLlXZx wi3EuwjGRb118h4ogEeBXLUztmOUTeOrWMT643vUTK+i0fXhLkZoGgVrMBrxivoC1DrjWQ NvXrgNEr0jnsAxHqHAOgEV7TgbAERmw= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.hostedemail.com: domain of riel@shelob.surriel.com designates 96.67.55.147 as permitted sender) smtp.mailfrom=riel@shelob.surriel.com 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 <riel@shelob.surriel.com>) id 1tn7fw-000000001Y5-0mkj; Tue, 25 Feb 2025 22:01:32 -0500 From: Rik van Riel <riel@surriel.com> 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 <riel@surriel.com> Subject: [PATCH v14 05/13] x86/mm: use INVLPGB in flush_tlb_all Date: Tue, 25 Feb 2025 22:00:40 -0500 Message-ID: <20250226030129.530345-6-riel@surriel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250226030129.530345-1-riel@surriel.com> References: <20250226030129.530345-1-riel@surriel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: AE11F2000A X-Rspamd-Server: rspam08 X-Rspam-User: X-Stat-Signature: mebs7k5mch7nxn3hk7uyc9ibnn8mbzwj X-HE-Tag: 1740538958-412917 X-HE-Meta: U2FsdGVkX18H+5tPCRlKRhxPpCNxcac8PTV2QdjIra6Ji84VLEo9BxvHDyNRy55zL1ISfEvnuhvQTXE8HR9C0THgAqBuAXPnj4l/GweYuCoPPX5ak8vFkQb0EOQDaKCAGoiKyO/Ja89SbVCm13w+78yMhPw7fcd4Akh87NZUf6uqIItI1Xm4JvtbeJYEI+FHaR0XEG/yZiWsy6lUpVgduJfpl3HRnbVeZ545TmmUqc3ZSD400EOwyLdMbHvMJaKNzzksc4dESrHtqaPvVtS4s8MU9Axd3wmrfKJf4VntcJ7PscIJSRqTB3BijBFYLEmmvV+hLv6NquyLtFe26uwz7s0uQN00mNkNAB4fWy0vWB7VF6zi1VXogbWPN5RYAv/vHxXd5o6TunTMGnSn22MS79bDafpEiC2k6am4cDJzbB5BYOQlw/cb7HIw4T9dh+gdG3m75TqUdW21RR14Y6MYQ1T6/8UUe+7kj/RgIl57LrfcQzZ9I1QLV8NWBGeNXmEmeYIyoZABhbgtX1tjaWS9pIZpvesx+hwuWpA8KJ62ltuflAinIZmYoI9NffYJhyXiLpKV3my6uaOnp3KbK5NBrO5OZQ0gnS7r7I8brBWPbf/N7gPtnEFMiuz/jz1cNjkZNCf9r2dx3tU7VMKNcx1xg6iYo85VKOA45q66RcKOE8SWnBXsJwRQ42j8c9g0Wiwfv+WdtkbQz+tb/kSMNNgeEbvd80V7C3I+621V7BkW3z4idvrFK4Sxlf3co91Q7F90DuluT+DY0PYbkl9HySe66rXGv/ZV8DG2pZmcUzbS+jnnGN8Q0K1X2P0yufDpWCDEcmJCqbOkQ9S/5ugjbxBiqh4JY10yhQEg4A4bXdVosXvda7rxqAajSIiqQHwmqkYHsHygcVaIqvibcajlJmexmmuzS+SXjFu5BiYJD0+pLlWKHRRF50hx1otRdfwd3/4PG8buHnW+W/lgtm3UDW9 B7vB+7Fz EEaow3wcoVHQ/YAhjqU+B6avJRgGMALysr0kD2oKL3FhAG9Dju9NtCehfpPS4d3lEs/RukgwkPHc9Q0RV66hkcI6JdoNTAMDVzhDME6IEChtmPLyKb9kew13hmzmFdwCtqXA8JOyz+iKPox3GEY0EKPiw9/ZcIoxNeX3cFc7REsNc1rpMdnN4BUG+41STVnepzU+IwYwBazWUQHwjRi+5p2D4DxiUekurQ4pEvRGl3x5+yTBTZ/I2BvjiI9H1bfIQnQloEcpEbzIxpaC3JOw+3vkPdW0eV2PW6XcMwzBZ8PxmuVKOhYivznpqXKAWMEak2YR+L139IEb7UMo0Pww/K9+LIZVxWxr0wPqdXE4pKBzCJrH+hMDTcexDWBpjntt0ePBazblF4CWWBwT8q/cUfrWG+DfyA6beJ73VgC2/wNTKjxBtsVGloxNeJ6uAUJRZ/rzz6HxTkwrC7xc6v3BMe2EUsweS7CcCuC6cVwQZLvm2NehqbsV1B3WqpA== 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: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
AMD broadcast TLB invalidation
|
expand
|
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index f44a03bca41c..a6cd61d5f423 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -1064,7 +1064,6 @@ void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start, mmu_notifier_arch_invalidate_secondary_tlbs(mm, start, end); } - static void do_flush_tlb_all(void *info) { count_vm_tlb_event(NR_TLB_REMOTE_FLUSH_RECEIVED); @@ -1074,6 +1073,15 @@ static void do_flush_tlb_all(void *info) void flush_tlb_all(void) { count_vm_tlb_event(NR_TLB_REMOTE_FLUSH); + + /* First try (faster) hardware-assisted TLB invalidation. */ + if (cpu_feature_enabled(X86_FEATURE_INVLPGB)) { + guard(preempt)(); + invlpgb_flush_all(); + return; + } + + /* Fall back to the IPI-based invalidation. */ on_each_cpu(do_flush_tlb_all, NULL, 1); }