From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D514D47B425; Tue, 14 Jul 2026 14:05:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037922; cv=none; b=SNoCrYd8Fn1sVIVK9C+EB+NySKGgBVjXZgpqtkdyJzH27hjZMS7PD74pkrB/OpkO2AGAlU7YSS7lurUe61OmGlkXueUqacFl+XsttbIk6sBYOTERB9CI/b926E4SYPKI2GRjaiWiMj4EtkwkkjpK0LtJ0LiWZSSa7wr9rjRkc3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037922; c=relaxed/simple; bh=w+klhTdFU9VL3dvxDzm8zfdFs5zqm0APSZWeudQBGNo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iF2L+L1HXC+u84CHD1E5yqmmfu4AI2DBh+7lgRc1C8QXsiHzZ18TPDXk5NsIWtYdd9NGQkjN4d1YRCe+iTV2ESctueWQtbyzVqWW3ZxAvMQ+huB9Ly0lh6TadJkmHcDkCPuDDO89WCuU6/HuoLaHIKqFPoBRck+rHL2utGkUJCg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=ZNaRsCzA; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="ZNaRsCzA" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A30D5339; Tue, 14 Jul 2026 07:05:13 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7DEFC3F7B4; Tue, 14 Jul 2026 07:05:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037917; bh=w+klhTdFU9VL3dvxDzm8zfdFs5zqm0APSZWeudQBGNo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZNaRsCzAt1MnFAcOqfXFWvT4T4lPSEzMCEGtQrD8PcOucfEtWoppc1fCEKGc9cJXK 6RWZuY1RJvPlk32rxkdaZDZjs4oIrAl0+EdZq5ACM4/oIU1EOINAjEPtOBYdtmnjAy gQq/h8AoBHc7SVStww7Gu1VeAurSqfnl+VdiDEVc= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:50 +0100 Subject: [PATCH 01/22] mm: drop unused __mm_flags_set_mask_bits_word() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-1-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=1348; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=w+klhTdFU9VL3dvxDzm8zfdFs5zqm0APSZWeudQBGNo=; b=Ifi0NsVAxXOM3X00d29l/TBqH4M9i/euaIMaezX4RjYeZIsEEEbWOkkWnSKDmLxeFJ4OWFsJu hMlhl3GESzgCyZw7KMYDONi2E6s1qECPsAJEDuKo4qx+p6nf5J2ydG5 X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Commit 39f8049cd49f ("mm: update coredump logic to correctly use bitmap mm flags") added coredump-specific helpers for the remaining masked mm-flags update users. That left __mm_flags_set_mask_bits_word() without any callers. This is a special-purpose helper that is unlikely to be useful for other purposes; best to remove it. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky Acked-by: David Hildenbrand (Arm) --- include/linux/mm_types.h | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index ae9bca4eda5c..b4129beb9c4a 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1432,18 +1432,6 @@ static inline unsigned long __mm_flags_get_word(cons= t struct mm_struct *mm) return *__mm_flags_get_bitmap(mm); } =20 -/* - * Update the first system word of mm flags ONLY, applying the specified m= ask to - * it, then setting all flags specified by bits. - */ -static inline void __mm_flags_set_mask_bits_word(struct mm_struct *mm, - unsigned long mask, unsigned long bits) -{ - unsigned long *bitmap =3D ACCESS_PRIVATE(&mm->flags, __mm_flags); - - set_mask_bits(bitmap, mask, bits); -} - #define MM_MT_FLAGS (MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN | \ MT_FLAGS_USE_RCU) extern struct mm_struct init_mm; --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4198447D921; Tue, 14 Jul 2026 14:05:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037928; cv=none; b=KkV8MmsFhz+zFygW9USYd175yvLipw1vwSu18jUH0j61z8oJAbdoFsNr1wppztPUsCgxgA0GUaj3ub7ZLC/SdlhKfGPibDRIzKcACGUh/NzGH+kp7bFdf0SZmN7AlvSCCmUApHNg41H52jOL+dMmZFxB/33VxJ+dcFLVHSDGYLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037928; c=relaxed/simple; bh=xWJCKsvCSbOTf1MrL+nqfsWcuzx4IBI4MMfjRE6PTH4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AE3iFcNViK58TP2en4quy+k4RhoootMeyU/YnlM8g9mEs7ugJi06NHiGDf4zYlG4wANLP60k/9cVBjKaYsov54+hFAoZ3gD4XQT9rFXOumWztwFBq6WdVUxnsteSwEW+yNSJL/P710xK9jwsyQwgO/c+UL8B66WUADC2Gj8iDYg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=L/UyKrDH; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="L/UyKrDH" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6425C1516; Tue, 14 Jul 2026 07:05:21 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3A07F3F7B4; Tue, 14 Jul 2026 07:05:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037925; bh=xWJCKsvCSbOTf1MrL+nqfsWcuzx4IBI4MMfjRE6PTH4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=L/UyKrDH31P2AxfsB5zaY1mh6o9sykjNj6yB/yMXG8ePSNTlccGqvWENIvdaG1tfJ Wk0YZEQWyX1mVS8XhODJBz5n9MI25kkc+YIk8/N9y9yuoLWoSBYTDhb1fyTBkqd7HI cav7VW0lg3rVkGLnx2wAlICXEbNLvp2RP9uBMl74= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:51 +0100 Subject: [PATCH 02/22] mm: move mm_flags helpers to mm_types.h Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-2-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=3490; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=xWJCKsvCSbOTf1MrL+nqfsWcuzx4IBI4MMfjRE6PTH4=; b=hjHVW6q/l9oVND5egfxNDc6FE64eNht6hv1NYHcLYYfk3GK4zKlatRLYEID3yBr+Cr2y6GvLX wE73qcbXnDpDJQn8OyUXgdNbqTA1wZVDqiAytR24UH8BGEWoTGJECyr X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Some of the mm_flags helpers are defined in , while others are defined in . We will soon need to call one of the latter helpers from mm_types.h. Regroup all the helpers in mm_types.h to keep things simple. Also remove #include's that were added specifically for these helpers in mm.h. Signed-off-by: Kevin Brodsky Acked-by: David Hildenbrand (Arm) --- include/linux/mm.h | 32 -------------------------------- include/linux/mm_types.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 32bb723ffbb9..7a4b8e7ac8f4 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -34,8 +34,6 @@ #include #include #include -#include -#include #include #include =20 @@ -948,36 +946,6 @@ static inline void assert_fault_locked(const struct vm= _fault *vmf) } #endif /* CONFIG_PER_VMA_LOCK */ =20 -static inline bool mm_flags_test(int flag, const struct mm_struct *mm) -{ - return test_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); -} - -static inline bool mm_flags_test_and_set(int flag, struct mm_struct *mm) -{ - return test_and_set_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); -} - -static inline bool mm_flags_test_and_clear(int flag, struct mm_struct *mm) -{ - return test_and_clear_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); -} - -static inline void mm_flags_set(int flag, struct mm_struct *mm) -{ - set_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); -} - -static inline void mm_flags_clear(int flag, struct mm_struct *mm) -{ - clear_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); -} - -static inline void mm_flags_clear_all(struct mm_struct *mm) -{ - bitmap_zero(ACCESS_PRIVATE(&mm->flags, __mm_flags), NUM_MM_FLAG_BITS); -} - extern const struct vm_operations_struct vma_dummy_vm_ops; =20 static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *= mm) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index b4129beb9c4a..a2e0dc5892ff 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1414,6 +1414,36 @@ struct mm_struct { char flexible_array[] __aligned(__alignof__(unsigned long)); }; =20 +static inline bool mm_flags_test(int flag, const struct mm_struct *mm) +{ + return test_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); +} + +static inline bool mm_flags_test_and_set(int flag, struct mm_struct *mm) +{ + return test_and_set_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); +} + +static inline bool mm_flags_test_and_clear(int flag, struct mm_struct *mm) +{ + return test_and_clear_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); +} + +static inline void mm_flags_set(int flag, struct mm_struct *mm) +{ + set_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); +} + +static inline void mm_flags_clear(int flag, struct mm_struct *mm) +{ + clear_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); +} + +static inline void mm_flags_clear_all(struct mm_struct *mm) +{ + bitmap_zero(ACCESS_PRIVATE(&mm->flags, __mm_flags), NUM_MM_FLAG_BITS); +} + /* Copy value to the first system word of mm flags, non-atomically. */ static inline void __mm_flags_overwrite_word(struct mm_struct *mm, unsigne= d long value) { --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 03C6043F8AF; Tue, 14 Jul 2026 14:05:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037935; cv=none; b=DBq+JYZeH/Vaf8JyVSfwKZeA+icRFWqgr5f1/BwMWAyWkKke85LYt6kQ0Iatihz2+f9Ojy1xec9rnHxD60BFPR4cMT2h46INUR1cMAlxx+Ahsp7Q8oyMRmUMNKWX4xliIWxVxw0kqGm2CHB3/HkMlyzLYY9O+NJ+tuLQCtGSee0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037935; c=relaxed/simple; bh=FInc2gTxhVQc4LYtwtKoJPw43dSvFTnMs+LPVQ5s9u0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EG10cxRB8Da6rsROWmwzv5EQ6K9aYuiY3wrvsLA42nMkUPNo5NCIVbuzLCF1aMP8OF7DYyMBpMk3kZvjItG+Wz3orBMH0JmZa0xw0IJnybVRZhUPhBaU8dfj3D1TznIsI97ZlkMKukWxRktIPNa5Ahs8aRF8SeTFkZyh5Sx0KgA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Bm1/z7nw; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Bm1/z7nw" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1DB181516; Tue, 14 Jul 2026 07:05:29 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ECA813F7B4; Tue, 14 Jul 2026 07:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037933; bh=FInc2gTxhVQc4LYtwtKoJPw43dSvFTnMs+LPVQ5s9u0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Bm1/z7nw3ZrVQHSoXKrtxTQs91wc4RUrXfic6nvC1VPB3At2KepfWXr7Aw3HYFpkn ioHo5OCLJkJiU6MHz48diP4nr6YFWtjQg3UL72aeFoQQSfWxPSBxVE10gNTyxwI//k BrtCJZVqyK4Ji57oD58xPcYajyNM3z8AN78Fhrlw= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:52 +0100 Subject: [PATCH 03/22] mm: introduce MMF_KERNEL flag and set it for init_mm Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-3-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=2504; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=FInc2gTxhVQc4LYtwtKoJPw43dSvFTnMs+LPVQ5s9u0=; b=LLyApQy3cCX+sEK7+yEv+wdSQwFfqhZ/PtGYmJI+JJbZMoulhtvHZSYrG2onhzlRcBnCeJhTe oQ14mia3FhGBEfCDsSpVX5EPWBdyUPXpBCd8WmZOxEP54NLEVWz9CaD X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= mm code often needs to know whether some mm represents a kernel or user address space. This is currently done by comparing the mm pointer with &init_mm; besides not being particularly elegant, this ignores the fact that other mm's (e.g. efi_mm) may also represent parts of the kernel address space. Introduce a new mm flag MMF_KERNEL and set it for init_mm. Subsequent patches will use this flag to replace comparisons with &init_mm. No functional change is introduced for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- include/linux/mm_types.h | 10 ++++++++++ mm/init-mm.c | 1 + 2 files changed, 11 insertions(+) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index a2e0dc5892ff..7838ea3aac00 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1414,6 +1414,8 @@ struct mm_struct { char flexible_array[] __aligned(__alignof__(unsigned long)); }; =20 +#define MM_FLAGS_INIT(flags) { .__mm_flags =3D { BITMAP_FROM_U64(flags) } } + static inline bool mm_flags_test(int flag, const struct mm_struct *mm) { return test_bit(flag, ACCESS_PRIVATE(&mm->flags, __mm_flags)); @@ -2001,6 +2003,9 @@ enum { #define MMF_TOPDOWN 31 /* mm searches top down by default */ #define MMF_TOPDOWN_MASK BIT(MMF_TOPDOWN) =20 +#define MMF_KERNEL 32 /* mm belongs to the kernel */ +#define MMF_KERNEL_MASK BIT_ULL(MMF_KERNEL) + #define MMF_INIT_LEGACY_MASK (MMF_DUMP_FILTER_MASK |\ MMF_DISABLE_THP_MASK | MMF_HAS_MDWE_MASK |\ MMF_VM_MERGE_ANY_MASK | MMF_TOPDOWN_MASK) @@ -2008,6 +2013,11 @@ enum { /* Legacy flags must fit within 32 bits. */ static_assert((u64)MMF_INIT_LEGACY_MASK <=3D (u64)UINT_MAX); =20 +static inline bool mm_is_kernel(const struct mm_struct *mm) +{ + return mm && mm_flags_test(MMF_KERNEL, mm); +} + /* * Initialise legacy flags according to masks, propagating selected flags = on * fork. Further flag manipulation can be performed by the caller. diff --git a/mm/init-mm.c b/mm/init-mm.c index 3e792aad7626..93773269bf87 100644 --- a/mm/init-mm.c +++ b/mm/init-mm.c @@ -34,6 +34,7 @@ struct mm_struct init_mm =3D { .pgd =3D swapper_pg_dir, .mm_users =3D ATOMIC_INIT(2), .mm_count =3D ATOMIC_INIT(1), + .flags =3D MM_FLAGS_INIT(MMF_KERNEL_MASK), .write_protect_seq =3D SEQCNT_ZERO(init_mm.write_protect_seq), MMAP_LOCK_INITIALIZER(init_mm) .page_table_lock =3D __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock), --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8B20B43F8AF; Tue, 14 Jul 2026 14:05:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037943; cv=none; b=U2LZVYzX8NTONM3RVmMYQNPC0l6uhs0s/5BbQ1gsBUrk8QC0hdCynQiAZ+uiVd5nnKvFYMkqJH1t21FR7hq9qJ+8Umzp2jJOY9bKtfcAZlcpJc4r6ZMrsWGOWrX+M/wi4i4s8EzEfC5jwbOdJ97ne4Y50FVBbbUA7WZju6ozDQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037943; c=relaxed/simple; bh=5/MiBpHs0ErPi8rhCKmMSpm6ldHtuokM4yv1ELNR2HE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n+mCVUpCMgUpnKl1aBQg+DD6lLXdV9ykO0AmAqYvs5SJTo/5/y/aS1Gkrm98iVX+4W3wdabYlNHGpjwZ1YQHpQT/6j9f65IcnagCSS6Zn1+0kyHnt1SF8nyQxxxef11TFzT1hO7a2oiDUc3bpHW3IQlZJqYXsEYhofpHcTZnyfE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=KYO9cDN7; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="KYO9cDN7" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CDF1F1516; Tue, 14 Jul 2026 07:05:36 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A8C023F7B4; Tue, 14 Jul 2026 07:05:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037941; bh=5/MiBpHs0ErPi8rhCKmMSpm6ldHtuokM4yv1ELNR2HE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KYO9cDN7rDizxe3v/je6cSxNCJeEVFPUnXsSWSe2BPhKaPCn7aqwcwGf5Fv/X2xeM fJX9X0ToA3Vm5csdSfShGsy263erMfQnPGfY2VsiME2prC8a3J844A9rhhh46ZY371 B0aQM0b2gjQo2R4Q0Ts/ynPMN9wstMhZsk8mylek= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:53 +0100 Subject: [PATCH 04/22] mm: use mm_is_kernel() in generic page table code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-4-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=7589; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=5/MiBpHs0ErPi8rhCKmMSpm6ldHtuokM4yv1ELNR2HE=; b=uo2OhW6qUc5pqzt9VsrUNdo1IYgeBBnT6lqfK5Ys8RZJ6rVRF5aIis0fNbkhks1ozPQyi/VUC pyQWphyWV1oCOOAp4DOjVmApiSewKKEeH9vCDbxc96BlDrMTGs1NvYU X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Generic page-table allocation, constructor and walker code uses init_mm comparisons to select kernel page table handling. Use mm_is_kernel() instead so kernel-owned mm's can share that handling once they are marked with MMF_KERNEL. No functional change as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- include/asm-generic/pgalloc.h | 16 ++++++++-------- include/linux/mm.h | 4 ++-- mm/memory.c | 6 +++--- mm/page_table_check.c | 14 +++++++------- mm/pagewalk.c | 4 ++-- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/include/asm-generic/pgalloc.h b/include/asm-generic/pgalloc.h index 051aa1331051..a283280e3140 100644 --- a/include/asm-generic/pgalloc.h +++ b/include/asm-generic/pgalloc.h @@ -138,7 +138,7 @@ static inline pmd_t *pmd_alloc_one_noprof(struct mm_str= uct *mm, unsigned long ad struct ptdesc *ptdesc; gfp_t gfp =3D GFP_PGTABLE_USER; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp =3D GFP_PGTABLE_KERNEL; ptdesc =3D pagetable_alloc_noprof(gfp, 0); if (!ptdesc) @@ -148,7 +148,7 @@ static inline pmd_t *pmd_alloc_one_noprof(struct mm_str= uct *mm, unsigned long ad return NULL; } =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) ptdesc_set_kernel(ptdesc); =20 return ptdesc_address(ptdesc); @@ -175,7 +175,7 @@ static inline pud_t *__pud_alloc_one_noprof(struct mm_s= truct *mm, unsigned long gfp_t gfp =3D GFP_PGTABLE_USER; struct ptdesc *ptdesc; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp =3D GFP_PGTABLE_KERNEL; =20 ptdesc =3D pagetable_alloc_noprof(gfp, 0); @@ -184,7 +184,7 @@ static inline pud_t *__pud_alloc_one_noprof(struct mm_s= truct *mm, unsigned long =20 pagetable_pud_ctor(ptdesc); =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) ptdesc_set_kernel(ptdesc); =20 return ptdesc_address(ptdesc); @@ -232,7 +232,7 @@ static inline p4d_t *__p4d_alloc_one_noprof(struct mm_s= truct *mm, unsigned long gfp_t gfp =3D GFP_PGTABLE_USER; struct ptdesc *ptdesc; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp =3D GFP_PGTABLE_KERNEL; =20 ptdesc =3D pagetable_alloc_noprof(gfp, 0); @@ -241,7 +241,7 @@ static inline p4d_t *__p4d_alloc_one_noprof(struct mm_s= truct *mm, unsigned long =20 pagetable_p4d_ctor(ptdesc); =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) ptdesc_set_kernel(ptdesc); =20 return ptdesc_address(ptdesc); @@ -279,7 +279,7 @@ static inline pgd_t *__pgd_alloc_noprof(struct mm_struc= t *mm, unsigned int order gfp_t gfp =3D GFP_PGTABLE_USER; struct ptdesc *ptdesc; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp =3D GFP_PGTABLE_KERNEL; =20 ptdesc =3D pagetable_alloc_noprof(gfp, order); @@ -288,7 +288,7 @@ static inline pgd_t *__pgd_alloc_noprof(struct mm_struc= t *mm, unsigned int order =20 pagetable_pgd_ctor(ptdesc); =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) ptdesc_set_kernel(ptdesc); =20 return ptdesc_address(ptdesc); diff --git a/include/linux/mm.h b/include/linux/mm.h index 7a4b8e7ac8f4..b336eb32faa0 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3818,7 +3818,7 @@ static inline void pagetable_dtor_free(struct ptdesc = *ptdesc) static inline bool pagetable_pte_ctor(struct mm_struct *mm, struct ptdesc *ptdesc) { - if (mm !=3D &init_mm && !ptlock_init(ptdesc)) + if (!mm_is_kernel(mm) && !ptlock_init(ptdesc)) return false; __pagetable_ctor(ptdesc); return true; @@ -3909,7 +3909,7 @@ static inline spinlock_t *pmd_lock(struct mm_struct *= mm, pmd_t *pmd) static inline bool pagetable_pmd_ctor(struct mm_struct *mm, struct ptdesc *ptdesc) { - if (mm !=3D &init_mm && !pmd_ptlock_init(ptdesc)) + if (!mm_is_kernel(mm) && !pmd_ptlock_init(ptdesc)) return false; ptdesc_pmd_pts_init(ptdesc); __pagetable_ctor(ptdesc); diff --git a/mm/memory.c b/mm/memory.c index d5e87624f692..c0244c0b0756 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3394,13 +3394,13 @@ static int apply_to_pte_range(struct mm_struct *mm,= pmd_t *pmd, spinlock_t *ptl; =20 if (create) { - mapped_pte =3D pte =3D (mm =3D=3D &init_mm) ? + mapped_pte =3D pte =3D mm_is_kernel(mm) ? pte_alloc_kernel_track(pmd, addr, mask) : pte_alloc_map_lock(mm, pmd, addr, &ptl); if (!pte) return -ENOMEM; } else { - mapped_pte =3D pte =3D (mm =3D=3D &init_mm) ? + mapped_pte =3D pte =3D mm_is_kernel(mm) ? pte_offset_kernel(pmd, addr) : pte_offset_map_lock(mm, pmd, addr, &ptl); if (!pte) @@ -3422,7 +3422,7 @@ static int apply_to_pte_range(struct mm_struct *mm, p= md_t *pmd, =20 lazy_mmu_mode_disable(); =20 - if (mm !=3D &init_mm) + if (!mm_is_kernel(mm)) pte_unmap_unlock(mapped_pte, ptl); return err; } diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 3fb995e5d40d..a5382c245b32 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -148,7 +148,7 @@ void __page_table_check_zero(struct page *page, unsigne= d int order) void __page_table_check_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t pte) { - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 if (pte_user_accessible_page(mm, addr, pte)) @@ -159,7 +159,7 @@ EXPORT_SYMBOL(__page_table_check_pte_clear); void __page_table_check_pmd_clear(struct mm_struct *mm, unsigned long addr, pmd_t pmd) { - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 if (pmd_user_accessible_page(mm, addr, pmd)) @@ -170,7 +170,7 @@ EXPORT_SYMBOL(__page_table_check_pmd_clear); void __page_table_check_pud_clear(struct mm_struct *mm, unsigned long addr, pud_t pud) { - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 if (pud_user_accessible_page(mm, addr, pud)) @@ -201,7 +201,7 @@ void __page_table_check_ptes_set(struct mm_struct *mm, = unsigned long addr, { unsigned int i; =20 - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 page_table_check_pte_flags(pte); @@ -231,7 +231,7 @@ void __page_table_check_pmds_set(struct mm_struct *mm, = unsigned long addr, unsigned long stride =3D PMD_SIZE >> PAGE_SHIFT; unsigned int i; =20 - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 page_table_check_pmd_flags(pmd); @@ -249,7 +249,7 @@ void __page_table_check_puds_set(struct mm_struct *mm, = unsigned long addr, unsigned long stride =3D PUD_SIZE >> PAGE_SHIFT; unsigned int i; =20 - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 for (i =3D 0; i < nr; i++) @@ -263,7 +263,7 @@ void __page_table_check_pte_clear_range(struct mm_struc= t *mm, unsigned long addr, pmd_t pmd) { - if (&init_mm =3D=3D mm) + if (mm_is_kernel(mm)) return; =20 if (!pmd_bad(pmd) && !pmd_leaf(pmd)) { diff --git a/mm/pagewalk.c b/mm/pagewalk.c index ed4860c01936..a3f47d1de3c5 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c @@ -72,13 +72,13 @@ static int walk_pte_range(pmd_t *pmd, unsigned long add= r, unsigned long end, * fit its pmd_bad() check (_PAGE_NX set and _PAGE_RW clear), * and CONFIG_EFI_PGT_DUMP efi_mm goes so far as to walk them. */ - if (walk->mm =3D=3D &init_mm || addr >=3D TASK_SIZE) + if (mm_is_kernel(walk->mm) || addr >=3D TASK_SIZE) pte =3D pte_offset_kernel(pmd, addr); else pte =3D pte_offset_map(pmd, addr); if (pte) { err =3D walk_pte_range_inner(pte, addr, end, walk); - if (walk->mm !=3D &init_mm && addr < TASK_SIZE) + if (!mm_is_kernel(walk->mm) && addr < TASK_SIZE) pte_unmap(pte); } } else { --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5AF0847D94A; Tue, 14 Jul 2026 14:05:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037950; cv=none; b=DL8HvfDTPbwlj/dH2suYPPcK20odRlERNQ+Xc0KZ+nx73Be18y6IT3Ky7B3vTxDJ3rbC700K1ZKv93uoxcXKZ9HvqSGAYkNI+Xp4BSYEAIN1lORrkBKqUVN964p1YntzX66OqfSs86HE5lIZ9UjmKnIrvXsbY9TAwL6pme/VB38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037950; c=relaxed/simple; bh=81hPHNKy6+kTl2+35lvgI+YoSAV+lxYrdESi+BeMQ9o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=npEW+pV2IU0SXV6dosu5XNEj394Zz+4vIVdjOgucGbPL0X5AcbiV1qz41hPjOittBwc6HDIlmn++NoghDa3ZdnIkGnuaglgABAx8E49eIUvF//6UQWhj6DRO+2AQlr4J3XSXsxUDpOa1milepqM1Vch8uZu3LRTwuOUR400z3oQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=J3x7thz6; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="J3x7thz6" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8D4221570; Tue, 14 Jul 2026 07:05:44 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 656AE3F7B4; Tue, 14 Jul 2026 07:05:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037948; bh=81hPHNKy6+kTl2+35lvgI+YoSAV+lxYrdESi+BeMQ9o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=J3x7thz6DDIFd0T672gJo0MMnvLqrsR4ffqXjRuw6y/FJl0Sv4brx2AvsrenCXyub hNeHOpm1dGW6Ol7r4E98ejCd2H2xHFjmSYxf0TFC/EKx6I3nhvG3tmBb0uG3LlhJwX CsqR3L3Byysgiom9B50gJLtZIUOotRrLJXVN3jH4= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:54 +0100 Subject: [PATCH 05/22] arm64: mm: use mm_is_kernel() for kernel mm checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-5-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=3632; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=81hPHNKy6+kTl2+35lvgI+YoSAV+lxYrdESi+BeMQ9o=; b=x1sfUWl36JCNbyA4SXGcEWPKjJ2W9GBoHx+AU6SimhVKBjyOGOssy6XRkSm07LMGEZVJbSnP4 NXfCyMO7l0VD8qsDQe1L21uTIP7w+5/eot3+ExiUATLVcbhzhw7kG6L X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. In some cases, such as show_pte(), the handling is truly specific to init_mm and we leave those comparisons with &init_mm unchanged. No functional change, as only init_mm has MMF_KERNEL set for now. mm_is_user() will eventually be replaced with !mm_is_kernel(), once efi_mm is also marked with MMF_KERNEL. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/arm64/include/asm/pgalloc.h | 10 +++++----- arch/arm64/mm/contpte.c | 2 +- arch/arm64/mm/hugetlbpage.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/arm64/include/asm/pgalloc.h b/arch/arm64/include/asm/pgal= loc.h index 1b4509d3382c..33db4fa3c619 100644 --- a/arch/arm64/include/asm/pgalloc.h +++ b/arch/arm64/include/asm/pgalloc.h @@ -30,7 +30,7 @@ static inline void pud_populate(struct mm_struct *mm, pud= _t *pudp, pmd_t *pmdp) { pudval_t pudval =3D PUD_TYPE_TABLE | PUD_TABLE_AF; =20 - pudval |=3D (mm =3D=3D &init_mm) ? PUD_TABLE_UXN : PUD_TABLE_PXN; + pudval |=3D mm_is_kernel(mm) ? PUD_TABLE_UXN : PUD_TABLE_PXN; __pud_populate(pudp, __pa(pmdp), pudval); } #else @@ -52,7 +52,7 @@ static inline void p4d_populate(struct mm_struct *mm, p4d= _t *p4dp, pud_t *pudp) { p4dval_t p4dval =3D P4D_TYPE_TABLE | P4D_TABLE_AF; =20 - p4dval |=3D (mm =3D=3D &init_mm) ? P4D_TABLE_UXN : P4D_TABLE_PXN; + p4dval |=3D mm_is_kernel(mm) ? P4D_TABLE_UXN : P4D_TABLE_PXN; __p4d_populate(p4dp, __pa(pudp), p4dval); } =20 @@ -81,7 +81,7 @@ static inline void pgd_populate(struct mm_struct *mm, pgd= _t *pgdp, p4d_t *p4dp) { pgdval_t pgdval =3D PGD_TYPE_TABLE | PGD_TABLE_AF; =20 - pgdval |=3D (mm =3D=3D &init_mm) ? PGD_TABLE_UXN : PGD_TABLE_PXN; + pgdval |=3D mm_is_kernel(mm) ? PGD_TABLE_UXN : PGD_TABLE_PXN; __pgd_populate(pgdp, __pa(p4dp), pgdval); } =20 @@ -108,7 +108,7 @@ static inline void __pmd_populate(pmd_t *pmdp, phys_add= r_t ptep, static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmdp, pte_t *ptep) { - VM_BUG_ON(mm && mm !=3D &init_mm); + VM_BUG_ON(mm && !mm_is_kernel(mm)); __pmd_populate(pmdp, __pa(ptep), PMD_TYPE_TABLE | PMD_TABLE_AF | PMD_TABLE_UXN); } @@ -116,7 +116,7 @@ pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmdp, = pte_t *ptep) static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmdp, pgtable_t ptep) { - VM_BUG_ON(mm =3D=3D &init_mm); + VM_BUG_ON(mm_is_kernel(mm)); __pmd_populate(pmdp, page_to_phys(ptep), PMD_TYPE_TABLE | PMD_TABLE_AF | PMD_TABLE_PXN); } diff --git a/arch/arm64/mm/contpte.c b/arch/arm64/mm/contpte.c index 2de12656b4d8..ad5c04cf66ff 100644 --- a/arch/arm64/mm/contpte.c +++ b/arch/arm64/mm/contpte.c @@ -18,7 +18,7 @@ static inline bool mm_is_user(struct mm_struct *mm) */ if (unlikely(mm_is_efi(mm))) return false; - return mm !=3D &init_mm; + return !mm_is_kernel(mm); } =20 static inline pte_t *contpte_align_down(pte_t *ptep) diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index 25f04d01aabe..4d054fadf51c 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -212,7 +212,7 @@ static void clear_flush(struct mm_struct *mm, for (i =3D 0; i < ncontig; i++, addr +=3D pgsize, ptep++) __ptep_get_and_clear_anysz(mm, addr, ptep, pgsize); =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) flush_tlb_kernel_range(saddr, addr); else __flush_hugetlb_tlb_range(&vma, saddr, addr, pgsize, TLBF_NOWALKCACHE); --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2C5BD4418DC; Tue, 14 Jul 2026 14:05:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037958; cv=none; b=C06iRmo8yzUD+a6bJ7iqlGtUYrIjW88rroh2gJCVL3vRcqctmXNjcMAQubUfBD6zOKQqSIjemv5mcBAMwQl0MM71DKyV1KhegFiWSIb8laF6RCrSPH+zO/Nroe1fzB6qSyQbug1Nwh3oBFbO3zF5AcoVJe9LESyWoIfzFOHGig4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037958; c=relaxed/simple; bh=VE+lHAHWK4dpsc9V3W/UPtkE4aBmXym2FNHO+k6axB4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZSLb/9kbTU6BpeMbLkhO6NQyRO/hbw8zTw5Mcz2INMuwzm426f0FOMrZ0S6q6U2zMaNyE5t328EKgGCCh6Sh2FiYnUxqNMZ2719jF8dkXI++GkiBBFiuHHzLYIB3rHJRwLtjfp2qbFU53LcAj/iSzW9/Cv4OM443vpN83a08Pb4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=GBHbIxSv; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="GBHbIxSv" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4BC9F1576; Tue, 14 Jul 2026 07:05:52 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 21DE63F7B4; Tue, 14 Jul 2026 07:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037956; bh=VE+lHAHWK4dpsc9V3W/UPtkE4aBmXym2FNHO+k6axB4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GBHbIxSv6yx6lpCATNlxlwrGWzZkjE50qqNWmTtSfC55Qij6ibNwZaI+5R9T7uiWd i/VIOmdvMtutA0FQwIru3Tr0+8ZG+pxZmXfmR5SvbAQB1BQh7BgutmvfbwIFq0TwaI MOql+/rIhlaU8c8MGd+SNjdFNyN/NAYTkzmX9Pu0= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:55 +0100 Subject: [PATCH 06/22] loongarch: mm: use mm_is_kernel() in switch_mm_irqs_off() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-6-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=1057; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=VE+lHAHWK4dpsc9V3W/UPtkE4aBmXym2FNHO+k6axB4=; b=vNqbzx2iMvV1fGidU2iKtjDvRxNSiS8E7MvYIjkLSIIndPb41plWi7UyNf7PU14qsGJzzjbPF x7c/ZLWX2B8DhFd7ct6QVQiE/yCdMoFkL2mbSBPv7/C7wV2jkBlaVC2 X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/loongarch/include/asm/mmu_context.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/loongarch/include/asm/mmu_context.h b/arch/loongarch/incl= ude/asm/mmu_context.h index 304363bd3935..6d51f11427b4 100644 --- a/arch/loongarch/include/asm/mmu_context.h +++ b/arch/loongarch/include/asm/mmu_context.h @@ -95,7 +95,7 @@ static inline void switch_mm_irqs_off(struct mm_struct *p= rev, struct mm_struct * if (!asid_valid(next, cpu)) get_new_mmu_context(next, cpu, &need_flush); =20 - if (next !=3D &init_mm) + if (!mm_is_kernel(next)) atomic_update_pgd_asid(cpu_asid(cpu, next), (unsigned long)next->pgd); else atomic_update_pgd_asid(cpu_asid(cpu, next), (unsigned long)invalid_pg_di= r); --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F19824418DC; Tue, 14 Jul 2026 14:06:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037966; cv=none; b=iOSjB2NSbmz/gNQncNEkleC22l9RnIkX9dbAg3UW+D6RpPPJ6domoSWUWrGm+I05SM2iYZ1j+J1LL2iTm0gcTy7nJ1F22u2pvr85G8LWe8yWeIAClRRL03wKwIvmut0Pd5AJTzn3KpXoVx7iJ1dSgAL8TSGdVYh0XhpxUGeayG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037966; c=relaxed/simple; bh=n3wqVkoRE0XrCf49SeUd/3zMbBniK8cKIbHpgqpyHxU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KQaBvXoGgHwdVfE4VYH2MmLPQUnkPRkB99CAn47i+26iYyEyBGZ8lOFKKORRD7+Nz7LxANraDAjonAV0zUfDDcvbMwz1t3DUu+Oe+2PY/qT0NLD21jagaDu0M7dch000NNQ/f6pXxbu+P4COzj9O39JgSieBIKzeSN6f9x75oW4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=gLbEbpAv; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="gLbEbpAv" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 07FEF1576; Tue, 14 Jul 2026 07:06:00 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D4CBA3F7B4; Tue, 14 Jul 2026 07:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037964; bh=n3wqVkoRE0XrCf49SeUd/3zMbBniK8cKIbHpgqpyHxU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gLbEbpAvFzCqe/uk00cuBVEyk86ImDFUKg9+DAxOfE+6fXLZiWwmczq+TYqacIij9 dzObBv+9qrGLnOJGKWs94LTFpTVFSye5m9UY9LBRCiPUb+bTNDGQ4mEUs5d8asduh+ urPZbHaQ9KgT1hC0YSHV6N5wgcZRQb27Ns4Uao8I= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:56 +0100 Subject: [PATCH 07/22] parisc: mm: use mm_is_kernel() for kernel mm checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-7-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=2128; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=n3wqVkoRE0XrCf49SeUd/3zMbBniK8cKIbHpgqpyHxU=; b=NiOLSLM4Bju3NE/MJk1JSg+adlOz6kSqOBN5Q1Ojo91j2+7DutkOZ20lco5JkeakYm3HADh4V WLZkvqMg2QAA0cYBkRVmiWNUb4u1J8+jQygFQcLGfYdNrt+hwaqOb94 X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/parisc/include/asm/mmu_context.h | 2 +- arch/parisc/include/asm/pgalloc.h | 2 +- arch/parisc/include/asm/tlbflush.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/parisc/include/asm/mmu_context.h b/arch/parisc/include/as= m/mmu_context.h index c9187fe836a3..e265da67559e 100644 --- a/arch/parisc/include/asm/mmu_context.h +++ b/arch/parisc/include/asm/mmu_context.h @@ -87,7 +87,7 @@ static inline void activate_mm(struct mm_struct *prev, st= ruct mm_struct *next) * already, so we should be OK. */ =20 - BUG_ON(next =3D=3D &init_mm); /* Should never happen */ + BUG_ON(mm_is_kernel(next)); /* Should never happen */ =20 if (next->context.space_id =3D=3D 0) next->context.space_id =3D alloc_sid(); diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pg= alloc.h index 3b84ee93edaa..9f09cc4fa5dd 100644 --- a/arch/parisc/include/asm/pgalloc.h +++ b/arch/parisc/include/asm/pgalloc.h @@ -34,7 +34,7 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, = unsigned long address) struct ptdesc *ptdesc; gfp_t gfp =3D GFP_PGTABLE_USER; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp =3D GFP_PGTABLE_KERNEL; ptdesc =3D pagetable_alloc(gfp, PMD_TABLE_ORDER); if (!ptdesc) diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/t= lbflush.h index 5ffd7c17f593..a5a6cfff295c 100644 --- a/arch/parisc/include/asm/tlbflush.h +++ b/arch/parisc/include/asm/tlbflush.h @@ -35,7 +35,7 @@ int __flush_tlb_range(unsigned long sid, =20 static inline void flush_tlb_mm(struct mm_struct *mm) { - BUG_ON(mm =3D=3D &init_mm); /* Should never happen */ + BUG_ON(mm_is_kernel(mm)); /* Should never happen */ =20 #if 1 || defined(CONFIG_SMP) /* Except for very small threads, flushing the whole TLB is --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B728847D94D; Tue, 14 Jul 2026 14:06:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037974; cv=none; b=SL6Iok1f+jzxnLQPuTtMdgyrw1wObwY9RxQCmRxpT73ybUwPN4vgU6tJdfgoKlPM9v1LcDOSfHKB8rbh42mfnhnB0F0AZNHfMQthPc+XyuepJnbp9xuvTv+UGRrY2q9tKmTFqapWRpL39vJMfvYaGK6USBiTFrIFEJfmSmKBaB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037974; c=relaxed/simple; bh=wjWPKE4gokVm0n43Fz8OrYiTdEX4ZJIt+9rA3rzslZA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rw6w7MZJbACmuJgp4s+3IwRtl2R86wwVcDiDfv0+MRpASFYvJtjJ97K/FXDFxeXTEyljNPK+372X6fImBtu8thzzH9s5cSuj+RuvsLdXGjF9CUkcHoTFF//gIUdgWgPW9fhIMFkO6O5rU7wu1Oa2gbyV7eEUs2pPzV4lJ43oG+g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=UsBpoovP; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="UsBpoovP" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BBABA1576; Tue, 14 Jul 2026 07:06:07 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 923CB3F7B4; Tue, 14 Jul 2026 07:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037972; bh=wjWPKE4gokVm0n43Fz8OrYiTdEX4ZJIt+9rA3rzslZA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UsBpoovPpZ85RSIZfXEnSBfVHOZtFnPkX47Kj5gg3LsgzJNhCVgTUWCtTOeVOPaNp HKjlV2fnQGGYMeGqcjyozlJa7a3QA1IlDMrT8hf3JRzN2w2i+9FSRlqOzr8/QB6/Qf Q0z0BAmzTk1fTpNEZ3NiarWVCe9KoxmszHFZ5aSw= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:57 +0100 Subject: [PATCH 08/22] powerpc: mm: use mm_is_kernel() for kernel mm checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-8-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=2458; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=wjWPKE4gokVm0n43Fz8OrYiTdEX4ZJIt+9rA3rzslZA=; b=mGXIMwx7mP+wc+PdjO+ERefisoZsiZf5NJNBVQYllixOIGkiZykJ/6wIrBXI36cbJ4lbGAtZA wL42KEsLctGAHh95szgDEyWgp6+51aO6Iy65UQOmRkiEbYbzhv701ws X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/powerpc/include/asm/pgalloc.h | 2 +- arch/powerpc/mm/book3s64/pgtable.c | 2 +- arch/powerpc/mm/mmu_context.c | 2 +- arch/powerpc/mm/pgtable.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/include/asm/pgalloc.h b/arch/powerpc/include/asm/= pgalloc.h index 3a971e2a8c73..88acccc5b06e 100644 --- a/arch/powerpc/include/asm/pgalloc.h +++ b/arch/powerpc/include/asm/pgalloc.h @@ -7,7 +7,7 @@ #ifndef MODULE static inline gfp_t pgtable_gfp_flags(struct mm_struct *mm, gfp_t gfp) { - if (unlikely(mm =3D=3D &init_mm)) + if (unlikely(mm_is_kernel(mm))) return gfp; return gfp | __GFP_ACCOUNT; } diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/= pgtable.c index 85ab6723c8f2..eb365f7c8907 100644 --- a/arch/powerpc/mm/book3s64/pgtable.c +++ b/arch/powerpc/mm/book3s64/pgtable.c @@ -395,7 +395,7 @@ static pmd_t *__alloc_for_pmdcache(struct mm_struct *mm) struct ptdesc *ptdesc; gfp_t gfp =3D GFP_KERNEL_ACCOUNT | __GFP_ZERO; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp &=3D ~__GFP_ACCOUNT; ptdesc =3D pagetable_alloc(gfp, 0); if (!ptdesc) diff --git a/arch/powerpc/mm/mmu_context.c b/arch/powerpc/mm/mmu_context.c index 3e3af29b4523..b51934c511f3 100644 --- a/arch/powerpc/mm/mmu_context.c +++ b/arch/powerpc/mm/mmu_context.c @@ -48,7 +48,7 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm= _struct *next, =20 /* Mark this context has been used on the new CPU */ if (!cpumask_test_cpu(cpu, mm_cpumask(next))) { - VM_WARN_ON_ONCE(next =3D=3D &init_mm); + VM_WARN_ON_ONCE(mm_is_kernel(next)); cpumask_set_cpu(cpu, mm_cpumask(next)); inc_mm_active_cpus(next); =20 diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index a9be337be3e4..d04f4fecfc7c 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -393,7 +393,7 @@ void assert_pte_locked(struct mm_struct *mm, unsigned l= ong addr) pte_t *pte; spinlock_t *ptl; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) return; pgd =3D mm->pgd + pgd_index(addr); BUG_ON(pgd_none(*pgd)); --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 60B8547D931; Tue, 14 Jul 2026 14:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037981; cv=none; b=S+JQKclxjjfhhhFAtJD2EAMT6lCaHTncKrsrTs1Br/3V6fmNh2PbU/JpySfa8zw2vzfyuITfDEGl37auJ+r6vnlo96b19lOLf1RzHrBXS87LVDkChTUi/tEVQvCbZdr/tVcsPbIlFQiNkkqmy6MuihzaNezuivFeHUqYnyRnBM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037981; c=relaxed/simple; bh=NDusZRNCWoEozZsjG5aWosyCUDI8Y1KKdd/tV+nqCY0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lH7Q43amPVPrBiVbRlr17kpUvc+HjxiTG+SlmZziwQbReWn6m/DyqGv7ajMlkKvhfiaIvukgXiBOPnNdrYBiT5ftn8WWJVsbJEV6xNVQrouCRnClf8VWxtapW0HZGPA7VYovsk0H75s/wUnDcG0ewNbmrFM+i/26Go9z09zdqIQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=g68p8jn2; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="g68p8jn2" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 78E4E1576; Tue, 14 Jul 2026 07:06:15 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4FE263F7B4; Tue, 14 Jul 2026 07:06:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037979; bh=NDusZRNCWoEozZsjG5aWosyCUDI8Y1KKdd/tV+nqCY0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=g68p8jn2r/BRs15OVDSJM5PC0vX+xZEjL9qs6O4bNrlLAmFr23nxaTMwPJrtgFVSe PO42BSv3F1n/0/KY29fSo68pViH3svUbemsg+2g8ZALHR7Gb34DvnaAe4yB7K0yUyn X1Qg4PRgk23qfvxdXOP4RJxy06FeoAcjmt/U8Rmo= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:58 +0100 Subject: [PATCH 09/22] s390: mm: use mm_is_kernel() for kernel mm checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-9-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=2701; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=NDusZRNCWoEozZsjG5aWosyCUDI8Y1KKdd/tV+nqCY0=; b=EN7VJwlPWQ2mLOV0RQXIAGmFgLbZqozbS12jiAz8t5flCb4LBC8CQLf9qAbAsIdiWxuJ/h34z +bgdLqbZMrPAgQeOceVSuzYyrvq4LTVvYRTcF4wG9fcsRmwk6IO2SXA X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/s390/include/asm/mmu_context.h | 2 +- arch/s390/include/asm/pgtable.h | 6 +++--- arch/s390/mm/pgalloc.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mm= u_context.h index bd1ef5e2d2eb..675f270d0b70 100644 --- a/arch/s390/include/asm/mmu_context.h +++ b/arch/s390/include/asm/mmu_context.h @@ -69,7 +69,7 @@ static inline void switch_mm_irqs_off(struct mm_struct *p= rev, struct mm_struct * { int cpu =3D smp_processor_id(); =20 - if (next =3D=3D &init_mm) + if (mm_is_kernel(next)) get_lowcore()->user_asce =3D s390_invalid_asce; else get_lowcore()->user_asce.val =3D next->context.asce; diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtabl= e.h index e882663a58e7..f7741e6b417e 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h @@ -1836,21 +1836,21 @@ static inline int has_transparent_hugepage(void) #ifdef CONFIG_PAGE_TABLE_CHECK static inline bool pte_user_accessible_page(struct mm_struct *mm, unsigned= long addr, pte_t pte) { - VM_BUG_ON(mm =3D=3D &init_mm); + VM_BUG_ON(mm_is_kernel(mm)); =20 return pte_present(pte); } =20 static inline bool pmd_user_accessible_page(struct mm_struct *mm, unsigned= long addr, pmd_t pmd) { - VM_BUG_ON(mm =3D=3D &init_mm); + VM_BUG_ON(mm_is_kernel(mm)); =20 return pmd_leaf(pmd) && (pmd_val(pmd) & _SEGMENT_ENTRY_READ); } =20 static inline bool pud_user_accessible_page(struct mm_struct *mm, unsigned= long addr, pud_t pud) { - VM_BUG_ON(mm =3D=3D &init_mm); + VM_BUG_ON(mm_is_kernel(mm)); =20 return pud_leaf(pud); } diff --git a/arch/s390/mm/pgalloc.c b/arch/s390/mm/pgalloc.c index 7ac44543e051..d0456b7e73d4 100644 --- a/arch/s390/mm/pgalloc.c +++ b/arch/s390/mm/pgalloc.c @@ -20,7 +20,7 @@ unsigned long *crst_table_alloc_noprof(struct mm_struct *= mm) struct ptdesc *ptdesc; unsigned long *table; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp &=3D ~__GFP_ACCOUNT; ptdesc =3D pagetable_alloc_noprof(gfp, CRST_ALLOC_ORDER); if (!ptdesc) @@ -120,7 +120,7 @@ unsigned long *page_table_alloc_noprof(struct mm_struct= *mm) struct ptdesc *ptdesc; unsigned long *table; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp &=3D ~__GFP_ACCOUNT; ptdesc =3D pagetable_alloc_noprof(gfp, 0); if (!ptdesc) --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CE15647DD7A; Tue, 14 Jul 2026 14:06:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037989; cv=none; b=HM5dCq7dsvU/ZIdNnJbecY+qT72X3zw/rMJVoUBsD9GcFwRjc5zza4FO+Hr6GoJdbG9zVPre+i4NU90li1VFV3tGvNFJR6QWJhN5z73dfOz3gkRbH6CUMMch/6AK7p33so3v1+6fxnkI9ZILM1IZ+g6YvGZkNjmqzhK2FUx10Mk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037989; c=relaxed/simple; bh=0Ls2F5YWtI+Ww29NmMlh3ILvDXBv7NqjYutzPTWlWAY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Dlm3dCKV3g2U9xwnBLULxkerVylNt0waPQhUa2KswyePTsn8cMGool4iiww411fL4PgnJeeQMW3p4ipZvwlSLG31etIUKUeOMTROV4bymdFQoc6iJS/QFCTSkQjwYhPlkdktby/OBL6ASXpwUH6RlzKWaDsUV6p/2Dr7d2BbvYY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Vw/Dcaip; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Vw/Dcaip" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 339AB1576; Tue, 14 Jul 2026 07:06:23 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0D7CA3F7B4; Tue, 14 Jul 2026 07:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037987; bh=0Ls2F5YWtI+Ww29NmMlh3ILvDXBv7NqjYutzPTWlWAY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Vw/DcaipPFO7n11+mYGQ7sNvjiW4bDFKvxM87pb4Zb7kuc57MeI8Zk26C7/35oDk9 zqUNmHcLyquGe9NI65E4Her4eCylK5913yMxY4xf0bE1WBcJGqN4rBz8A8PaHgPJxY 8H47S03cWv8hSaCgq8C8KHighveKeuoCTTOKDHQY= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:03:59 +0100 Subject: [PATCH 10/22] sparc: mm: use mm_is_kernel() for kernel mm checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-10-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=3538; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=0Ls2F5YWtI+Ww29NmMlh3ILvDXBv7NqjYutzPTWlWAY=; b=VJPLQX/cB8CHz8XN2ewL2VVdeyfHItZBmFDR5s9RbTft/6Q4d42mZh1rja83yviws3jmyIGiU WKKijSfDJjoB4fJ0orVPQbnc54Akn8lFl91qUqv6PDas/mRRckHwzdj X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. pgtable_64.h previously forward-declared init_mm to avoid pulling in mm_types.h. It seems that including mm_types.h is not causing troubles any more, so we can also use mm_is_kernel() there and drop the forward declaration. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/sparc/include/asm/mmu_context_64.h | 2 +- arch/sparc/include/asm/pgtable_64.h | 6 ++---- arch/sparc/mm/init_64.c | 2 +- arch/sparc/mm/tlb.c | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/arch/sparc/include/asm/mmu_context_64.h b/arch/sparc/include/a= sm/mmu_context_64.h index 78bbacc14d2d..e88bc61aeb04 100644 --- a/arch/sparc/include/asm/mmu_context_64.h +++ b/arch/sparc/include/asm/mmu_context_64.h @@ -83,7 +83,7 @@ static inline void switch_mm(struct mm_struct *old_mm, st= ruct mm_struct *mm, str int cpu =3D smp_processor_id(); =20 per_cpu(per_cpu_secondary_mm, cpu) =3D mm; - if (unlikely(mm =3D=3D &init_mm)) + if (unlikely(mm_is_kernel(mm))) return; =20 spin_lock_irqsave(&mm->context.lock, flags); diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/p= gtable_64.h index 0837ebbc5dce..960f8bf1ec5a 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h @@ -86,6 +86,7 @@ extern unsigned long VMALLOC_END; #define vmemmap ((struct page *)VMEMMAP_BASE) =20 #include +#include #include =20 bool kern_addr_valid(unsigned long addr); @@ -885,9 +886,6 @@ static inline unsigned long pud_pfn(pud_t pud) #define p4d_set(p4dp, pudp) \ (p4d_val(*(p4dp)) =3D (__pa((unsigned long) (pudp)))) =20 -/* We cannot include at this point yet: */ -extern struct mm_struct init_mm; - /* Actual page table PTE updates. */ void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig, int fullmm, @@ -903,7 +901,7 @@ static void maybe_tlb_batch_add(struct mm_struct *mm, u= nsigned long vaddr, * SUN4V NOTE: _PAGE_VALID is the same value in both the SUN4U * and SUN4V pte layout, so this inline test is fine. */ - if (likely(mm !=3D &init_mm) && pte_accessible(mm, orig)) + if (likely(!mm_is_kernel(mm)) && pte_accessible(mm, orig)) tlb_batch_add(mm, vaddr, ptep, orig, fullmm, hugepage_shift); } =20 diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index 103db4683b16..e0b678349e3a 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c @@ -788,7 +788,7 @@ static void mmu_context_wrap(void) */ mm =3D per_cpu(per_cpu_secondary_mm, cpu); =20 - if (unlikely(!mm || mm =3D=3D &init_mm)) + if (unlikely(!mm || mm_is_kernel(mm))) continue; =20 old_ctx =3D mm->context.sparc64_ctx_val; diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c index 6d9dd5eb1328..47083c287a94 100644 --- a/arch/sparc/mm/tlb.c +++ b/arch/sparc/mm/tlb.c @@ -179,7 +179,7 @@ static void tlb_batch_pmd_scan(struct mm_struct *mm, un= signed long vaddr, static void __set_pmd_acct(struct mm_struct *mm, unsigned long addr, pmd_t orig, pmd_t pmd) { - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) return; =20 if ((pmd_val(pmd) ^ pmd_val(orig)) & _PAGE_PMD_HUGE) { --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CFEAB47DD43; Tue, 14 Jul 2026 14:06:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037997; cv=none; b=G7vQCYeNZoOZhc6W++lqz0f8yrr/bSxpUv7i1lfM5skbPJf5D7qzB+bdI4sG/PTlFHYOEDd51wWl+p3EHuP+5H/F1rvVRMjBoVvH6Yr5eqpJo6KsgFQV/Sn2DEe17byOxcGpe/4Yd5gG7VL4Rqoy0LVx4qf/W8e2/jRmYduF7lE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784037997; c=relaxed/simple; bh=brubU8ipNy1ujnPWOSJsU4D9Csfsl5oNxDWj3XnSBxg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ktRvENGJZedI5axRaBsGg5kMhr16vnF8XcNWWViSrdr5BlTsfeuL25Ie3vfELMW37YEnbMbKfuAfc2Xrl3RUah3SZux82Dz+IbdeJCRcbVmJVJjVgg1gZ2lwOGUPVCsEdlcDyWGCkNrsTjn88eBDElGf8YrNaYNqVZTAHYtG96U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=YzY9thwi; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="YzY9thwi" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E5D6A1576; Tue, 14 Jul 2026 07:06:30 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BE3913F7B4; Tue, 14 Jul 2026 07:06:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784037995; bh=brubU8ipNy1ujnPWOSJsU4D9Csfsl5oNxDWj3XnSBxg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YzY9thwiHc65wNiUxU67y6/tJ7ZmfWCBeoA2a4LNQMo0O7ibHK6ctA9ComeTUEm9C I/qi+0IpZSq41xPb+OZ7Z3/G4uCkw9cLd6IhSMUabwxmOQOqx2sF6D5jJAoetl8ck9 oA5zuyScXswzHCcI9ibhnX1aroPeO+YpvDY2p/3g= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:00 +0100 Subject: [PATCH 11/22] um: mm: use mm_is_kernel() in TLB sync Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-11-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=784; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=brubU8ipNy1ujnPWOSJsU4D9Csfsl5oNxDWj3XnSBxg=; b=/PzTb9tRgc6q7ZO/WLmLmpzghLV5CdRWiA/u95e31NiKnKwzFm+3cKJU2/zrnT5S/P+reJB4V ezvWWMbftRCD/SWI9ofvYfumKl5AhLTyCVWAwhB/2VFq3mOJHXdgNVl X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/um/kernel/tlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/um/kernel/tlb.c b/arch/um/kernel/tlb.c index 1f175716b474..fa34a710203e 100644 --- a/arch/um/kernel/tlb.c +++ b/arch/um/kernel/tlb.c @@ -171,7 +171,7 @@ int um_tlb_sync(struct mm_struct *mm) return 0; =20 ops.mm_idp =3D &mm->context.id; - if (mm =3D=3D &init_mm) { + if (mm_is_kernel(mm)) { ops.mmap =3D kern_map; ops.unmap =3D kern_unmap; } else { --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 78EC847DD43; Tue, 14 Jul 2026 14:06:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038005; cv=none; b=ctFbVVB18lbtefmnfVRdjenb3XQTX3LVxZ6TJn3lGRiqyqeQP9NU8vWxzKmdRGI4Sws1omrYrb1HZgoZV+CjWnarNzdbmj8MMm6aCklbwFaZbTzxP3ZeanBU8NWecKSn9UXT7urbphcLalyw4/jFquYMwLH4tiloUsMVQY6ZYjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038005; c=relaxed/simple; bh=mkvNiLNNU7+2GzQNF8eqTlv1xCMmv8/GPTLyXVohroo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uI1xagh+UCfamEVcRyRck5bKgiw1Q3qlZIB2wFA3hjKIHPaFp3JalgBNL+CiagiLqJn+f9+j7qtyPB+iMyrC/fyEfWxgSYnkPjghTxxW7kXjO9iUHaR46CKroFHcRZ4Vh+6qHjSB2lkHqGIdN7uteedN9N0NaNtFhYYLtNdQy0s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=HIiwhwiW; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="HIiwhwiW" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A1B981576; Tue, 14 Jul 2026 07:06:38 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7BDF53F7B4; Tue, 14 Jul 2026 07:06:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038002; bh=mkvNiLNNU7+2GzQNF8eqTlv1xCMmv8/GPTLyXVohroo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HIiwhwiW5/FaoSRBjo11aX1AZpPuYcroDE7X41LVr/xwN0xxR7sqYi+EShBKHthpF n4f8woYlTVlDt26juvjhHDNOK/I92UerlQVr0VVHNOso4VCLR4Gq0Tj1gOY6PCuWSc FVgEvZfyeKpZuGic61DbMkRghFHRNE75lpgzlmYM= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:01 +0100 Subject: [PATCH 12/22] x86/mm: use mm_is_kernel() for kernel mm checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-12-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=3862; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=mkvNiLNNU7+2GzQNF8eqTlv1xCMmv8/GPTLyXVohroo=; b=TL/ATO2WidViUjXp4JukAFDeik9Bhx9UKyamDJVrFhja594xcdOFPLXtYE8/VvFDMq3oXLjVT 9Ry1qd/NBLGBGmKjBP3mLajDf99Eimk93BsQgUsx2B9iCCZoXZcZow+ X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= The new MMF_KERNEL flag identifies kernel-owned mm's. Checking the flag with mm_is_kernel() is preferred over comparing directly against &init_mm. No functional change, as only init_mm has MMF_KERNEL set for now. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/x86/include/asm/tlbflush.h | 8 ++++---- arch/x86/mm/pgtable.c | 2 +- arch/x86/mm/tlb.c | 9 +++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflus= h.h index 0545fe75c3fa..4af1cf711a60 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -159,10 +159,10 @@ struct tlb_state_shared { * - Actively using an mm. Our CPU's bit will be set in * mm_cpumask(loaded_mm) and is_lazy =3D=3D false; * - * - Not using a real mm. loaded_mm =3D=3D &init_mm. Our CPU's bit - * will not be set in mm_cpumask(&init_mm) and is_lazy =3D=3D false. + * - Not using a real mm. loaded_mm is a kernel mm. Our CPU's bit + * will not be set in mm_cpumask(loaded_mm) and is_lazy =3D=3D false. * - * - Lazily using a real mm. loaded_mm !=3D &init_mm, our bit + * - Lazily using a real mm. loaded_mm is not a kernel mm, our bit * is set in mm_cpumask(loaded_mm), but is_lazy =3D=3D true. * We're heuristically guessing that the CR3 load we * skipped more than makes up for the overhead added by @@ -188,7 +188,7 @@ DECLARE_PER_CPU_SHARED_ALIGNED(struct tlb_state_shared,= cpu_tlbstate_shared); #define enter_lazy_tlb enter_lazy_tlb static __always_inline void enter_lazy_tlb(struct mm_struct *mm, struct ta= sk_struct *tsk) { - if (this_cpu_read(cpu_tlbstate.loaded_mm) =3D=3D &init_mm) + if (mm_is_kernel(this_cpu_read(cpu_tlbstate.loaded_mm))) return; =20 this_cpu_write(cpu_tlbstate_shared.is_lazy, true); diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index f32facdb3035..91d2a6f2ac5a 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -168,7 +168,7 @@ static int preallocate_pmds(struct mm_struct *mm, pmd_t= *pmds[], int count) bool failed =3D false; gfp_t gfp =3D GFP_PGTABLE_USER; =20 - if (mm =3D=3D &init_mm) + if (mm_is_kernel(mm)) gfp &=3D ~__GFP_ACCOUNT; gfp &=3D ~__GFP_HIGHMEM; =20 diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 1023acadd8f8..5517cab8ad00 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -594,7 +594,7 @@ void leave_mm(void) * This needs to happen before any other sanity checks due to * intel_idle's shenanigans. */ - if (loaded_mm =3D=3D &init_mm) + if (mm_is_kernel(loaded_mm)) return; =20 /* Warn if we're not lazy. */ @@ -855,7 +855,7 @@ void switch_mm_irqs_off(struct mm_struct *unused, struc= t mm_struct *next, * cpu_tlbstate_shared.is_lazy whether or not to send an IPI. */ if (IS_ENABLED(CONFIG_DEBUG_VM) && - WARN_ON_ONCE(prev !=3D &init_mm && !is_notrack_mm(prev) && + WARN_ON_ONCE(!mm_is_kernel(prev) && !is_notrack_mm(prev) && !cpumask_test_cpu(cpu, mm_cpumask(next)))) cpumask_set_cpu(cpu, mm_cpumask(next)); =20 @@ -932,7 +932,8 @@ void switch_mm_irqs_off(struct mm_struct *unused, struc= t mm_struct *next, * This way switch_mm() must see the new tlb_gen or * flush_tlb_mm_range() must see the new loaded_mm, or both. */ - if (next !=3D &init_mm && !cpumask_test_cpu(cpu, mm_cpumask(next))) + if (!mm_is_kernel(next) && + !cpumask_test_cpu(cpu, mm_cpumask(next))) cpumask_set_cpu(cpu, mm_cpumask(next)); else smp_mb(); @@ -1134,7 +1135,7 @@ static void flush_tlb_func(void *info) return; } =20 - if (unlikely(loaded_mm =3D=3D &init_mm)) + if (unlikely(mm_is_kernel(loaded_mm))) return; =20 /* Reload the ASID if transitioning into or out of a global ASID */ --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4D15B47D93A; Tue, 14 Jul 2026 14:06:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038013; cv=none; b=Jl1PDwUy/uYSLglBJOhVsSlm4QduUBcYHiZvENAHW8UmqvyMNgn216KrIwCAv7YXlxz1Hm4b0G560S2E9Qmr+oVtzM4XKl9pSCMUnyhhrbJdyVOlAk9tKyj9y7c9Bq2zWgMncX0bdn8P895bZFTTF1S525B41WuIk+R+5/fie8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038013; c=relaxed/simple; bh=xWTuMpf6qcthpUhdZ9Vhm6UlW2cWk5z6914Plajhwho=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lNlmrcRdba2wgcLa756NzBDBmXZh2CRiNENw2DksqFyRmhejuWKsdG04G94zKQBqzg7yInworiRPcAllPSUOkzAn0wyU1hB00EGmQKXOFEDh8J9jrWd6z5bEdr7VB9IR95BH9mjEJyQsRdd0tWIBLDN6gSzF/deeL1pcpsRLNgM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=GMJ+Mweg; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="GMJ+Mweg" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 608D21C00; Tue, 14 Jul 2026 07:06:46 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3991D3F7B4; Tue, 14 Jul 2026 07:06:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038010; bh=xWTuMpf6qcthpUhdZ9Vhm6UlW2cWk5z6914Plajhwho=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GMJ+Mweg4iK/hY2NAgr6zHJe6LPOAI5rsbTNiAYQyxWefiCu+6VoxAQ21IJMDkVx+ ivh2GnjSQemn2gdz2SposUZ6wFQonR0LDcZWwnq1rZX1jAwRhXlTvacd46t1gd3VoM 7DeK6ToDs/ry10Z8LOV9mjtgQLtlBMud0j8fDq/U= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:02 +0100 Subject: [PATCH 13/22] mm: account page table pages when allocated Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-13-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=2350; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=xWTuMpf6qcthpUhdZ9Vhm6UlW2cWk5z6914Plajhwho=; b=Xnk+oBg7ELc/ZeSLJzK7tAUlR2bpnh9Zc229tTiVuKMeFbivMucrP27RTRDStMzPBnxxJrXcn geH5EZLthaDBgWisWH5/sH0N2po6PG3n0k30stRCmsudF2ar5ckSV8d X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= As a step towards removing pagetable ctor/dtor calls for kernel mm's, move the memory accounting from the ctor/dtor to pagetable_{alloc,free}. The ctor is normally called after pagetable_alloc() (and dtor before pagetable_free()) so this patch should have no functional effect in most cases. Where calls to ctor/dtor are currently missing (e.g. x86's split_large_page()), this patch should improve the accounting. This patch is based on Matthew's earlier implementation linked below, with the difference that when freeing the accounting is updated in __pagetable_free(), meaning that the update is delayed until the pages are actually freed in the CONFIG_ASYNC_KERNEL_PGTABLE_FREE case. This shouldn't matter in practice. Suggested-by: "Matthew Wilcox (Oracle)" Link: https://lore.kernel.org/r/20251113140448.1814860-3-willy@infradead.org Signed-off-by: Kevin Brodsky --- include/linux/mm.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index b336eb32faa0..361a0d7b74c5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3681,6 +3681,11 @@ static inline struct ptdesc *pagetable_alloc_noprof(= gfp_t gfp, unsigned int orde { struct page *page =3D alloc_pages_noprof(gfp | __GFP_COMP, order); =20 + if (!page) + return NULL; + + lruvec_stat_add_folio(page_folio(page), NR_PAGETABLE); + return page_ptdesc(page); } #define pagetable_alloc(...) alloc_hooks(pagetable_alloc_noprof(__VA_ARGS_= _)) @@ -3689,6 +3694,8 @@ static inline void __pagetable_free(struct ptdesc *pt) { struct page *page =3D ptdesc_page(pt); =20 + lruvec_stat_sub_folio(page_folio(page), NR_PAGETABLE); + __free_pages(page, compound_order(page)); } =20 @@ -3797,7 +3804,6 @@ static inline void __pagetable_ctor(struct ptdesc *pt= desc) struct folio *folio =3D ptdesc_folio(ptdesc); =20 __folio_set_pgtable(folio); - lruvec_stat_add_folio(folio, NR_PAGETABLE); } =20 static inline void pagetable_dtor(struct ptdesc *ptdesc) @@ -3806,7 +3812,6 @@ static inline void pagetable_dtor(struct ptdesc *ptde= sc) =20 ptlock_free(ptdesc); __folio_clear_pgtable(folio); - lruvec_stat_sub_folio(folio, NR_PAGETABLE); } =20 static inline void pagetable_dtor_free(struct ptdesc *ptdesc) --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E102047F2ED; Tue, 14 Jul 2026 14:06:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038021; cv=none; b=WD5fvzheNk5MKuoNrVg2Smw/dopp4ADfODXRe76uD+TmTlVUuQToWU/AHEUXtbzmiZ8R4e3ipZFKqgiK1jzCHJsnQ8n1/qazV1wBA/MdJmC4ohlSAwlMQvV2b0Tqf6WyEJ57Qz3mIYlzQvKzLmbBM2q+PDvOmRGyX6UvHcoKt/0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038021; c=relaxed/simple; bh=4PNxqxq/jrUer27xvNkwvequvxQnPhBMXV3o8mC51Ps=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hYsEHoJ10igxdiVwr7vkC6XAMOAz89c1eslT80wtZWHLuSyPzZkeuLGL5t/QeWoLVF8JdMiJ4p2PFIeD02sGSOlXcKhXNhwOVR+QVpYKaXhzB4LfLA5R0P/YzUUy/QPCr2MFrF/cK0eMNoXns2V+JrJ+UIc+Y+HN8z12+pkef6A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=WLxWEHcb; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="WLxWEHcb" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 192361576; Tue, 14 Jul 2026 07:06:54 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EB3453FBB1; Tue, 14 Jul 2026 07:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038018; bh=4PNxqxq/jrUer27xvNkwvequvxQnPhBMXV3o8mC51Ps=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WLxWEHcbiO2GB5LbtNB+92/zwEdWv+8J6pCRQbs3PGmarOdTkL8G1gUMIDPggJIxD N9phhhgOR7QXBCkkB6FWwKpw6kiO73Y49hy9kAZeBD1ExbuR501MLF5gHb3/X1UjRF 0YbOoaXts+8XwZ3/78QN/pRZ3IolUppQVMb9mRqM= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:03 +0100 Subject: [PATCH 14/22] mm: set page table page type when allocated Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-14-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=3368; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=4PNxqxq/jrUer27xvNkwvequvxQnPhBMXV3o8mC51Ps=; b=0VdQOf0nra1WPYggXNBDDOliZvhTj/vQmWZ9BxkvIcGSO9bbshMd8ZPkLRqWmNwzRE1zk4sMb RKD72ZNcXaiBd0YaTV+GgCHvQw7s/IzNuDs0JxkPVAN8TuJt7kaNkpn X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= As a step towards removing pagetable ctor/dtor calls for kernel mm's, move the page type updates from the ctor/dtor to pagetable_{alloc,free}. __pagetable_ctor() is now empty so remove it; pagetable_{pud,p4d,pgd}_ctor() will be removed at a later stage. The ctor is normally called after pagetable_alloc() (and dtor before pagetable_free()) so this patch should have no functional effect in most cases. Where calls to ctor/dtor are currently missing (e.g. x86's split_large_page()), this patch will ensure the page type is set correctly. This patch is based on Matthew's earlier implementation linked below, with the difference that when freeing the page type is cleared in __pagetable_free(), meaning that the update is delayed until the pages are actually freed in the CONFIG_ASYNC_KERNEL_PGTABLE_FREE case. This shouldn't matter in practice. Suggested-by: "Matthew Wilcox (Oracle)" Link: https://lore.kernel.org/r/20251113140448.1814860-4-willy@infradead.org Signed-off-by: Kevin Brodsky --- include/linux/mm.h | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 361a0d7b74c5..94f0fb1c662a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3684,6 +3684,7 @@ static inline struct ptdesc *pagetable_alloc_noprof(g= fp_t gfp, unsigned int orde if (!page) return NULL; =20 + __folio_set_pgtable(page_folio(page)); lruvec_stat_add_folio(page_folio(page), NR_PAGETABLE); =20 return page_ptdesc(page); @@ -3694,6 +3695,7 @@ static inline void __pagetable_free(struct ptdesc *pt) { struct page *page =3D ptdesc_page(pt); =20 + __folio_clear_pgtable(page_folio(page)); lruvec_stat_sub_folio(page_folio(page), NR_PAGETABLE); =20 __free_pages(page, compound_order(page)); @@ -3799,19 +3801,9 @@ static inline bool ptlock_init(struct ptdesc *ptdesc= ) { return true; } static inline void ptlock_free(struct ptdesc *ptdesc) {} #endif /* defined(CONFIG_SPLIT_PTE_PTLOCKS) */ =20 -static inline void __pagetable_ctor(struct ptdesc *ptdesc) -{ - struct folio *folio =3D ptdesc_folio(ptdesc); - - __folio_set_pgtable(folio); -} - static inline void pagetable_dtor(struct ptdesc *ptdesc) { - struct folio *folio =3D ptdesc_folio(ptdesc); - ptlock_free(ptdesc); - __folio_clear_pgtable(folio); } =20 static inline void pagetable_dtor_free(struct ptdesc *ptdesc) @@ -3825,7 +3817,6 @@ static inline bool pagetable_pte_ctor(struct mm_struc= t *mm, { if (!mm_is_kernel(mm) && !ptlock_init(ptdesc)) return false; - __pagetable_ctor(ptdesc); return true; } =20 @@ -3917,7 +3908,6 @@ static inline bool pagetable_pmd_ctor(struct mm_struc= t *mm, if (!mm_is_kernel(mm) && !pmd_ptlock_init(ptdesc)) return false; ptdesc_pmd_pts_init(ptdesc); - __pagetable_ctor(ptdesc); return true; } =20 @@ -3942,17 +3932,14 @@ static inline spinlock_t *pud_lock(struct mm_struct= *mm, pud_t *pud) =20 static inline void pagetable_pud_ctor(struct ptdesc *ptdesc) { - __pagetable_ctor(ptdesc); } =20 static inline void pagetable_p4d_ctor(struct ptdesc *ptdesc) { - __pagetable_ctor(ptdesc); } =20 static inline void pagetable_pgd_ctor(struct ptdesc *ptdesc) { - __pagetable_ctor(ptdesc); } =20 extern void __init pagecache_init(void); --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 85B1047DD4E; Tue, 14 Jul 2026 14:07:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038028; cv=none; b=SpltLjqpvGf0/DBuX4gi2e5r1jPkTGxXXmKmlvimqCjiPU+Sg2A/2eKl4+r8dH4GWUKwn8Uw1LmGNn628j3C/QJEAQ7KpQmlC5Tdj5yP4vC8W0UOnQzTTOlLmWF+KoZOWnIs8MOnHBSifNlcWGH6laME9RkgUYdYpUeuDprVxQk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038028; c=relaxed/simple; bh=wRRvDY7vvj6o45l8yT2Q7WPIKaOL0Wfu1AKN4gUTBNM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tyPfUOhu2QhTHs71k3HVbKIAtF2Hk7viqAEVcdNPe3+vMPDDKNVX2riTyMzLL2BoEuN64EN7fgBmGTUfiMDSJWZtv4kCIBD9nUBf4J84X9ii30DRn9rZl3gXYpKWtoC8JecILNrVD9UwqgiqurtPAD2r+CRB+Y4NlTGKcmC7P6E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=CCHuQj4b; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="CCHuQj4b" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CE5F91C25; Tue, 14 Jul 2026 07:07:01 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A6BF83F7B4; Tue, 14 Jul 2026 07:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038026; bh=wRRvDY7vvj6o45l8yT2Q7WPIKaOL0Wfu1AKN4gUTBNM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CCHuQj4boJkfZHO19ek7AVQhcn2j5x9Inj92YhvCDOQNMYxw1wJHqVP3lNtmrXDor z8dfztuTF5HxmmtkzWEn0bGB/ntiIdARdTp3OUTIiy6d1Pv6qDLGuwuR1khXjO+Vzy 5ViCvZtIVrztie1QTQbSWYbDcViyYQGhZmv5eaSk= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:04 +0100 Subject: [PATCH 15/22] mm: only initialise pt_share_count for user pgtables Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-15-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=1093; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=wRRvDY7vvj6o45l8yT2Q7WPIKaOL0Wfu1AKN4gUTBNM=; b=Ly1CUGmQU4MNOAvYijXTm6a0Oy5bg25WoXD9BoAv+N4SapepeLDfsykLmzz2cpJ5XS9tuoOVI p8vbo57maMnDOD6whiBPPJLuCq0Skgv9I5RprwD5SM3O65zdB1a2N0T X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= ptdesc_pmd_pts_init() initialises the pt_share_count ptdesc field. That field is only used for hugetlb tracking purposes, so there is no need to initialise it for kernel page tables. Skip the call for kernel page tables, like pmd_ptlock_init(). From now on pagetable_*_ctor() and pagetable_dtor() do nothing for kernel page tables. Signed-off-by: Kevin Brodsky Acked-by: David Hildenbrand (Arm) --- include/linux/mm.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 94f0fb1c662a..b217ccbed5a3 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3905,9 +3905,12 @@ static inline spinlock_t *pmd_lock(struct mm_struct = *mm, pmd_t *pmd) static inline bool pagetable_pmd_ctor(struct mm_struct *mm, struct ptdesc *ptdesc) { - if (!mm_is_kernel(mm) && !pmd_ptlock_init(ptdesc)) - return false; - ptdesc_pmd_pts_init(ptdesc); + if (!mm_is_kernel(mm)) { + if (!pmd_ptlock_init(ptdesc)) + return false; + ptdesc_pmd_pts_init(ptdesc); + } + return true; } =20 --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 59EB843FD12; Tue, 14 Jul 2026 14:07:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038036; cv=none; b=LMxOz6gOomFx/zNf51c2IPUDXdmNLu1YFy6e8e+8j42lsOjJG3TyjX+kWSeuOQXvzdq400kZ8IyuYquPDMFdxMIeXPHObFZXOC7H8iNY+EWFUuZ51JidWicZ14NN9HYKB5rKOoaZc3zGm7dnwrKg5npdCRY2mkAXe2lDyM1FBI0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038036; c=relaxed/simple; bh=rJhmHjtmDwxS2CewudUO1k4saVZojxZevQnlJp6OZ7c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TYhlUQoKrddjhBLWlAmO098EHFWwWLOOd6absRK9rCi8Y8mwylwwuYMeCVWoqC08xgWryiwZZwCGdCixZcbWJ31r5Zu34kQsRGoTXBGLStHTbR4i3fdQR6gI7IUjra9VAjC4tawsd+LNcCsExfZ2KyMQ3epd5b59h5KNO1bhCOE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=P+LRFNmi; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="P+LRFNmi" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 972261C25; Tue, 14 Jul 2026 07:07:09 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 645503F7B4; Tue, 14 Jul 2026 07:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038033; bh=rJhmHjtmDwxS2CewudUO1k4saVZojxZevQnlJp6OZ7c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=P+LRFNmiDvhW3q79+Et/h/V1cKdtJE0WCcRDkD/ESazXMLOt5jc8Kgt41NbWh4J4L irPYHd6dn5v2zgZP369nbxfm7fp2OsfV6xC2C9cTmmDmdF9sgXDGCBBMWKG6COr/1p x9UUMt3JnkFOkdtZWVFuRaLX87Bjnkvu74XTX8nc= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:05 +0100 Subject: [PATCH 16/22] efi: mark efi_mm as a kernel mm Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-16-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=1355; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=rJhmHjtmDwxS2CewudUO1k4saVZojxZevQnlJp6OZ7c=; b=xEbohehI3oM6XdwxICHsVginMSV7tAi9MA1ZH+OAmyTQN4j1iQ5NsQqwBRdPZXQYf6lyJ7RCE SjcaLPZMgbgBfEX879PTsxhhu4WlXQHubYLk+EEaXhOv3f1B8VSkhhq X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= efi_mm is a kernel-owned address space used for EFI runtime mappings, but it is currently treated like a user address space when manipulating its page tables. There does not seem to be a good reason for this, and it creates unnecessary complications when creating its page tables. Mark it with the new MMF_KERNEL flag so that the page table handling treats it like init_mm. In particular, this means that: * Split page table locks are no longer initialised or used for efi_mm's page tables. * pagetable_*_ctor() and pagetable_dtor() no longer need to be called for efi_mm's page tables. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- drivers/firmware/efi/efi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 0327a39d31fa..e5ca45bdc890 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -69,6 +69,7 @@ struct mm_struct efi_mm =3D { .mm_mt =3D MTREE_INIT_EXT(mm_mt, MM_MT_FLAGS, efi_mm.mmap_lock), .mm_users =3D ATOMIC_INIT(2), .mm_count =3D ATOMIC_INIT(1), + .flags =3D MM_FLAGS_INIT(MMF_KERNEL_MASK), .write_protect_seq =3D SEQCNT_ZERO(efi_mm.write_protect_seq), MMAP_LOCK_INITIALIZER(efi_mm) .page_table_lock =3D __SPIN_LOCK_UNLOCKED(efi_mm.page_table_lock), --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33E2F47DD62; Tue, 14 Jul 2026 14:07:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038044; cv=none; b=ZStobTDGjRSvHCOZHECUWn2pfNynF8YBPaJ34ovaS2O4DV4zh2kaKQcYEP3gZyyXiQkvg9XlaLICc8nZiC3HbFr6z1FvhnPjgI4B+UWUrf78T7BEOcj3CN2jWTwTXawjtCio6hy2RYIumNh0NMbfnB7UrrhEr48uw9mN+f6pv6U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038044; c=relaxed/simple; bh=W5yMHnXfWcnH1ZpiyUJxzPFiGyzR0nmofTO/4v3XglM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MlQTP0ZY+NjAEcSqlHGDQbM8wsSVTRfQ5ex43qh8btgsG/D/X/lbrsoTMSD4PlGrrLAXrSUUy0sSkVuMQbuluLRZve0TxBr9fkSAWGmXymwqufhupWFMwiZcXnuYCXSD/csPJpJuPbUqkPLjRSEp5QhpxiuEE1wmnZPSqbaB6aE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=tcs2QjbO; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="tcs2QjbO" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 485791C25; Tue, 14 Jul 2026 07:07:17 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 211913FBB1; Tue, 14 Jul 2026 07:07:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038041; bh=W5yMHnXfWcnH1ZpiyUJxzPFiGyzR0nmofTO/4v3XglM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tcs2QjbOfi2UrOaEb3Be0yDpY6GZomCe7QbbhuAt79rvxsFv0nPzL+CWkgYpCVks/ ogkFHzzFifaJTeH1MCRm+XyD/611Im1Ut2kp5sQ9dzHO1o7eUkGFrrRiH6Z4V/RDtz /vlFqoX8JwYVcEUc2qvYwpr+Gn4LoNg3DQ/uWfI4= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:06 +0100 Subject: [PATCH 17/22] mm: pagewalk: drop redundant address check for kernel mm walks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-17-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=1902; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=W5yMHnXfWcnH1ZpiyUJxzPFiGyzR0nmofTO/4v3XglM=; b=TFBgeJD80Ix+w11MAOvfP3+Vh87dI14Hnq0FHr8NrSRBwD9XPKoZw/aAqVJc1+sG5OV8cIA+P hlg2L1E8nGiAdR9B4tzknmDLhA26Dhv64+3Fs4YGAcZ8Y3UcdoWIKP6 X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Commit 8b1cb4a2e819 ("mm/pagewalk: fix EFI_PGT_DUMP of espfix area") made no-VMA page table walks use pte_offset_kernel() for any address above TASK_SIZE. This avoided pte_offset_map() validation on EFI page table dumps, where efi_mm could walk x86 espfix PMDs that intentionally look bad to pmd_bad(). efi_mm is now marked with MMF_KERNEL, and no-VMA walks use mm_is_kernel() to select pte_offset_kernel() for kernel mm's. As a result we no longer need to handle the EFI_PGT_DUMP case explicitly.The address check is therefore redundant for EFI_PGT_DUMP and makes the condition harder to reason about. Remove the address check and associated comment; mm_is_kernel() should be sufficient on its own. Tested by booting x86 QEMU with CONFIG_EFI_PGT_DUMP=3Dy and reading /sys/kernel/debug/page_tables/efi. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- mm/pagewalk.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/mm/pagewalk.c b/mm/pagewalk.c index a3f47d1de3c5..0dd9d4ad9b68 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c @@ -68,17 +68,14 @@ static int walk_pte_range(pmd_t *pmd, unsigned long add= r, unsigned long end, if (walk->no_vma) { /* * pte_offset_map() might apply user-specific validation. - * Indeed, on x86_64 the pmd entries set up by init_espfix_ap() - * fit its pmd_bad() check (_PAGE_NX set and _PAGE_RW clear), - * and CONFIG_EFI_PGT_DUMP efi_mm goes so far as to walk them. */ - if (mm_is_kernel(walk->mm) || addr >=3D TASK_SIZE) + if (mm_is_kernel(walk->mm)) pte =3D pte_offset_kernel(pmd, addr); else pte =3D pte_offset_map(pmd, addr); if (pte) { err =3D walk_pte_range_inner(pte, addr, end, walk); - if (!mm_is_kernel(walk->mm) && addr < TASK_SIZE) + if (!mm_is_kernel(walk->mm)) pte_unmap(pte); } } else { --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 764C347DF9B; Tue, 14 Jul 2026 14:07:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038055; cv=none; b=Vpvur0jO5UP652caprhnV5mfunPpuzJux+6qEK6m249ibhl+0pVV75ix14DYFHZy4wLDW4AD4Bue8W1gPY2agdsVAaSBwEHAQTs2jcRpiQaQDn8n+eKT5da0pQU6K+K5ri0EEh4+dRQDKFhh0wV9O3ud6ER4FdbsbP90ktmvV7c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038055; c=relaxed/simple; bh=VE9T6pQuQsM82lM79rZVxS9mOIiIj6SKheB2t7eP+e8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DdYXkmpTqRVNqsRVwGDhwMlag+L2AuhER0/+ie1Ns5BeN6wTUmvnDz1LL12dr5skpQVir/nYoTizcLJsN1FJya0p5Fw52GtYujSNlYEfAjNH9ER4MVgK1Yfw8i94NySZ59j3w5qJBpUVATZEIMQehiz5WuBJr/OHR5C5FCct4k4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=LM6l4iVa; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="LM6l4iVa" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 04C511CE0; Tue, 14 Jul 2026 07:07:25 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D2ACB3F7B4; Tue, 14 Jul 2026 07:07:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038049; bh=VE9T6pQuQsM82lM79rZVxS9mOIiIj6SKheB2t7eP+e8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LM6l4iVarrFVDA4j9SWJAplc2WkKEHlGEtdlAtv7pOYj1y3dATl0KnbkElc5xhenP ErHq3OM3B9mOaLihBDgBjY6YaXcTg/I+07sfZRGvHPhPtHlUZIL/cU1EpblJJAXbkJ UH/xAtOtw9tn/FqSE+wrtOg61lpQnXFpNRh+nTaw= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:07 +0100 Subject: [PATCH 18/22] arm64: mm: drop explicit mm_is_efi() check in contpte Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-18-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=2365; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=VE9T6pQuQsM82lM79rZVxS9mOIiIj6SKheB2t7eP+e8=; b=IJb3I/i6HXAVQpbcZffARFaIRNRmoRCmPcfDA+y7q25vE/t36H63xBNhz/u8eBXK9/0ECckK8 YJz0OELUjVVA+CXShhe5YzEf7ewVjSRMYhD9KGxFsYnbUmRuESOa0pX X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= efi_mm is now marked as a kernel mm, like init_mm. mm_is_kernel() therefore gives the right answer for efi_mm and mm_is_user() is now equivalent to !mm_is_kernel(). Remove mm_is_user() and directly use mm_is_kernel() instead. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/arm64/mm/contpte.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/arch/arm64/mm/contpte.c b/arch/arm64/mm/contpte.c index ad5c04cf66ff..e21e279101ca 100644 --- a/arch/arm64/mm/contpte.c +++ b/arch/arm64/mm/contpte.c @@ -4,23 +4,9 @@ */ =20 #include -#include #include #include =20 -static inline bool mm_is_user(struct mm_struct *mm) -{ - /* - * Don't attempt to apply the contig bit to kernel mappings, because - * dynamically adding/removing the contig bit can cause page faults. - * These racing faults are ok for user space, since they get serialized - * on the PTL. But kernel mappings can't tolerate faults. - */ - if (unlikely(mm_is_efi(mm))) - return false; - return !mm_is_kernel(mm); -} - static inline pte_t *contpte_align_down(pte_t *ptep) { return PTR_ALIGN_DOWN(ptep, sizeof(*ptep) * CONT_PTES); @@ -263,7 +249,13 @@ void __contpte_try_fold(struct mm_struct *mm, unsigned= long addr, =20 int i; =20 - if (!mm_is_user(mm)) + /* + * Don't attempt to apply the contig bit to kernel mappings, because + * dynamically adding/removing the contig bit can cause page faults. + * These racing faults are ok for user space, since they get serialized + * on the PTL. But kernel mappings can't tolerate faults. + */ + if (mm_is_kernel(mm)) return; =20 page =3D pte_page(pte); @@ -302,7 +294,7 @@ void __contpte_try_unfold(struct mm_struct *mm, unsigne= d long addr, * We have already checked that the ptes are contiguous in * contpte_try_unfold(), so just check that the mm is user space. */ - if (!mm_is_user(mm)) + if (mm_is_kernel(mm)) return; =20 pte =3D pte_mknoncont(pte); @@ -465,7 +457,7 @@ void contpte_set_ptes(struct mm_struct *mm, unsigned lo= ng addr, */ VM_WARN_ON(nr =3D=3D 1); =20 - if (!mm_is_user(mm)) + if (mm_is_kernel(mm)) return __set_ptes(mm, addr, ptep, pte, nr); =20 end =3D addr + (nr << PAGE_SHIFT); --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CDC8F47DF93; Tue, 14 Jul 2026 14:07:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038061; cv=none; b=bk+L0Nx3jBrvVc88WP2LuWHD6N8ZOAzSQYGxm8hYzXIMvUKT2wuZ1mLzj+7ZmqxDqXJaF5K1uckZ76hnoZLEWK3LNA+MxjuyJf7+uZjfVRslC+D2xXCrkKxws5XJjUCgJKnvGZfzEX2fYellZqLUPG5ldD1xtJuWSmx3F0zJGZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038061; c=relaxed/simple; bh=VrWlMtHqgM/vx22jiN3vYsU+W1Lh9jxCM8/DJ3H1HHw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Rbkc3wmv9hZJbbYhAGmYTG18ETEm39SbusiHPiRp1E+vjsQZSJwcoVsnVLt/nQvIhnSLXSPgtNBkZ5geziYuF0v/pLF4D7O69OWJ2SJxVEIHmTKfaPBSlNbQZ7qxhYm/dBR5JtfUrm+VsgtqaHg7ExQoYQJ/N4TmJ1eRePbdejM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=X2EPALpi; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="X2EPALpi" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B5D141CE0; Tue, 14 Jul 2026 07:07:32 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8FA7E3F7B4; Tue, 14 Jul 2026 07:07:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038057; bh=VrWlMtHqgM/vx22jiN3vYsU+W1Lh9jxCM8/DJ3H1HHw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=X2EPALpiGXj7jZ//umW0i2ZiscPs5c3b9FVhjQsTjSc/roIUOCw5ccwKbAM8AZVT0 R190qpIisEqdGcWQOaI8LP3WSMdBvOg2L0DaCq9z+740FCzemmIORnkMA6TGphJBf+ c9VjfZElkzX4N0E1s95w/Vtd50JJkhxZY+d0MtYw= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:08 +0100 Subject: [PATCH 19/22] x86/tboot: mark tboot_mm as a kernel mm Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-19-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=1553; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=VrWlMtHqgM/vx22jiN3vYsU+W1Lh9jxCM8/DJ3H1HHw=; b=m8zZWjxysI7gu08ZC5WjroF8ppS2XmCi+NSg9AchPnK6c6wz3EcnLIwt4UrkZ1Tknhd8Uq+lO humwu8pswzNB3IZSFZsQqWeKm+RG8SsPRg6CN1eLU7ZKufXomLaUKal X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= tboot_mm is a kernel-owned address space used to build the identity map for tboot shutdown. Mark it with MMF_KERNEL so page table allocation and initialisation code treats its page tables as kernel page tables. Having marked tboot_mm as a kernel mm, we also need to convert pte_alloc_map() (user PTE) to pte_alloc_kernel() (kernel PTE), and drop the matching pte_unmap(). Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky --- arch/x86/kernel/tboot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c index 46b8f1f16676..08c899f88e41 100644 --- a/arch/x86/kernel/tboot.c +++ b/arch/x86/kernel/tboot.c @@ -99,6 +99,7 @@ static struct mm_struct tboot_mm =3D { .pgd =3D swapper_pg_dir, .mm_users =3D ATOMIC_INIT(2), .mm_count =3D ATOMIC_INIT(1), + .flags =3D MM_FLAGS_INIT(MMF_KERNEL_MASK), .write_protect_seq =3D SEQCNT_ZERO(tboot_mm.write_protect_seq), MMAP_LOCK_INITIALIZER(init_mm) .page_table_lock =3D __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock), @@ -129,11 +130,10 @@ static int map_tboot_page(unsigned long vaddr, unsign= ed long pfn, pmd =3D pmd_alloc(&tboot_mm, pud, vaddr); if (!pmd) return -1; - pte =3D pte_alloc_map(&tboot_mm, pmd, vaddr); + pte =3D pte_alloc_kernel(pmd, vaddr); if (!pte) return -1; set_pte_at(&tboot_mm, vaddr, pte, pfn_pte(pfn, prot)); - pte_unmap(pte); =20 /* * PTI poisons low addresses in the kernel page tables in the --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AAD08480DE4; Tue, 14 Jul 2026 14:07:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038069; cv=none; b=Dams7/INaieIqDwO89tsqDAL4nT4tM0C3E4ZjKXg1QKyLqy1dWWiT81WJDrVnDxpuR2mMmvyplN7YUz8XpecSf0cbqrpY3ySSrtm/OLHqpFxKVw+EePZ149Q2Hzmb7PpzYxCoT35eCLgmtq2WA86ENqJImEGsMsUEkY6IEtZajo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038069; c=relaxed/simple; bh=eNgm2wK/htg6bJpbLSoGRu/x8u/9VaQ86dX9GXxA/zM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UV2uGorX2zVIsI8lLYPlywc8PgivBB7i5Pg9jjIrITE4xg9UPBeeQ4JoFxXTfgKymBCqaTdFfVu2Y6DrCESDHjJiK5Z9erzCTDJGXshlTDx5+we6Jnv4OYYrjPTwLWVxRH+9+yJreNFBp9FgVTm1+oNQG+IONY464fL96UJk/sg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=dz+aSvQ4; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="dz+aSvQ4" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 76CD11CE0; Tue, 14 Jul 2026 07:07:40 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4C05B3F7B4; Tue, 14 Jul 2026 07:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038064; bh=eNgm2wK/htg6bJpbLSoGRu/x8u/9VaQ86dX9GXxA/zM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dz+aSvQ4IIcP5/jB1TnLsl+9MnbX6Bwx+0Lqjr8x5S3Rd06ehciwldTY2ZsmAHOfx 2p1hk4Zezbl29IQIBcUEBscEe0HFjjITDWWe4jQ+rPyb/sbhmBJo91kiol4raAMUFc aSB5BRahC2yYplDRD719ZRvsn/Bk4aIHLvc9u2go= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:09 +0100 Subject: [PATCH 20/22] arm64: mm: drop ctor/dtor calls for kernel page tables Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-20-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=9717; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=eNgm2wK/htg6bJpbLSoGRu/x8u/9VaQ86dX9GXxA/zM=; b=5eP0RdQOzgReDDpM+wlyav4lmQqmzUAUIXx1RW3HbowrbhPLxRPz5GfX/Bq9XXmijz2/LPmIY buMwtuXHOIlAyPhXdjAIkFQlvZ539XeVYb71j+kHGgtFElURkk2a/ok X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Thanks to recent changes: * pagetable_*_ctor() and pagetable_dtor() do nothing for kernel page tables. * efi_mm is also treated like a kernel mm by the page table logic, including ctors. We can therefore drop the calls to ctors when allocating special kernel page tables in mmu.c, as well as the dtor call when freeing hotplug page tables. Since we no longer need the owning mm or page table level when allocating them, we can also remove both the init_mm/special_mm wrappers and the pgtable_level callback argument. Signed-off-by: Kevin Brodsky --- arch/arm64/mm/mmu.c | 82 +++++++++++++++----------------------------------= ---- 1 file changed, 23 insertions(+), 59 deletions(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index f723bcf68174..f1400c6f68ba 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -103,7 +103,7 @@ pgprot_t phys_mem_access_prot(struct file *file, unsign= ed long pfn, } EXPORT_SYMBOL(phys_mem_access_prot); =20 -static phys_addr_t __init early_pgtable_alloc(enum pgtable_level pgtable_l= evel) +static phys_addr_t __init early_pgtable_alloc(void) { phys_addr_t phys; =20 @@ -195,7 +195,7 @@ static bool pte_range_has_valid_noncont(pte_t *ptep) static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { unsigned long next; @@ -210,7 +210,7 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned lo= ng addr, if (flags & NO_EXEC_MAPPINGS) pmdval |=3D PMD_TABLE_PXN; BUG_ON(!pgtable_alloc); - pte_phys =3D pgtable_alloc(PGTABLE_LEVEL_PTE); + pte_phys =3D pgtable_alloc(); if (pte_phys =3D=3D INVALID_PHYS_ADDR) return -ENOMEM; ptep =3D pte_set_fixmap(pte_phys); @@ -251,7 +251,7 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned lo= ng addr, =20 static int init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), int flags) + phys_addr_t (*pgtable_alloc)(void), int flags) { unsigned long next; =20 @@ -303,7 +303,7 @@ static bool pmd_range_has_valid_noncont(pmd_t *pmdp) static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { int ret; @@ -322,7 +322,7 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned lo= ng addr, if (flags & NO_EXEC_MAPPINGS) pudval |=3D PUD_TABLE_PXN; BUG_ON(!pgtable_alloc); - pmd_phys =3D pgtable_alloc(PGTABLE_LEVEL_PMD); + pmd_phys =3D pgtable_alloc(); if (pmd_phys =3D=3D INVALID_PHYS_ADDR) return -ENOMEM; pmdp =3D pmd_set_fixmap(pmd_phys); @@ -361,7 +361,7 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned lo= ng addr, =20 static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long e= nd, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { int ret =3D 0; @@ -376,7 +376,7 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long ad= dr, unsigned long end, if (flags & NO_EXEC_MAPPINGS) p4dval |=3D P4D_TABLE_PXN; BUG_ON(!pgtable_alloc); - pud_phys =3D pgtable_alloc(PGTABLE_LEVEL_PUD); + pud_phys =3D pgtable_alloc(); if (pud_phys =3D=3D INVALID_PHYS_ADDR) return -ENOMEM; pudp =3D pud_set_fixmap(pud_phys); @@ -428,7 +428,7 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long ad= dr, unsigned long end, =20 static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long e= nd, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { int ret; @@ -443,7 +443,7 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long ad= dr, unsigned long end, if (flags & NO_EXEC_MAPPINGS) pgdval |=3D PGD_TABLE_PXN; BUG_ON(!pgtable_alloc); - p4d_phys =3D pgtable_alloc(PGTABLE_LEVEL_P4D); + p4d_phys =3D pgtable_alloc(); if (p4d_phys =3D=3D INVALID_PHYS_ADDR) return -ENOMEM; p4dp =3D p4d_set_fixmap(p4d_phys); @@ -480,7 +480,7 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long ad= dr, unsigned long end, static int __create_pgd_mapping_locked(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { int ret; @@ -513,7 +513,7 @@ static int __create_pgd_mapping_locked(pgd_t *pgdir, ph= ys_addr_t phys, static int __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { int ret; @@ -529,7 +529,7 @@ static int __create_pgd_mapping(pgd_t *pgdir, phys_addr= _t phys, static void early_create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_level), + phys_addr_t (*pgtable_alloc)(void), int flags) { int ret; @@ -540,55 +540,20 @@ static void early_create_pgd_mapping(pgd_t *pgdir, ph= ys_addr_t phys, panic("Failed to create page tables\n"); } =20 -static phys_addr_t __pgd_pgtable_alloc(struct mm_struct *mm, gfp_t gfp, - enum pgtable_level pgtable_level) +static phys_addr_t pgd_pgtable_alloc_gfp(gfp_t gfp) { /* Page is zeroed by init_clear_pgtable() so don't duplicate effort. */ struct ptdesc *ptdesc =3D pagetable_alloc(gfp & ~__GFP_ZERO, 0); - phys_addr_t pa; =20 if (!ptdesc) return INVALID_PHYS_ADDR; =20 - pa =3D page_to_phys(ptdesc_page(ptdesc)); - - switch (pgtable_level) { - case PGTABLE_LEVEL_PTE: - BUG_ON(!pagetable_pte_ctor(mm, ptdesc)); - break; - case PGTABLE_LEVEL_PMD: - BUG_ON(!pagetable_pmd_ctor(mm, ptdesc)); - break; - case PGTABLE_LEVEL_PUD: - pagetable_pud_ctor(ptdesc); - break; - case PGTABLE_LEVEL_P4D: - pagetable_p4d_ctor(ptdesc); - break; - case PGTABLE_LEVEL_PGD: - VM_WARN_ON(1); - break; - } - - return pa; -} - -static phys_addr_t -pgd_pgtable_alloc_init_mm_gfp(enum pgtable_level pgtable_level, gfp_t gfp) -{ - return __pgd_pgtable_alloc(&init_mm, gfp, pgtable_level); -} - -static phys_addr_t __maybe_unused -pgd_pgtable_alloc_init_mm(enum pgtable_level pgtable_level) -{ - return pgd_pgtable_alloc_init_mm_gfp(pgtable_level, GFP_PGTABLE_KERNEL); + return page_to_phys(ptdesc_page(ptdesc)); } =20 -static phys_addr_t -pgd_pgtable_alloc_special_mm(enum pgtable_level pgtable_level) +static phys_addr_t pgd_pgtable_alloc(void) { - return __pgd_pgtable_alloc(NULL, GFP_PGTABLE_KERNEL, pgtable_level); + return pgd_pgtable_alloc_gfp(GFP_PGTABLE_KERNEL); } =20 static void split_contpte(pte_t *ptep) @@ -609,7 +574,7 @@ static int split_pmd(pmd_t *pmdp, pmd_t pmd, gfp_t gfp,= bool to_cont) pte_t *ptep; int i; =20 - pte_phys =3D pgd_pgtable_alloc_init_mm_gfp(PGTABLE_LEVEL_PTE, gfp); + pte_phys =3D pgd_pgtable_alloc_gfp(gfp); if (pte_phys =3D=3D INVALID_PHYS_ADDR) return -ENOMEM; ptep =3D (pte_t *)phys_to_virt(pte_phys); @@ -656,7 +621,7 @@ static int split_pud(pud_t *pudp, pud_t pud, gfp_t gfp,= bool to_cont) pmd_t *pmdp; int i; =20 - pmd_phys =3D pgd_pgtable_alloc_init_mm_gfp(PGTABLE_LEVEL_PMD, gfp); + pmd_phys =3D pgd_pgtable_alloc_gfp(gfp); if (pmd_phys =3D=3D INVALID_PHYS_ADDR) return -ENOMEM; pmdp =3D (pmd_t *)phys_to_virt(pmd_phys); @@ -1035,7 +1000,7 @@ void __init create_pgd_mapping(struct mm_struct *mm, = phys_addr_t phys, flags =3D NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; =20 early_create_pgd_mapping(mm->pgd, phys, virt, size, prot, - pgd_pgtable_alloc_special_mm, flags); + pgd_pgtable_alloc, flags); } =20 static void update_mapping_prot(phys_addr_t phys, unsigned long virt, @@ -1249,7 +1214,7 @@ static void __init declare_vma(struct vm_struct *vma, =20 static phys_addr_t kpti_ng_temp_alloc __initdata; =20 -static phys_addr_t __init kpti_ng_pgd_alloc(enum pgtable_level pgtable_lev= el) +static phys_addr_t __init kpti_ng_pgd_alloc(void) { kpti_ng_temp_alloc -=3D PAGE_SIZE; return kpti_ng_temp_alloc; @@ -1357,7 +1322,7 @@ static int __init map_entry_trampoline(void) memset(tramp_pg_dir, 0, PGD_SIZE); early_create_pgd_mapping(tramp_pg_dir, pa_start, TRAMP_VALIAS, entry_tramp_text_size(), prot, - pgd_pgtable_alloc_init_mm, NO_BLOCK_MAPPINGS); + pgd_pgtable_alloc, NO_BLOCK_MAPPINGS); =20 /* Map both the text and data into the kernel page table */ for (i =3D 0; i < DIV_ROUND_UP(entry_tramp_text_size(), PAGE_SIZE); i++) @@ -1445,7 +1410,6 @@ static void free_hotplug_page_range(struct page *page= , size_t size, =20 static void free_hotplug_pgtable_page(struct page *page) { - pagetable_dtor(page_ptdesc(page)); free_hotplug_page_range(page, PAGE_SIZE, NULL); } =20 @@ -1958,7 +1922,7 @@ int arch_add_memory(int nid, u64 start, u64 size, flags |=3D NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; =20 ret =3D __create_pgd_mapping(swapper_pg_dir, start, __phys_to_virt(start), - size, params->pgprot, pgd_pgtable_alloc_init_mm, + size, params->pgprot, pgd_pgtable_alloc, flags); if (ret) goto err; --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C8242480DEE; Tue, 14 Jul 2026 14:07:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038079; cv=none; b=BnNMNxTCGn+kWkegZSkP7Hb16YJv7ND5D9fKnCCFGl9y6vm4hw8AXocm0CXul+t3FkX4RkeNRmas9MHqyuodZ3pg1U0FSxJWzoAUYQlSpNpWpPsGeSbKlEL3U49F6f/su1Y/qdB3tdkHzNQ2OesK5MOYwg95nWq6H1r1J2SM9qc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038079; c=relaxed/simple; bh=8oYQ9MXuYWmm90weLSF/t4FrSgRMmgMLSgcdK785vME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rhJqAEIOHR0eALh8+seMB9lTpXJdRYPBDJE9e2+akxowzOU6bVCHJ6PupmpdGWUqS9DpL9ZSxOW1GsjLBOoEon34vJ3a2VJTYCXrRt6rJ5CDUHTz39HMayU+ukYc4iDAl6dRsTGXdK4L8YAYMo9KUl8Tp4DGPQpncjiHLG99GV8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=vjhfq5hu; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="vjhfq5hu" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 329B21DB5; Tue, 14 Jul 2026 07:07:48 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0A8183F7B4; Tue, 14 Jul 2026 07:07:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038072; bh=8oYQ9MXuYWmm90weLSF/t4FrSgRMmgMLSgcdK785vME=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=vjhfq5hujZgmkhySuJNw6Ovi0ZDPllrwytdpUl1CFaMMmQ7YlrA+FTdxr6ytaSSAO 1u9NsJ08KRRDg8iJcOgusKSxciglroRswKdfyUOkoGu8QXjmncAKV2aqeRer5z/ygB q8OYyTsSmA+9Qr1jQYJQdHlBqhCMBgipf8FFPhm0= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:10 +0100 Subject: [PATCH 21/22] arm: mm: drop ctor call for kernel page tables Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-21-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=861; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=8oYQ9MXuYWmm90weLSF/t4FrSgRMmgMLSgcdK785vME=; b=nhPVpPwxc0Tgep45F4r22gVJiYH4IqNiA/Z9S3Ix77hbH+m9X9zzxN6EovZVFIEF1e8oAreuL YHrL6dXW1utB0IBYjmbnRvx5pXQ0zPIU5EqMprfu37YqfA5Aaxh0XUC X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Thanks to recent changes: * pagetable_pte_ctor() does nothing for kernel page tables. * efi_mm is also treated like a kernel mm by the page table logic, including ctors. We can therefore drop the ctor call when allocating special kernel page tables in mmu.c. Signed-off-by: Kevin Brodsky --- arch/arm/mm/mmu.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 23b87b5ef7f1..c8de77a6f01e 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -728,8 +728,7 @@ static void *__init late_alloc(unsigned long sz) void *ptdesc =3D pagetable_alloc(GFP_PGTABLE_KERNEL & ~__GFP_HIGHMEM, get_order(sz)); =20 - if (!ptdesc || !pagetable_pte_ctor(NULL, ptdesc)) - BUG(); + BUG_ON(!ptdesc); return ptdesc_address(ptdesc); } =20 --=20 2.51.2 From nobody Sat Jul 25 19:28:41 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5ABB847F2F2; Tue, 14 Jul 2026 14:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038091; cv=none; b=ozt3pGhytdQC3E/wBke/YHc9XJ7XvJWJPlJzOxH9wcTv7vQU/3cBpFjQFPadFsRjQUyR7BAFP21XBYqTzazAjOufBZVroLUOMyN6BlCsPhTVa3vNwKpxrTzaXwvPLVwQarGGuQnWFv5WQXuJY1q/95gZdP12LDjpHfznK7NOBLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784038091; c=relaxed/simple; bh=DQUlXrijxnSdwAI1lj2qunwwpXAiVnOlOXfc6mAyMUQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JlYmx1Nho5fHwhe4FaMs+gXIn1Tx5o9vLuUZPpGRmvbCflykiXfJrTtomxaLAjtH+agJE4DpWg6mPrJ1AgZBxbu0hAzxwJuL2kTqU3ooP6e2coxP/1RsLdgcuHVryTqsEB2+Y8htRXV6ASyeRABnak0KPpSvTSfEWsRH3xb5xJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=EkfHX0/w; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="EkfHX0/w" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E1C871DB5; Tue, 14 Jul 2026 07:07:55 -0700 (PDT) Received: from localhost.localdomain (e123572-lin.cambridge.arm.com [10.2.208.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BB5033F7B4; Tue, 14 Jul 2026 07:07:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784038080; bh=DQUlXrijxnSdwAI1lj2qunwwpXAiVnOlOXfc6mAyMUQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EkfHX0/wndT2DrIlt77R9MduZMLLVHV6MiJ4gGI5CEH0EicTnVS43outHXqKb+9XR AJo1EcRXTyEDah4neKxKZTW1aJvelDeHIKrOeiwCxZJanpWn/hzIrUIMMzTmeF4J8v WK5pqK4bemQaUXT1hIibNUiLONKFHv36szPAaSA8= From: Kevin Brodsky Date: Tue, 14 Jul 2026 15:04:11 +0100 Subject: [PATCH 22/22] riscv: mm: drop ctor/dtor calls for kernel page tables Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-remove_pgtable_cdtor-v1-22-44be8a7685d7@arm.com> References: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> In-Reply-To: <20260714-remove_pgtable_cdtor-v1-0-44be8a7685d7@arm.com> To: linux-mm@kvack.org Cc: Kevin Brodsky , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Pasha Tatashin , Russell King , Catalin Marinas , Will Deacon , Ryan Roberts , linux-arm-kernel@lists.infradead.org, Huacai Chen , loongarch@lists.linux.dev, "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Gerald Schaefer , linux-s390@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Richard Weinberger , Anton Ivanov , Johannes Berg , linux-um@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Ning Sun , x86@kernel.org, tboot-devel@lists.sourceforge.net, Ard Biesheuvel , Ilias Apalodimas , linux-efi@vger.kernel.org, Vishal Moola , Alistair Popple , "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784037902; l=5346; i=kevin.brodsky@arm.com; s=20260427; h=from:subject:message-id; bh=DQUlXrijxnSdwAI1lj2qunwwpXAiVnOlOXfc6mAyMUQ=; b=SSTFSwZEfFo/6gx/poI9v6VwC/hohk7MtYN3kR3x0tI9+lk1TLQ5HYY8/tkfxij+JZ0fxXtY7 dmntRxFz1BYAc9h9Vd7P6X3RSa/wxA0dmIO24BbUkIFbso++KHmSKGI X-Developer-Key: i=kevin.brodsky@arm.com; a=ed25519; pk=N2QG+eJKrvkNovwhhwJhnJ4+ScVfsGCHldmqLfcMTFs= Thanks to recent changes: * pagetable_*_ctor() and pagetable_dtor() do nothing for kernel page tables. * efi_mm is also treated like a kernel mm by the page table logic, including ctors. We can therefore drop the calls to ctors when allocating special kernel page tables in mmu.c, as well as the dtor call when freeing hotplug page tables. The alloc_*_late() helpers are all identical after removing the ctor calls, so replace them with alloc_pgtable_late(). Signed-off-by: Kevin Brodsky --- arch/riscv/mm/init.c | 63 ++++++++++++------------------------------------= ---- 1 file changed, 14 insertions(+), 49 deletions(-) diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 5b1b3c88b4d1..e823662be256 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -382,6 +382,14 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_= t phys, pgprot_t prot) local_flush_tlb_page(addr); } =20 +static phys_addr_t __meminit alloc_pgtable_late(uintptr_t va) +{ + struct ptdesc *ptdesc =3D pagetable_alloc(GFP_KERNEL, 0); + + BUG_ON(!ptdesc); + return __pa(ptdesc_address(ptdesc)); +} + static inline pte_t *__init get_pte_virt_early(phys_addr_t pa) { return (pte_t *)((uintptr_t)pa); @@ -412,19 +420,6 @@ static inline phys_addr_t __init alloc_pte_fixmap(uint= ptr_t va) return memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE); } =20 -static phys_addr_t __meminit alloc_pte_late(uintptr_t va) -{ - struct ptdesc *ptdesc =3D pagetable_alloc(GFP_KERNEL, 0); - - /* - * We do not know which mm the PTE page is associated to at this point. - * Passing NULL to the ctor is the safe option, though it may result - * in unnecessary work (e.g. initialising the ptlock for init_mm). - */ - BUG_ON(!ptdesc || !pagetable_pte_ctor(NULL, ptdesc)); - return __pa((pte_t *)ptdesc_address(ptdesc)); -} - static void __meminit create_pte_mapping(pte_t *ptep, uintptr_t va, phys_a= ddr_t pa, phys_addr_t sz, pgprot_t prot) { @@ -479,15 +474,6 @@ static phys_addr_t __init alloc_pmd_fixmap(uintptr_t v= a) return memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE); } =20 -static phys_addr_t __meminit alloc_pmd_late(uintptr_t va) -{ - struct ptdesc *ptdesc =3D pagetable_alloc(GFP_KERNEL, 0); - - /* See comment in alloc_pte_late() regarding NULL passed the ctor */ - BUG_ON(!ptdesc || !pagetable_pmd_ctor(NULL, ptdesc)); - return __pa((pmd_t *)ptdesc_address(ptdesc)); -} - static void __meminit create_pmd_mapping(pmd_t *pmdp, uintptr_t va, phys_addr_t pa, phys_addr_t sz, pgprot_t prot) @@ -544,15 +530,6 @@ static phys_addr_t __init alloc_pud_fixmap(uintptr_t v= a) return memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE); } =20 -static phys_addr_t __meminit alloc_pud_late(uintptr_t va) -{ - struct ptdesc *ptdesc =3D pagetable_alloc(GFP_KERNEL, 0); - - BUG_ON(!ptdesc); - pagetable_pud_ctor(ptdesc); - return __pa((pud_t *)ptdesc_address(ptdesc)); -} - static p4d_t *__init get_p4d_virt_early(phys_addr_t pa) { return (p4d_t *)((uintptr_t)pa); @@ -582,15 +559,6 @@ static phys_addr_t __init alloc_p4d_fixmap(uintptr_t v= a) return memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE); } =20 -static phys_addr_t __meminit alloc_p4d_late(uintptr_t va) -{ - struct ptdesc *ptdesc =3D pagetable_alloc(GFP_KERNEL, 0); - - BUG_ON(!ptdesc); - pagetable_p4d_ctor(ptdesc); - return __pa((p4d_t *)ptdesc_address(ptdesc)); -} - static void __meminit create_pud_mapping(pud_t *pudp, uintptr_t va, phys_a= ddr_t pa, phys_addr_t sz, pgprot_t prot) { @@ -1003,14 +971,14 @@ static void __init pt_ops_set_fixmap(void) */ static void __init pt_ops_set_late(void) { - pt_ops.alloc_pte =3D alloc_pte_late; + pt_ops.alloc_pte =3D alloc_pgtable_late; pt_ops.get_pte_virt =3D get_pte_virt_late; #ifndef __PAGETABLE_PMD_FOLDED - pt_ops.alloc_pmd =3D alloc_pmd_late; + pt_ops.alloc_pmd =3D alloc_pgtable_late; pt_ops.get_pmd_virt =3D get_pmd_virt_late; - pt_ops.alloc_pud =3D alloc_pud_late; + pt_ops.alloc_pud =3D alloc_pgtable_late; pt_ops.get_pud_virt =3D get_pud_virt_late; - pt_ops.alloc_p4d =3D alloc_p4d_late; + pt_ops.alloc_p4d =3D alloc_pgtable_late; pt_ops.get_p4d_virt =3D get_p4d_virt_late; #endif } @@ -1488,7 +1456,6 @@ static void __meminit free_pte_table(pte_t *pte_start= , pmd_t *pmd) return; } =20 - pagetable_dtor(ptdesc); if (PageReserved(page)) free_reserved_page(page); else @@ -1496,7 +1463,7 @@ static void __meminit free_pte_table(pte_t *pte_start= , pmd_t *pmd) pmd_clear(pmd); } =20 -static void __meminit free_pmd_table(pmd_t *pmd_start, pud_t *pud, bool is= _vmemmap) +static void __meminit free_pmd_table(pmd_t *pmd_start, pud_t *pud) { struct page *page =3D pud_page(*pud); struct ptdesc *ptdesc =3D page_ptdesc(page); @@ -1509,8 +1476,6 @@ static void __meminit free_pmd_table(pmd_t *pmd_start= , pud_t *pud, bool is_vmemm return; } =20 - if (!is_vmemmap) - pagetable_dtor(ptdesc); if (PageReserved(page)) free_reserved_page(page); else @@ -1634,7 +1599,7 @@ static void __meminit remove_pud_mapping(pud_t *pud_b= ase, unsigned long addr, un remove_pmd_mapping(pmd_base, addr, next, is_vmemmap, altmap); =20 if (pgtable_l4_enabled) - free_pmd_table(pmd_base, pudp, is_vmemmap); + free_pmd_table(pmd_base, pudp); } } =20 --=20 2.51.2