From patchwork Sun Feb 23 19:48:59 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: 13987235 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 E89C2C021B2 for ; Sun, 23 Feb 2025 20:20:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5EC046B007B; Sun, 23 Feb 2025 15:20:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 59BD26B0082; Sun, 23 Feb 2025 15:20:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4638A6B0083; Sun, 23 Feb 2025 15:20:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 292A36B007B for ; Sun, 23 Feb 2025 15:20:15 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id CC94C1402A6 for ; Sun, 23 Feb 2025 20:20:14 +0000 (UTC) X-FDA: 83152326348.09.A94C270 Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) by imf15.hostedemail.com (Postfix) with ESMTP id 52871A0006 for ; Sun, 23 Feb 2025 20:20:13 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf15.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=1740342013; 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=tnXJUoKhnm5h8EohtTt/G8qJOME70FGJFaEsjMY4Igo=; b=mlFs1DCOBruPDY5xO1egTdJBy3clvvTuocFYU5PDcwOiEPVYprSfC8K40NnjnxVEwix9DZ jRN03T3dIfQHSiI3Ssu2aEeWin1o78087YvYp6rcEkTz6SMAFDGWtJe5kXEyvrrbSIOzsz Jc3cYcBvthc6SwdjcMuXnYjEwI1qfag= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf15.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=1740342013; a=rsa-sha256; cv=none; b=PDXQVx3csoKk9CLooYvlhiOmJVG9aE22J18UIgHJFK/V7joqjEziqbajT+CRvCe0HjKnfW pAcpZjTpESQUrpnAJCxb9yU3gHjjGLKpTtHOLW9v0nrpQpXz6IhfTszhNZg9hoidXrE+9d +dvJVR/33Fa9KJJLh3czJ3AiBYE938w= 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-03Bc; 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 09/14] x86/mm: global ASID process exit helpers Date: Sun, 23 Feb 2025 14:48:59 -0500 Message-ID: <20250223194943.3518952-10-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: rspam08 X-Rspamd-Queue-Id: 52871A0006 X-Stat-Signature: hnr8p19jf5ppsyxoo16yxdk5xgy6ha8h X-HE-Tag: 1740342013-450360 X-HE-Meta: U2FsdGVkX18n6aRn/HEveM7ohlHb76cPVeJ6vxv99Hck1oJ7Y9hX/ffPDIfwXA7Bjwr04/RLWJLpsOh1ldOrHUwGJQU4yDEQ55DPUfM4Po7KYHRJMsGtPFxk8aT8FVlnD7rX2+FGKaDBaGGpQfs1N0F4m8K7U7xCcIdtTvpkvEFLl1f9fNJ/AxJdCNcEukLsGlwhRLKi4BLo1PdfdZPHGUJnvun0UCiszBv9/XMxzfNT1/ojVcmnYk/YHjitmCeZ5HFLpnPIvAt7RDHzOfjdJzWp8+oiwR+QYggzU8NaVN9z1i4fPxaqMVRKeJDqgMr+tZmnsC+W/u2bz+EIu/s4J96SrQWtVs0TNYUw4+Ld3bXW5uQO46uxLqfGjIQ12ZvM0jUNsarWhOzYYWWemj6BL8LFrrlk4b4UuQ1rFcUK3dbn+OLn9TERvANdt8oxkGWmfHtLkvy6QOFzyKWjBTva/GL2vXXzDNqHozTc0UddsfzToG1ofV2+XD/i+eLU0wXHpdnwO1kOOTdWqKMhV/Je0duYHrn8W6peOk+COf2hg23NGehJPDI6jxJ2gMjEsPEZMihzEXe6SKI65AUK6e8MaZwyWsfuOZFQKpEKcdDB9g/umFITXGNze9Qnn+4khqIrhN7mdMMkKrmU3R6QP6Gp7Ev9M41fxKEhd1NL7TeZJ73gQqQ1nBRD9WXGvbb+mmHL/FSft6omOgEgVL/eSf72vS2G4Fg/pI9r8KFL8GAaCMpUmT+DMUZLdh3AzxysYK0e7K1UxKYqdvfWKYHRSqkN9YFl/HsEq7+Df7OYLzS9iqi0qtZB8vuPIcDb+xFzBh0a1i7cJJReYn6mPyY7/jM3qFifUVFAQGpihN+HwhK3VtyBTV+izVHRtMDWkk0bSokBOLwfN2dLCIuQ2sVCEe1wk5VSt5r6k9m4dQlrlB/8UVZWcVTjLSFgrw/r63L0q15mnJ/2/8PHXPWcn4jGYWL hyJD+mxX wxRy45MXviR46Gq17spXYv+XrzrnuXJU/UXcGBNiu2z9i2zNnElGnbBqDdi/2URuywRpyln2YhOPhJVwZfG23I5m8zJqBxUHoZuUK1bxhviWUUXDjbPhJzid/fH0rXqdOrKS3y29tMr4ds6QMk/OhcHO6WOm6zvINT9Pb2wavzWuRkfydBS8gX7VhQoS2pX02PM3Fgt0zSOieKBIVyj/z4rjiRe8r9zeG2BLrOHK8biNH/KAN3kP/DDCOhhrCg5iseqWDWqtk7OFW0P7dAomJfLev5yzr5xM7lERdR60M1Fl1PoMxy5Ux68IYBY/YCVvi2tUoNgjRAq8Z/9YsYjVXDwCosNpGIwq2fiV7qjg32CfUbIeQGkWn+GOFjSzWVC5TmSVlFa/0AllpoUs= 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: A global ASID is allocated for the lifetime of a process. Free the global ASID at process exit time. Signed-off-by: Rik van Riel --- arch/x86/include/asm/mmu_context.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h index 795fdd53bd0a..d670699d32c2 100644 --- a/arch/x86/include/asm/mmu_context.h +++ b/arch/x86/include/asm/mmu_context.h @@ -139,6 +139,8 @@ static inline void mm_reset_untag_mask(struct mm_struct *mm) #define enter_lazy_tlb enter_lazy_tlb extern void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk); +extern void destroy_context_free_global_asid(struct mm_struct *mm); + /* * Init a new mm. Used on mm copies, like at fork() * and on mm's that are brand-new, like at execve(). @@ -161,6 +163,14 @@ static inline int init_new_context(struct task_struct *tsk, mm->context.execute_only_pkey = -1; } #endif + +#ifdef CONFIG_X86_BROADCAST_TLB_FLUSH + if (cpu_feature_enabled(X86_FEATURE_INVLPGB)) { + mm->context.global_asid = 0; + mm->context.asid_transition = false; + } +#endif + mm_reset_untag_mask(mm); init_new_context_ldt(mm); return 0; @@ -170,6 +180,10 @@ static inline int init_new_context(struct task_struct *tsk, static inline void destroy_context(struct mm_struct *mm) { destroy_context_ldt(mm); +#ifdef CONFIG_X86_BROADCAST_TLB_FLUSH + if (cpu_feature_enabled(X86_FEATURE_INVLPGB)) + destroy_context_free_global_asid(mm); +#endif } extern void switch_mm(struct mm_struct *prev, struct mm_struct *next,