From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2997E46F4B2; Wed, 22 Jul 2026 15:30:50 +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=1784734254; cv=none; b=ob0MTW8KphduKEwbDep/SV9bjOLivrlOQsbefotmsN/YFP/6qXS37VqF0tfatqqy/xJiARVVkPnx0p6KYxwfZwZRMpwN+7XPPnvTx25Sqfl+fMrTrjDI5UzimONrt2iUx4o9KTjoSq3YmpD3Ey19D2jTDA2gT4oqKtbI5mcUis8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734254; c=relaxed/simple; bh=1TxWbr6Rxpr/d5K1ZjUMXUxW7m3hsO+YJqbH2QzQwcI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HSMNZk/9CDAuTMRdS9ak0CMLvjLrXHjWNTbPxBb3efIq6BP4p1I8SbHZYgPEKVqmdXzT5pJry+chnHzDP64KuyI4OXLJwHHpzeZWZZyC2a2OH3OUh9LfDA2xfyImRZfnfCqFY+c3RogJYRcCOVic5uholuOmig6xrSS20KQW6lg= 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=LnOf3bdG; 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="LnOf3bdG" 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 7C92B1692; Wed, 22 Jul 2026 08:30:43 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D54C73F66F; Wed, 22 Jul 2026 08:30:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734247; bh=1TxWbr6Rxpr/d5K1ZjUMXUxW7m3hsO+YJqbH2QzQwcI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LnOf3bdGHBtoZ9/i1k15T6gHd7dFP7WuoAJk570GxSvUgd5BdOxok9HLl2YCyOHBL GJxB7U5uIFfxd4a2DVlw6fjpxicCHGnU/35kh4VYvLmym+Ij0aC+RhyHruWS9eiadq gW3ecxtyYk43muPXW0R4LEdqJ1kDHBQE3XVjR/zs= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:09 +0100 Subject: [PATCH RFC v2 01/20] ARM: mm: make nommu pgd_t a scalar 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: <20260722-dummy_ptxp3-v2-1-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1093; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=os/Mhoh7pmCouvRwHLkdVyqjdGpvrfvwObzVbRePc/o=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIPcYgvYMqhwm4vdMbW1urTvtv95E4cikIjK 9DPVoDpWPSJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiDwAKCRBt1cPRWsUx MxtADACQ5kPn20eoyFghflTLYxkjfk9WmMH1osH5jieI1yjfetiAaE48NyNlaslyLflmRD3m8V2 IzZhaFDaREkU/XBda6pU7oJRJCCkiOotAMqZxAvZX/Nd0MF6rAx7hg4kBftgowX7T24YeTiwjsk oR97ApgGOy9jhvsswneZVWYwMRBqKQIc0YifuSw4QsQ6YxH/uVJ9RXEVXDh8eAkUNDGq/5/FHz+ fgYUvvW/mudG8ph8NK/bi46YJTSkKJewn0uSLAvgOo8iM+Yyoh4w4jfTzWr0RB6cL+V8dwNwZfT 8EBqdswQ7UYO8u9xGlI1ZJ+hdCIt+TpzHAZHTy/nkDt0Ierri61xOfIEpb5muzV+Ng4V3sinnMy LUrit2NI1caaxtzJwcEXYkYnmcSOd6eLO8crfcjPSq+mhUn3i59hVIvFOwQhgUZT4T+1nEKvBmh z53Y2TNgYmiKgtoqRRExR9LCqzH8L8CJiQ3bkkb9K4QZ56iY9jVjj8TiMg4dlnITDoX4w= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" We don't want pgd_t to be an array, as it prohibits returning it from a function, like ptep_get(). There is no need to match the actual arm page tables, because with nommu there are no page tables. It's all just in place to make the compiler happy. Making it a scalar will make the compiler happy. So let's just use an u32. Signed-off-by: David Hildenbrand (Arm) --- arch/arm/include/asm/page-nommu.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/asm/page-nommu.h b/arch/arm/include/asm/page-= nommu.h index e74415c959be..88659b38e236 100644 --- a/arch/arm/include/asm/page-nommu.h +++ b/arch/arm/include/asm/page-nommu.h @@ -18,12 +18,12 @@ */ typedef unsigned long pte_t; typedef unsigned long pmd_t; -typedef unsigned long pgd_t[2]; +typedef unsigned long pgd_t; typedef unsigned long pgprot_t; =20 #define pte_val(x) (x) #define pmd_val(x) (x) -#define pgd_val(x) ((x)[0]) +#define pgd_val(x) (x) #define pgprot_val(x) (x) =20 #define __pte(x) (x) --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5810D47278D; Wed, 22 Jul 2026 15:30:55 +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=1784734257; cv=none; b=A7XnHtL4cxvohVgi+ED3i8dtV88Uiv9OpEvasBZZgaLBEUruKRQLjOi6zbQqWwDGsXY3vS9xUxuj1b2rUMOw/BQuMvV3OrGoKVe8kchTB61PHGDt6LxUVCpdeDYwwYcEKcWjJ7q2rkja89MxF/ptM3vBttJ5kZesqYKANBHuqqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734257; c=relaxed/simple; bh=NwLzJE9YUYcwQouyyHhdNDainQ0wboh6oH5R8Qr5IHk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IZSDNRx1bUBDv02mxJVkuLZvkNpdrQXxVDkwAkKkjMqqlsqNfc7HDzhc8L/YYx2SA4ZdAoz3EYcf7DCopXsJ/WUPqQ3O7gQj9+cmEKdKUowuOGE63riDNc7f8XGGaxRtidChJ3uBCFV4w3te2P1Sp5VKtT5xvQGLYA+bQK1Pv/Q= 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=CMfDyJKB; 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="CMfDyJKB" 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 914D81595; Wed, 22 Jul 2026 08:30:50 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EEB983F66F; Wed, 22 Jul 2026 08:30:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734254; bh=NwLzJE9YUYcwQouyyHhdNDainQ0wboh6oH5R8Qr5IHk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CMfDyJKBKmK50YTcejppNKTrTWiJP57IF6DHVLjdYdB2gqyRXO1180hCz77V7dhiw /Rhc6XGpzTsM9UJ2o8cGBXNsPlK7hInWAm0H7N+W5Ya7RehIy81zPyYAERNZ20t24L nfvmJqhMmxi974lDKs5uoKjcVHSlsRqupqgSxxk0= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:10 +0100 Subject: [PATCH RFC v2 02/20] ARM: mm: make 2-level pgd_t a scalar 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: <20260722-dummy_ptxp3-v2-2-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2168; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=3A02R9gJAFlGYYgA2zmEeHAxV0ZhWViB/KSchyi5T/4=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIQeAF4NvX+ghiLdlZcQA9dzdnJsUpGO89IJ Z0P4tNZzvGJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEAAKCRBt1cPRWsUx M9cgDACmrJH7vGtwlt1q+G75J+q2g7DLACRd8qQ65REy5KW9VbVYXXmBfsv7k2aacinnF+IUr1m w3DvIXTMScFAlv6aZMEIqzXU9KuPuo24JNo8rMNKxi9T1m+acBCRHvLvSO2xL29IrbZAcioI4Wx p65yuAc9KS13mOJr3OIKeTM2uPBpc+Dm5DZte59tUdL88pUcKmgr5jOzWyXYdMRsz3hDwLYMW+2 xxjo5fmXJlXgap750FaoM8rT0iXoAT6YJTKSXBHneNtHjfELNOmnfR3FouecTJpQYreibBoY4Go wTzx/VMNWooLYFE7j0Suwe4IRqREcwTjIE7Sy0K+4hH8myO5maXRxcC6QsnckrWLVBUFmQB4lFH /yAaiETHizvEjofTsL+JjwiTrmaQq2gXigwhquNdb6UYzqGvR7neA73xa7ugREzMT8ojGHpTpOr l75oD4xe0+GWpdz7MWMp3Wqtq2t9VjFSsaVZperSbQsuUsnnV9f1oO35vpoX6HoDyNfd4= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" We don't want pgd_t to be an array, as it prohibits returning it from a function, like pgdp_get(). So let's just use an u64, and extract the right 32bit value in pgd_val(). Leave the STRICT_MM_TYPECHECKS case alone for now. As an alternative, we could use the STRICT_MM_TYPECHECKS approach here as well, but using an u64 looks conceptually cleaner, even though pgd_val() gets a bit more involved. Signed-off-by: David Hildenbrand (Arm) --- arch/arm/include/asm/pgtable-2level-types.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/arch/arm/include/asm/pgtable-2level-types.h b/arch/arm/include= /asm/pgtable-2level-types.h index 650e793f4142..7f85384ac386 100644 --- a/arch/arm/include/asm/pgtable-2level-types.h +++ b/arch/arm/include/asm/pgtable-2level-types.h @@ -25,7 +25,7 @@ typedef struct { pteval_t pgprot; } pgprot_t; =20 #define pte_val(x) ((x).pte) #define pmd_val(x) ((x).pmd) -#define pgd_val(x) ((x).pgd[0]) +#define pgd_val(x) ((x).pgd[0]) #define pgprot_val(x) ((x).pgprot) =20 #define __pte(x) ((pte_t) { (x) } ) @@ -36,14 +36,32 @@ typedef struct { pteval_t pgprot; } pgprot_t; /* * .. while these make it easier on the compiler */ +typedef u64 pgdval_t; + typedef pteval_t pte_t; typedef pmdval_t pmd_t; -typedef pmdval_t pgd_t[2]; +typedef pgdval_t pgd_t; typedef pteval_t pgprot_t; =20 #define pte_val(x) (x) #define pmd_val(x) (x) -#define pgd_val(x) ((x)[0]) + +static inline pmdval_t pgd_val(pgd_t pgd) +{ + /* + * The lower and higher pmdval_t values point to the same page. + * the only difference is their offset within that page. + * Therefore, whichever value is returned, the behavior of pmd_pfn(), + * pmd_page(), and other users of pgd_val() remains unchanged. + * + * However, pgd_val() has historically returned the lower pmdval_t, so + * keep returning the lower one. + * + * See the comments in include/asm/pgtable-2level. + */ + return (*(pmdval_t (*)[2])&pgd)[0]; +} + #define pgprot_val(x) (x) =20 #define __pte(x) (x) --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6A08D476CF6; Wed, 22 Jul 2026 15:31:02 +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=1784734263; cv=none; b=pIGTZtcH4Aa+6l8MpIXWMWoeGDy4ee+I6QRWAVhjA4gE4M+ZYPQ0HRXL6y9mcJiz6M66ZuWDsHI2iA1XQcf8e4oDTyEuGTLoaoAcAyNbzqx50ShM6LsVv/fqoE0Y98yktqJyWeGv/+VpPUIci9sEW6SVEODoJJG1ElwxVpKbrB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734263; c=relaxed/simple; bh=QrVPpGpdi/eED4dW1HaGgNR2pJxPks6zPqeAqIGp2c0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BpIAF8Z5tvT9+15NDY4UNZfiV+9Dy7e6/mRsAtI8m2VLIZYHpFfgkM0gvYJYS37243jmHq8O91hMguBRUI0GOvlYzNkEgjKdovB+5Sry6J5LWYL5UpCNL1aRJxhai7nY2m2/upUaeZ4tmm6NeFDMr3ExhgAyZykkQSlkA/q2Fqo= 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=Sx7wtw/4; 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="Sx7wtw/4" 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 AB4DB168F; Wed, 22 Jul 2026 08:30:57 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 12DE83F66F; Wed, 22 Jul 2026 08:30:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734261; bh=QrVPpGpdi/eED4dW1HaGgNR2pJxPks6zPqeAqIGp2c0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Sx7wtw/4z23ZqWgZrrke2cLsWwmVryD0piVvxP5yDoWYdAI4LejZxWJjAx7VCXeFj XxlBVB31lMo8WMO0RW7nTFFAbLeq23q0DfH91pTlZcCEROxikJkt9oVDE3Hv9+sPO4 MNzvkiIBTNf3FYe9RkItoVkvNmFyJJGAKNecB4sk= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:11 +0100 Subject: [PATCH RFC v2 03/20] ARM: mm: remove custom pgdp_get() 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: <20260722-dummy_ptxp3-v2-3-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=801; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=imCIbsDy8jWM4y7+JQNzM8t/o1T4VNesyR2iG+vBinE=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIQ7gH2xG3dGNa5zWIxKkCj6heJC6TxnwWDG j715ctcwS6JAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEAAKCRBt1cPRWsUx M0iEDACSAXRGBpMxC/K5FYE+A8U6TjqE6WPR6uVtpTp4G3Ulkg3GiAy62KmADuZ/1YGRLTqtioB SdXgnkpNWIpVmbvcXCxvLM4JngQLqdwGN2Tmkq/E7pjPVfMB2A3IlViVxIOIAIY/hhQzXV+yp0N SSIpwtdt3xL3PHaoE7k7j6EXAhTrAXOlpUhi/1YOZ2KR3tA1vDaX+zz5v43oCXPcUwuzPVWiNsR gBNzXs5iUtMNDnepvlm1EkCJNglxpEVCKSZXfhItaNffxHBi8qFpApORlfFfgo82PzlaWlOyH0z LXiuXGqDG0qTAhzC9PhbfS4Ppx+63phAq5bhkgEQsP9/zsIb5BMpfTw6Q7Ig5V5wGO3YRiCaqpH 1Hx4bDGaJ6B0NW84rfJG7zCHUg5dv8FqnopAzS/cPUj8wq1UsNKs9Zwiq6SwXB+Ff95tjEG69vu ZAASVFVOH8dS3VQRZqe2XcEJyHiu8f0GNrl/Nf9QLzMl3+Q4g/upKuF1Z9aCcoPziBSao= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" Now that pgd_t is no longer an array, we can just rely on the common code pgdp_get(), which is a static inline function that returns pgd_t. Signed-off-by: David Hildenbrand (Arm) --- arch/arm/include/asm/pgtable.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 982795cf4563..eadd027fe0ee 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h @@ -141,8 +141,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file,= unsigned long pfn, =20 extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; =20 -#define pgdp_get(pgpd) READ_ONCE(*pgdp) - #define pud_page(pud) pmd_page(__pmd(pud_val(pud))) #define pud_write(pud) pmd_write(__pmd(pud_val(pud))) =20 --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8CF8F4D8D9C; Wed, 22 Jul 2026 15:31:09 +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=1784734271; cv=none; b=bjl3oLWu2usy1QjmhP9mwNHbYKji0Tvop3gzbuHrtrSKkGobyN3fdLp/9nn4C8XyBNtnLEgz1TiEbYGzRClsWTEsRwT52M2tj8c23qaQk/DmfriyBzDjLipTsEOHT5KxQr0t7R2HaLMXRlsT1wfhf4tKPxnGlOImq4vopy8MQBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734271; c=relaxed/simple; bh=j0suFj/k8Gjr4NVwWjc1PSJ1cuCmTYQ6kxO/jY4zAXM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mnKG6NRHy2I86a24GPT86/OK4lKupjzJdnwam1jkKRGzV7Mp4gD1tkTHXFZ8uZKUp9b2D0D2tIbrLv9KSNkaOszOhxCU3elqfH3KE6ZqOoJPOLPC0BmjE4d4Qs1TU3vJeHcv40ZYZhxASvVe/McebFgVt77BNxa64eRVah49un0= 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=bYolj3D9; 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="bYolj3D9" 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 C53141595; Wed, 22 Jul 2026 08:31:04 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2C0253F66F; Wed, 22 Jul 2026 08:31:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734268; bh=j0suFj/k8Gjr4NVwWjc1PSJ1cuCmTYQ6kxO/jY4zAXM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bYolj3D92O1Bkcb60RbrELEOeLxC7qGiqrMWoWtuCVK9o1rROA8BeSTEehzqczBjF eYwaWgknouSSn8Jr4x8hjddfjdjfPza4khbR2hWMic7OBD53WOHQBqO1G9dCqsrvXW gFBujbdyV1Mk5pLV6+vLyHnOJZ3ZEHNvXsqCp0Ew= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:12 +0100 Subject: [PATCH RFC v2 04/20] LoongArch: mm: define pud_leaf() only when PUD exists 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: <20260722-dummy_ptxp3-v2-4-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=985; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=XSgg9DU4z+fpwZlmcppVFAW3W7NViUDDiwwjek4Nc8g=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIRg3ZFYgpHwFK1On9j8uxrxy90og7ahILe6 1yqnuhRWRWJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEQAKCRBt1cPRWsUx M1QWDACgUOyq20o0bRU6YzrYy+b7sre2Ng1kMqamUWE3FtJ3UDmIzrC5o6Iq/xiJuQ3V8mER2+u sevnTIQQr89vZ9/I5k+KZosUXZ7NfZlvXH+uxw6usioIMN8Efb/0o7XAhncpDgnrhz0jqJReJ0c 1FeAfWsc6PjjC+VCtxvXVgha6Xl8aEoKHnRFFsFgjeWCpMSQSvWE5cvMWaPhrkMA8dipKjE9B3n uJJ9l4UBtZuIa+OiF0higvwhEHRNZWiJvfJBssIZRq4J+qNjYnJmWaAfiiEEJtExocw3XkhHcZR bMflTxQkLe50zAegke/F3vuVZzXG0oSAyz5bDqzjnCYTY0YLf4L4C+PVKcIeOg8L1CMkgY7ZuAs jzmsrFaiIVlZeT+2qxJHempmPcEYOFmjrXOS+OlUA39p1kZ8vQzlvLM63vb4Ync4R1M4lQ7dOhq guDP4rJuLCL73MzRDrsWdrcsvjAB/6UlAUTfuSNeyvc4TBQH32QYx3FAtAbKB/T/1YZiE= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" In include/asm-generic/pgtable-nopmd.h, we do have a hard-coded pud_leaf()=3Dfalse inline function, but we miss the "define pud_leaf pud_leaf" part. To prepare for fixing that, define pud_leaf() only if we don't have __PAGETABLE_PMD_FOLDED. Signed-off-by: David Hildenbrand (Arm) --- arch/loongarch/include/asm/pgtable.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/include/= asm/pgtable.h index 1952e34bc8ee..434e5b483466 100644 --- a/arch/loongarch/include/asm/pgtable.h +++ b/arch/loongarch/include/asm/pgtable.h @@ -636,7 +636,9 @@ static inline long pmd_protnone(pmd_t pmd) #endif /* CONFIG_ARCH_HAS_PTE_PROTNONE */ =20 #define pmd_leaf(pmd) ((pmd_val(pmd) & _PAGE_HUGE) !=3D 0) +#ifndef __PAGETABLE_PMD_FOLDED #define pud_leaf(pud) ((pud_val(pud) & _PAGE_HUGE) !=3D 0) +#endif =20 /* * We provide our own get_unmapped area to cope with the virtual aliasing --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9D1BF4DB57D; Wed, 22 Jul 2026 15:31:16 +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=1784734278; cv=none; b=A8IWnOIxcpy4yqtNYaB1hhAwZk1dAigJHafHKibSt0lQY1MfnTtgobp8GmIv4E8Z2m/YLSAgENwTT8KxTrNPkdyx9JkXctSyVtpRL38BGbjiULS6KrRLclBImSgdg36IIo1WO/dPGN35LVOxX+KduBanubM33JXPnTsRTcvtzdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734278; c=relaxed/simple; bh=hiWrXKZl3HSQimA2aMCTib+KVKF++dHLJJBYh+lph9o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WuPt3cd0Hx8SWKS7W+d7Qyz1y0qT4ZucDJFF8hf6mfuChc27uOphMLXfA6NHE0Xd0Iw5TJ2DjcpSiyrx7b0R1oSHsROtVVEFgA7Maf48SWt81Lb0ufT4SOFTN29zDQWGbO7gwjjhW93Ux8cCrfaAppVqA4PFQDQIKK1R4rtenG0= 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=MPNrLQ+Y; 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="MPNrLQ+Y" 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 DF1B51691; Wed, 22 Jul 2026 08:31:11 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 43CC43F66F; Wed, 22 Jul 2026 08:31:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734276; bh=hiWrXKZl3HSQimA2aMCTib+KVKF++dHLJJBYh+lph9o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MPNrLQ+YsrzFiOpSP9SWG7N/+MHgnknKNZkXq4aPF58fJCxXjdRe8DHJBZU1yH/gb Hz/yrfkTsAkIA/ai9FsVtwg3y7MKal7n0Ve6mdFNF8PditHoNSpER1jfZuPa1LaR0O RKS15ZaEJK8eMHTb91p12+ZneLnHBLh7wAv66T/M= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:13 +0100 Subject: [PATCH RFC v2 05/20] MIPS: mm: define pud_leaf() only when PUD exists 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: <20260722-dummy_ptxp3-v2-5-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=954; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=H+H/wmu4330VwmFZtb9J1sA2hSnEoaKRqGEvxUP6qx4=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIRWk1b7HFDPY1VFchgF5Cds4RBwgntIkDQd 5jEN4eIWxmJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEQAKCRBt1cPRWsUx M6wGDAC2lHq5x8fgh5N3V0oN64yuI0v5l4DrbkPQqL3r9rW2b0FNVBd8zIJiTJmI0CpqtAOemH4 07Hnd7BkZnZpKDbHohJSPnUdu086S156nZ5ujv4kOhoHf8KmNwkqeHp18R78FvRHCex06Ri81uu vfeUTcJSNH5iNsf9kMiwUlTIsfEcXZA4/xSPo54Qe2vfVKC28/Y9VXC4xeiT92Sx0XyUgD5cQdu 5sGaCdBzlMbyiAdTA4BA0bjCbVvtvdaz0mihbWktNtc5Ep0aa57zWF54tpr7+vdIp3Hl7AFudJz bf3BBQPe4rLdeg2tMCLgcXy2dUxCbFZJRH/oGKD8u59MwaVyGN5z4J01wLxQap/KzJi5ux9/KiP Mf4bjM2FpSXqbhPa479cy4ItfK3JCYLe+rXwrUEmg9zfiY2DG7BfXN3hY99ee4pjgVHIswn26Gy LkGQcigk9fzVC8V+gFi2TGvn5JttPDqyJr8QzSiXoSgwRxNuqZEx+nlFB5lY+w/pxZ7YA= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" In include/asm-generic/pgtable-nopmd.h, we do have a hard-coded pud_leaf()=3Dfalse inline function, but we miss the "define pud_leaf pud_leaf" part. To prepare for fixing that, define pud_leaf() only if we don't have __PAGETABLE_PMD_FOLDED. Signed-off-by: David Hildenbrand (Arm) --- arch/mips/include/asm/pgtable.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtabl= e.h index fa7b935f947c..151f4d15bd12 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h @@ -745,8 +745,10 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_= struct *mm, =20 #ifdef _PAGE_HUGE #define pmd_leaf(pmd) ((pmd_val(pmd) & _PAGE_HUGE) !=3D 0) +#ifndef __PAGETABLE_PMD_FOLDED #define pud_leaf(pud) ((pud_val(pud) & _PAGE_HUGE) !=3D 0) #endif +#endif =20 #define gup_fast_permitted(start, end) (!cpu_has_dc_aliases) =20 --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1DEBF36B914; Wed, 22 Jul 2026 15:31:23 +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=1784734286; cv=none; b=LyzZEG/c3gxnkYqzlrXAwk+ZioSoBGkjef/+BMQQx4HhzfO9HIBvVKV3tEABDcJlf0JG8+tf96CTJ/XR+OUeqj83sG5wAs9gy4KuHdyfwBrYB9IponfL0w4eJvuhcghwFD6ktbSXdbb1r/2LH6+rDsT8Ho1TaJGsnWGC6onqqII= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734286; c=relaxed/simple; bh=E1LhS2d41pv7baaV3zaz0144dqW/PG1F+Ej5483Lbng=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FAlzauFT/AOBHX7k/2js+zsG1n6mtKijF3yND+xfKajkJgSPWyiQca/KV4OUF3kdjbMHDKHdj2I9hBLghpq1sKzwSy90JW/nqqw6sIbFvXhSHQMV+r5iJ0amtMcBaV1gptLH+sJFrSGzQ5gpAXu1rmHTgrU1mw7n8EU28LV9A3Y= 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=lhoYvQT1; 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="lhoYvQT1" 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 F38231595; Wed, 22 Jul 2026 08:31:18 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5B3493F66F; Wed, 22 Jul 2026 08:31:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734283; bh=E1LhS2d41pv7baaV3zaz0144dqW/PG1F+Ej5483Lbng=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lhoYvQT1w/IrX0K4Mz20bVq5L/ka6VnXZofM/W5GYHE62WoUBEG5gc1856dbenu9h tVSS3WTWbWEzALvuaSp6JOD8Q7fVujcuj9iL3UuqVm6ykvFbUPP/kKNKoNRMXSQQxJ UMdqAjYwiKk84qvk257x6xz3Y6VBCAiksmdwCXwI= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:14 +0100 Subject: [PATCH RFC v2 06/20] mm/pgtable: define (pgd|p4d|pud)_leaf() for folded 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: <20260722-dummy_ptxp3-v2-6-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4436; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=DaldeU24DqLVpaLFh5jtkpxB6dgJTv3Nx5Huqygsqtk=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOISzCmr9D/oZBISBy2aPH6Y1owFEcVQbTYPE FQQHENr0nCJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEgAKCRBt1cPRWsUx M7BuC/9DOmwNzErpw4yUvDpTOEudVtnYd/d86z6Yy9oST/ZFBBZ5AqzTOb0jaNKYiVD8Eh9tC4R cLuaipwND2meOmSwGJIAMr1UDpK1tzxMu9uOCCr/2v1689RWhx10vpLpS+ix07+j/bL+M8wPJce WqnmfEHSBYlYv7iK4SUB/71eP1qm+82qoTB50mG3cqkX7OEzogIJ7oGSmPzHZ42iNeXLSzGUFOK qQc20KG8ztyHSgEegHrB6ScTc+qDfAjIoy6skrSo5jcTYdFgcYixmHPKKpfDm8ETWq2/KUuxnC0 3f/g5pYT/gBj9+bRvVuLVI94mC9MJajCdZbb5xUpVEMUI9wMnt+Lok3L6JkpXyhPBDGDzVTdWgr jNiXTd45Es+1xfvezTd7aDh4Bf+UZMQbQ0up4DM3it7nHvHfdoDdmyn3RsBtr+P7ckeuJHA+nEk KC1zwp9kX9NDF5dbuV3NvrKIz9KvhUxRqZUNqZGsjm44kk5cEgnPPU0i9/LfIDX/+9e6c= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" Let's define (pgd|p4d|pud)_leaf(), hard-coding it to "false". Note that we missed to define pud_leaf() before, allowing architectures to unknowingly overwrite it. Still use static inline functions (type checking), and while at it, just use "bool" as a return value. We can now drop the arm64 custom variant that did that. As it documents: Note: reusing the original pointer means that we may dereference the same (live) page-table entry multiple times. This is safe because it is still only loaded once in the context of each level and the CPU guarantees same-address read-after-read ordering. We now have the same situation. Don't document that, as we will be removing the double read next. Signed-off-by: David Hildenbrand (Arm) --- arch/arm64/include/asm/pgtable.h | 23 ----------------------- include/asm-generic/pgtable-nop4d.h | 2 ++ include/asm-generic/pgtable-nopmd.h | 3 ++- include/asm-generic/pgtable-nopud.h | 2 ++ 4 files changed, 6 insertions(+), 24 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgta= ble.h index a2681d755358..6185fc291fd7 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -1188,29 +1188,6 @@ static inline bool pgtable_l5_enabled(void) { return= false; } #define p4d_clear_fixmap() =20 #define p4d_offset_kimg(dir,addr) ((p4d_t *)dir) - -static inline -p4d_t *p4d_offset_lockless_folded(pgd_t *pgdp, pgd_t pgd, unsigned long ad= dr) -{ - /* - * With runtime folding of the pud, pud_offset_lockless() passes - * the 'pgd_t *' we return here to p4d_to_folded_pud(), which - * will offset the pointer assuming that it points into - * a page-table page. However, the fast GUP path passes us a - * pgd_t allocated on the stack and so we must use the original - * pointer in 'pgdp' to construct the p4d pointer instead of - * using the generic p4d_offset_lockless() implementation. - * - * Note: reusing the original pointer means that we may - * dereference the same (live) page-table entry multiple times. - * This is safe because it is still only loaded once in the - * context of each level and the CPU guarantees same-address - * read-after-read ordering. - */ - return p4d_offset(pgdp, addr); -} -#define p4d_offset_lockless p4d_offset_lockless_folded - #endif /* CONFIG_PGTABLE_LEVELS > 4 */ =20 #define pgd_ERROR(e) \ diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgta= ble-nop4d.h index 89c21f84cffb..c6a5a43899b5 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -22,6 +22,8 @@ static inline int pgd_none(pgd_t pgd) { return 0; } static inline int pgd_bad(pgd_t pgd) { return 0; } static inline int pgd_present(pgd_t pgd) { return 1; } static inline void pgd_clear(pgd_t *pgd) { } +static inline bool pgd_leaf(pgd_t pgd) { return false; } +#define pgd_leaf pgd_leaf #define p4d_ERROR(p4d) (pgd_ERROR((p4d).pgd)) =20 #define pgd_populate(mm, pgd, p4d) do { } while (0) diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgta= ble-nopmd.h index 36b6490ed180..dbd38b4c3a05 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -31,7 +31,8 @@ static inline int pud_none(pud_t pud) { return 0; } static inline int pud_bad(pud_t pud) { return 0; } static inline int pud_present(pud_t pud) { return 1; } static inline int pud_user(pud_t pud) { return 0; } -static inline int pud_leaf(pud_t pud) { return 0; } +static inline bool pud_leaf(pud_t pud) { return false; } +#define pud_leaf pud_leaf static inline void pud_clear(pud_t *pud) { } #define pmd_ERROR(pmd) (pud_ERROR((pmd).pud)) =20 diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgta= ble-nopud.h index 356cbfbaab24..6c9bca78047c 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h @@ -29,6 +29,8 @@ static inline int p4d_none(p4d_t p4d) { return 0; } static inline int p4d_bad(p4d_t p4d) { return 0; } static inline int p4d_present(p4d_t p4d) { return 1; } static inline void p4d_clear(p4d_t *p4d) { } +static inline bool p4d_leaf(p4d_t p4d) { return false; } +#define p4d_leaf p4d_leaf #define pud_ERROR(pud) (p4d_ERROR((pud).p4d)) =20 #define p4d_populate(mm, p4d, pud) do { } while (0) --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D4BD0472F93; Wed, 22 Jul 2026 15:31:30 +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=1784734292; cv=none; b=GiKKTe6Dg0kjITvESLA15iWxZJ4sl/BfDrs6fmf8UGmWSND+2wghOucSzkn/PguS0xkSvbNQifgk1B/UtuoQ3QLb5O3uMMKTNoFFVdFtEwOIy+LDOAOBLMI7RDBPGQgxd8YRm6HXkXQENYbrYs3hX2o6V30WCrU5OBP/L8IJBw0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734292; c=relaxed/simple; bh=EDS9AlMeDxpN0DuuA4Bhb7IK1Ve/HomsYNUzHrnpR4I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TQE4cugxcKA5xDgDO76Aw7UhizLTh4M+WaV2BAboo2s+ovUQ30KhWjSjuCEVEt/ZNcfOeq1uTAaGUa71MnVYhuhO7KswyF6lwhaiXYfQt1Ni0ZGCUe92eOZUknwKmDMbgz6uNQlDC/7eqQVTETtupSwm1jtIH0tzMayMIJrVEww= 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=eo9nYy+0; 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="eo9nYy+0" 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 1AF1D168F; Wed, 22 Jul 2026 08:31:26 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 72B903F66F; Wed, 22 Jul 2026 08:31:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734290; bh=EDS9AlMeDxpN0DuuA4Bhb7IK1Ve/HomsYNUzHrnpR4I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eo9nYy+06fIf8UQQOHpRhtRbtJUHdIHU5M4nAex7G3P7astgDStgdt2hMeQyYAqSe yo8B2FWjYpXyyHByHNmKAvHBdA0m4zv6FwrlLGp/vPnM/Thugqw0A32y7kI2is2ohe HBjlOUMx1+Pk6p1UZMYZKJxrrKYZ3iaYd/Q0V6kQ= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:15 +0100 Subject: [PATCH RFC v2 07/20] mm/pgtable: define (pgd|p4d|pud)_offset_lockless() for folded 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: <20260722-dummy_ptxp3-v2-7-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2393; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=cKWNMRXsJxpGGQUCO3dJXUBeTYEap08Ll2GdMvnbC84=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOISgRJKMSvsCYR1STuAZc/EAmMgILlkU4XaH 4rLJvbb3vSJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEgAKCRBt1cPRWsUx MzugC/42IcDVD5LxkniPNsBlkfghPK1wDyrSWxWr7TeFTU6ejjtMKTztgT4RF+0h3SxczGZ3zfL m8DyL1Z/YOze8tkRyHQ+9aaZuP1UcIWo0J068oU8zBIGy/e1xo0qcFy+HNb5ifhKaSp/vqXVq7I /CORT3klFa/PhxiK1FiYRxln768srrbd+G4S7s/j5I0VRIJHf7rkLAoGqbP2sLn+dZ0b1UlggYJ 1wr6TMPzn4sfrdgq6Hj8WYTYdddMWcODgOQkHiW0s0qaJW6UZo5f6Jqfonw5Wmhlqb7wj0c3MBq kjZxDGOUKw4fVaREwFlSqCNq/Rx7z7Kd4iwRp4lIuNcc0KPeY7Gpo3D67A+mXQmj2oItT5Oe4h5 mJKipfT4xSDeBAnIDui/JSryAXoNEcWeMA/xfJfC1YGH7hZDa5rWPdbWplDOCWyd/9urEXKuKNo jIZ/6eL7alizPWnvSAgA0uJjIti7vbu5VdGE9+KfBk/IAandrmJNpv3QYgD22NJ68bnqY= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" The default helpers fallback to pud_offset(), passing a pointer to the stack value. Let's provide variants that do exactly what (pgd|p4d|pud)_offset() do, but ignore the passed pgd_t/p4d_t/pud_t, consequently not working on a pointer to the stack value like the default handlers would. Signed-off-by: David Hildenbrand (Arm) --- include/asm-generic/pgtable-nop4d.h | 7 +++++++ include/asm-generic/pgtable-nopmd.h | 7 +++++++ include/asm-generic/pgtable-nopud.h | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgta= ble-nop4d.h index c6a5a43899b5..019c3f074b77 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -39,6 +39,13 @@ static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned lon= g address) return (p4d_t *)pgd; } =20 +static inline p4d_t *p4d_offset_lockless(pgd_t *pgdp, pgd_t pgd, + unsigned long address) +{ + return (p4d_t *)pgdp; +} +#define p4d_offset_lockless p4d_offset_lockless + #define p4d_val(x) (pgd_val((x).pgd)) #define __p4d(x) ((p4d_t) { __pgd(x) }) =20 diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgta= ble-nopmd.h index dbd38b4c3a05..ae2eff44889a 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -50,6 +50,13 @@ static inline pmd_t * pmd_offset(pud_t * pud, unsigned l= ong address) } #define pmd_offset pmd_offset =20 +static inline pmd_t *pmd_offset_lockless(pud_t *pudp, pud_t pud, + unsigned long address) +{ + return (pmd_t *)pudp; +} +#define pmd_offset_lockless pmd_offset_lockless + #define pmd_val(x) (pud_val((x).pud)) #define __pmd(x) ((pmd_t) { __pud(x) } ) =20 diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgta= ble-nopud.h index 6c9bca78047c..5a2b0a81ae19 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h @@ -47,6 +47,13 @@ static inline pud_t *pud_offset(p4d_t *p4d, unsigned lon= g address) } #define pud_offset pud_offset =20 +static inline pud_t *pud_offset_lockless(p4d_t *p4dp, p4d_t p4d, + unsigned long address) +{ + return (pud_t *)p4dp; +} +#define pud_offset_lockless pud_offset_lockless + #define pud_val(x) (p4d_val((x).p4d)) #define __pud(x) ((pud_t) { __p4d(x) }) =20 --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3042E3D0914; Wed, 22 Jul 2026 15:31: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=1784734299; cv=none; b=Eu/d4Bfps3SLJh9ZnmlfBrVLzAfhvfVeDAwzK+moZo9r/7QzdmgU9Swa4+202iqlVluk8ZMqhOuuI7C0eo5oo+QMspNF+d9pUHdrv/89ttLT/4pCGU9AcSrwo8UvUvpELXyOf4wKy03eoe+1ias1qG6es0/ea2u07lXvdLB4x28= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734299; c=relaxed/simple; bh=YcD0jzoOahG6x/x7befgYnktlqrNhCa1TVm2jqZpY/w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=boQUPsPqHSXlQZtLvTPnfC6ZFvY++WR37ZG5wsBBs84sbXqqYnz6Dzp+A6XgwetPStqVSmBH1obqsIuKyZmNEoNlYM5Fxyo+gytTZdfn8DbVHyQwVCZ8xE4faSacGiT92DlXYGyo/resJGrUaNjlbGuFC8TUHVimoJ6cktYLf8k= 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=YB+ECKku; 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="YB+ECKku" 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 55A83168F; Wed, 22 Jul 2026 08:31:33 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8EEAE3F66F; Wed, 22 Jul 2026 08:31:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734297; bh=YcD0jzoOahG6x/x7befgYnktlqrNhCa1TVm2jqZpY/w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YB+ECKku/PoYq2WT0AjK5FWjpwHm5WhvpyBL9iss6rJkCx9EWxGy5Xj4MUWQUp/nc bB/WO9swVClnAHd0CCdiTAWlLHW6My7AKAaZCl2lFEqQMRkMNS2H2HjRUcp/qutLrl XMv+zI5+luxlx6Hkz3AiZYLUrcxHFci+B5d421/c= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:16 +0100 Subject: [PATCH RFC v2 08/20] mm: vmscan: remove stack copy address of pud pass in wallk_pud_range() 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: <20260722-dummy_ptxp3-v2-8-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=931; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=YcD0jzoOahG6x/x7befgYnktlqrNhCa1TVm2jqZpY/w=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOITGIRilBrCRHcB2LdtqoEOmFgxIF6Hd+Vnk IFCao2dq7WJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEwAKCRBt1cPRWsUx M9rNDACPX1gvLIbSeFSgpsXYw5fiwtsaAo8fF9fow2EFQfuqsIXmDvvDuGvc+tGU4BaWuGH0mzM eklxLiUek0JNBF0GJ2x3A4Kq/ui/Kd9sAqMqxOPWurPgfQayM/59RN2xzFcJzTZhoDSZjVcP8Ru FK3kg4Bd/FVwqL91rO7uKn8nVD/occoSK5fX2tc1M7dm/Z484Oq0dzF8MCB+CDCrvRkASH5o8fR 7OBG17OYADT6CJpJ30NG3tnWw/z18SHM2Ho6dtWlczbf93oHjLBn9TtaJJ6TvsI6HevcytP/R4s mPt0zU94Gtx1B3c6i5b/GMxplXDdm1GNMjqlqgeIzBVATylzMaefHkFdkR/Ep2mCZJRH0hgBYvX M/U0vigKgKdlCN76Y4jnDC3QQ+LXNhIy8HWUDZKioYXWffW32R7/0W3xLPN4De5MFGGNUwfftWV WcWIiT/h7TzBoZGus/gSVNMHtcSBu9NwtPvLEQDo4Q8vWWR7vsw4ZNL4ki05RrlcOBNyM= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 The behaviour of pXdp_get() will change with generic compile-time folded page tables. To prepare for that, replace passing the address of a stack copy of a pXd to walk_pmd_range() with passing the pud pointer directly, allowing folded entries to be ignored. There should be no functional change. Signed-off-by: Yeoreum Yun Reviewed-by: Muhammad Usama Anjum --- mm/vmscan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 06e103f9781e..0c9c4ac89e09 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3727,7 +3727,7 @@ static int walk_pud_range(p4d_t *p4d, unsigned long s= tart, unsigned long end, if (!pud_present(val) || WARN_ON_ONCE(pud_leaf(val))) continue; =20 - walk_pmd_range(&val, addr, next, args); + walk_pmd_range(pud + i, addr, next, args); =20 if (need_resched() || walk->batched >=3D MAX_LRU_BATCH) { end =3D (addr | ~PUD_MASK) + 1; --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 62B6735DD1C; Wed, 22 Jul 2026 15:31: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=1784734307; cv=none; b=W9dihA8DVAops1AwDXqph7zWE/qB+d0lniNAoUNS/qCACfRHdTu/ccAvEpqwxju2h/BtYlTKaeKSCNZeO9fBbHU217h9AgWLREhGDgkz13g5yzhgtHrWoIjcVDDSkhJMiB3Il+3WuEp73DpUIPFHcAyVkHKmelO2I8FKBziCm34= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734307; c=relaxed/simple; bh=hEzwBV+PsJMZFHQUBE/OtSpPBhTaKSML/8YZA8FQaPc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lvku3DvymarZKEhBDOJa+2nDNaTFOlR41tuZfblbSb77lrmEx/A9ZfBBRfzMkcrQxfEsgnQzSAJJGSpaFwL2ixEBi2uxx5z5M/j+gJVN2dbN3CgaYsgO5Y3MmCdZceMlug98CoVcnrqSFfPNVV8inOt0unPNkzL1I0lF3xrvnT4= 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=CGzjPkOm; 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="CGzjPkOm" 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 854831595; Wed, 22 Jul 2026 08:31:40 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C595E3F66F; Wed, 22 Jul 2026 08:31:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734304; bh=hEzwBV+PsJMZFHQUBE/OtSpPBhTaKSML/8YZA8FQaPc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CGzjPkOmqAddjbsG8ADR28xqNpwQCbCIVZQ28QPxQ470spehbu7sZXGkzEiyKQCoD 9tqpzRwhimPeUsyXWspyAEsWw7rw7IWTxF6vIlo+4hPzHZAP1YgBSnkFAgfGE034hI 0u2bUvl46g8HFbNHc47KLB4l2WViWfKtN28DE45Y= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:17 +0100 Subject: [PATCH RFC v2 09/20] loongarch: kvm: remove stack copy address of pXd in pXd_offset() 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: <20260722-dummy_ptxp3-v2-9-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1993; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=hEzwBV+PsJMZFHQUBE/OtSpPBhTaKSML/8YZA8FQaPc=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOITNOofyACG8/QiCZei8Ic1hoiiCQXEac7qC yPXQ1a1hn+JAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiEwAKCRBt1cPRWsUx M0cgDADIz8U7Oh583pQ27I014VPnh9IxMAk2ecbKuCG9fQ0cfoJXO7FKXClIOvwmJMb+1doNs7y pnLXHfrzcROqjlTIY4MzxF97/uzFMjwMVPLeUTg3f9AgeYTtMCTkukqo2k1FOOjd2GMbivyvbmt byvNk66OHNYCC7ny4sUIqRzocrl4arOXlfLn9qTAaE7O/D3E+y2c+HgeDcikVt6fmwNuSLQlnsO duGz8XaSPaZAiytq7Knyo+dn/smQ5WZ1rt/0C7kENuI/dP88VtKsJUFqVFndL6Eq7ftgSbN/qAS pUgbXo6AEn00FnJ1//leWcvPuf3h+Giag5012lyG/teyPR9hv4ksXdc476DwrNshgkhHWkz6wx+ Jhh+VYegE8+aQQSZqdgh9xIb+Geg5itZ0BaOoPAOlK5iNx5ZW6dfJhud63h1RIhIrdbAqEL3eSk n9h+7AYiZRJHvZzaxeJopt3mxwL/gzUQy8f3AzWEO5OSl9XPu4VNsTuHVFzCatpC3pFkY= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 The behaviour of pXdp_get() will change with generic compile-time folded page tables. To prepare for that, rework host_pfn_mapping_level() to avoid use of a stack copy of a pXd and pass it as argument to pXd_offset() so that the folded entries value is ignored. Replace direct uses of stack-based pXd values with pXd_offset_lockless(). And there should be no functional change. Signed-off-by: Yeoreum Yun --- arch/loongarch/kvm/mmu.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/arch/loongarch/kvm/mmu.c b/arch/loongarch/kvm/mmu.c index e104897aa532..837b40bb694f 100644 --- a/arch/loongarch/kvm/mmu.c +++ b/arch/loongarch/kvm/mmu.c @@ -669,10 +669,10 @@ static int host_pfn_mapping_level(struct kvm *kvm, gf= n_t gfn, int level =3D 0; unsigned long hva; unsigned long flags; - pgd_t pgd; - p4d_t p4d; - pud_t pud; - pmd_t pmd; + pgd_t *pgdp, pgd; + p4d_t *p4dp, p4d; + pud_t *pudp, pud; + pmd_t *pmdp, pmd; =20 /* * Note, using the already-retrieved memslot and __gfn_to_hva_memslot() @@ -698,19 +698,23 @@ static int host_pfn_mapping_level(struct kvm *kvm, gf= n_t gfn, * value) and then p*d_offset() walks into the target huge page instead * of the old page table (sees the new value). */ - pgd =3D pgdp_get(pgd_offset(kvm->mm, hva)); + pgdp =3D pgd_offset(kvm->mm, hva); + pgd =3D pgdp_get(pgdp); if (pgd_none(pgd)) goto out; =20 - p4d =3D p4dp_get(p4d_offset(&pgd, hva)); + p4dp =3D p4d_offset_lockless(pgdp, pgd, hva); + p4d =3D p4dp_get(p4dp); if (p4d_none(p4d) || !p4d_present(p4d)) goto out; =20 - pud =3D pudp_get(pud_offset(&p4d, hva)); + pudp =3D pud_offset_lockless(p4dp, p4d, hva); + pud =3D pudp_get(pudp); if (pud_none(pud) || !pud_present(pud)) goto out; =20 - pmd =3D pmdp_get(pmd_offset(&pud, hva)); + pmdp =3D pmd_offset_lockless(pudp, pud, hva); + pmd =3D pmdp_get(pmdp); if (pmd_none(pmd) || !pmd_present(pmd)) goto out; =20 --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9575F3909B7; Wed, 22 Jul 2026 15:31:52 +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=1784734314; cv=none; b=DuCp3dTs78dJIAyHHPBKTOMuntUkrA3x7fRpvh0gb0bdKZJvomMVu8Lv9gwObdfBu9LmpX707uNKuQ3abBm01H9/gtLgeuptfnwsEGc15IYoYONaFzN4/BiNe2BELhQhpxNoplw0LTYagvILF4BDyJLPxnibHzioFh9zb7Uo1rY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734314; c=relaxed/simple; bh=46CYi8oneBLiNJ3cpNNEyn5Md6GOQd0YanozKiYt8po=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ayW6cONPb//jmARY48ZRXhlNGlXYO2FykJmfkAdgNJ/qfI2Ra1U47qV+AwyigNT6UP8EFMByUlyQ9F+vlGYTZfzYp0EE1uxgEbkjn/abdVer6UrXCOIajm7HIGPDTjfYl8W9jt6wPlSDsnDj182bDUU8O+kCzoTUPB99vYxtBdY= 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=jM1S8iz1; 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="jM1S8iz1" 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 BD20C168F; Wed, 22 Jul 2026 08:31:47 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 072B93F66F; Wed, 22 Jul 2026 08:31:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734311; bh=46CYi8oneBLiNJ3cpNNEyn5Md6GOQd0YanozKiYt8po=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jM1S8iz1iTRGQItlX7bp8OqSO+oyVlfDJ/6Wqo+ecZp0Q3yjOq9RZ8usX0UOKAqdB P1f36++X8N0WL6V+n6HXyLwlbTy47ZEMBHANTZ8C2zg8NPIobT6lNhpIt2el4T+mN4 SN2z2ausZnra+HPuPGgyYdAGZU1O+gsTpQ7G4F04= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:18 +0100 Subject: [PATCH RFC v2 10/20] riscv: kvm: remove stack copy address of pXd in pXd_offset() 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: <20260722-dummy_ptxp3-v2-10-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2021; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=46CYi8oneBLiNJ3cpNNEyn5Md6GOQd0YanozKiYt8po=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIUt6bDSgi5vKRp2azbTZnUNQ0o4jrxwlulo USuBIe0QHeJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFAAKCRBt1cPRWsUx MzgLC/sFSR+PPsMxGI/0F4kx4qmYYrHefAszi306MKilHpWfr54K5HusUgi3Hq5dAjcstdBJy/x p1yWh1Srqlg6E2HoaitTgTj8dMzpHaPLDNaE6GE9Qnk4xCdQa6i1NQj/ZP44ObsaENtoz2Knk6R BOWFfE4FG1OmUrUlP5v96/nsrrgnkgOhkFYccJoF18wq7vSKczb2+tfmJT6EcRaOVAaQarYNUY3 Bt9oAkJwM11kRKYLdAgHc29lOOYSv1Ou2BJzMZhLhJdnEkkGrCeWUiwoTr0EryFm0TIuwksIzjj x5Q2OiKJ0RcsLn4GBIqjHv21HGQrlNj3+qhLW2pGQSJq/Q2+IhIdof/ABN6LeigvATALLiHjnZW dr6e5gcgPjESIQqXASzCMKKfV3u3K50pAbwkaSmopLDcVQIIs7nkSXViLg2qoBq4dXZJUzsQNnl FnhiLenc7K1rXADF+6WMJqqL2IHJyIUqPFJoMJ9fk09X+WGNlXwmEnc5wq081TwA5jk5o= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 The behaviour of pXdp_get() will change with generic compile-time folded page tables. To prepare for that, rework get_hva_mapping_size() to avoid use of a stack copy of a pXd and pass it as argument to pXd_offset() so that the folded entries value is ignored. Replace direct uses of stack-based pXd values with pXd_offset_lockless() and there should be no functional change. Signed-off-by: Yeoreum Yun --- arch/riscv/kvm/mmu.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c index 082f9b261733..6d6042b81d79 100644 --- a/arch/riscv/kvm/mmu.c +++ b/arch/riscv/kvm/mmu.c @@ -362,10 +362,10 @@ static int get_hva_mapping_size(struct kvm *kvm, { int size =3D PAGE_SIZE; unsigned long flags; - pgd_t pgd; - p4d_t p4d; - pud_t pud; - pmd_t pmd; + pgd_t *pgdp, pgd; + p4d_t *p4dp, p4d; + pud_t *pudp, pud; + pmd_t *pmdp, pmd; =20 /* * Disable IRQs to prevent concurrent tear down of host page tables, @@ -381,15 +381,18 @@ static int get_hva_mapping_size(struct kvm *kvm, * value) and then p*d_offset() walks into the target huge page instead * of the old page table (sees the new value). */ - pgd =3D pgdp_get(pgd_offset(kvm->mm, hva)); + pgdp =3D pgd_offset(kvm->mm, hva); + pgd =3D pgdp_get(pgdp); if (pgd_none(pgd)) goto out; =20 - p4d =3D p4dp_get(p4d_offset(&pgd, hva)); + p4dp =3D p4d_offset_lockless(pgdp, pgd, hva); + p4d =3D p4dp_get(p4dp); if (p4d_none(p4d) || !p4d_present(p4d)) goto out; =20 - pud =3D pudp_get(pud_offset(&p4d, hva)); + pudp =3D pud_offset_lockless(p4dp, p4d, hva); + pud =3D pudp_get(pudp); if (pud_none(pud) || !pud_present(pud)) goto out; =20 @@ -398,7 +401,8 @@ static int get_hva_mapping_size(struct kvm *kvm, goto out; } =20 - pmd =3D pmdp_get(pmd_offset(&pud, hva)); + pmdp =3D pmd_offset_lockless(pudp, pud, hva); + pmd =3D pmdp_get(pmdp); if (pmd_none(pmd) || !pmd_present(pmd)) goto out; =20 --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9E5103AF674; Wed, 22 Jul 2026 15:31:59 +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=1784734321; cv=none; b=seCG+R8n8ruLazyD7ZFXYobxGa91di+OCKaKpZ2psiPoSMZFb696XEz6Kk/kNUcpTyFuPk2yviQ3tLyRaY7+mln6Le16K3S+Yr7a8O3/24gctTrCEfdLaU3malaTzbS8XpeR7LP/4VjF2khmdKa2eBYVrbWbyY8d4Fp4TE3xh10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734321; c=relaxed/simple; bh=BNyk8CyAqeItQBxLsodWIbDNqn/FKn1s1a5JbLMyXg0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KcsO2L51mwazSCToW9O4Qxbim+iBJIBkP/8hYVSvCpmkoFAKAHjCGaR12IhJmthsnRFns3S4DwxDwSx2C4KoqBFlgzGSRJ/NkVs37WaOSeqHRAoM2LfqKg4VXtt/rMmO3eyUxmqcpOthzA792gSNmd8LW5secVH0phA3XSSuY9Y= 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=nVelSNf4; 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="nVelSNf4" 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 04DFF168F; Wed, 22 Jul 2026 08:31:55 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3E1793F66F; Wed, 22 Jul 2026 08:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734319; bh=BNyk8CyAqeItQBxLsodWIbDNqn/FKn1s1a5JbLMyXg0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nVelSNf49Z/PL4hzvXi9I+ovhPQfFxpTrcgba4IRwiDsXJb4/lzfB0w9E9AWpTlN+ XlypdXX8Tzqi2lH77UMU8VJtU6eJOKMbqc+YbYqWRa5Kx3iuZABWvg+6uw7VwdTRoS ysSsRjUkavfDsjm4KGRTkngrHYS8Lx6cmli2e94c= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:19 +0100 Subject: [PATCH RFC v2 11/20] riscv: mm: use proper set_pXd() for generic compile-time folded patable in vmalloc_fault() 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: <20260722-dummy_ptxp3-v2-11-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3559; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=BNyk8CyAqeItQBxLsodWIbDNqn/FKn1s1a5JbLMyXg0=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIUSdwhibi+Kg+43xsNkAmyGIM2ZSt8npnJG thQJjBQU3qJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFAAKCRBt1cPRWsUx M86vDACbfe2rqA5JLqwB1r2aI6NQY8HpJ6AiH6Necl3qXVG5NA8v7qXLIu86OSNbGaWGJ5Oj4xH r4xfGOv6rRCSuAPQ0+GAp1RRXiyUpQzL4oh++vcJlHnF3CdNLFnmC9yolfc3CAJ2/4KYO+6yZoi V6Oq9MSAmPb6L+hHPZZ1qFldjbj9rCdFcXeUwNZNoFRMVdwRT6Ajsn/Mk9cN38ql69vS6eu3856 LAiSDPE4Zw0UyIaN/DylptMhvwB7Vo/wjwfvDA5xQxSQTIW59wpMhTQw7YMDjrYsTPv9pmUMrZU CLY+c7nUOZRDF0UXenprqUBoCZPbWxF5PqKjxPfqXHnd8tJxjPKZmjJ1hMSUWD3ajoFnwv52pnN Dkbzx6nQ5R8jdPmyw9nbrEA82HMKttxQcn+/YrYglMcgE9Bsj+Wh7lurQq5VLQQI4cc4lAyx++0 TAcQofCfpAZCyOs5StFomNl9gnNc+L3qDSQwYy2ruGceQEd7vKIINnTsQHiC8FLmyYI4Y= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 The behaviour of pXdp_get() will change with generic compile-time folded page tables, making it invalid to use set_pXd() with the result of pXdp_get(). Instead, the appropriate first-level set_pXd() must be paired with the corresponding pXdp_get(). Therefore, call the appropriate set_pXd() for generic compile-time folded page tables so that vmalloc_fault() continues to handle folded entries correctly when checking pXd_present(). There should be no functional change. Signed-off-by: Yeoreum Yun --- arch/riscv/mm/fault.c | 52 ++++++++++++++++++++++++++++++++---------------= ---- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 04ed6f8acae4..b2bcaf10d13f 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -167,14 +167,16 @@ bad_area(struct pt_regs *regs, struct mm_struct *mm, = int code, =20 static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned = long addr) { - pgd_t *pgd, *pgd_k; - pud_t *pud_k; - p4d_t *p4d_k; - pmd_t *pmd_k; - pte_t *pte_k; + pgd_t *pgdp_k, *pgdp, pgd_k; + p4d_t *p4dp_k, *p4dp; + pud_t *pudp_k, *pudp, pud_k; + pmd_t *pmdp_k, *pmdp, pmd_k; + pte_t *ptep_k; int index; unsigned long pfn; =20 + BUILD_BUG_ON(CONFIG_PGTABLE_LEVELS !=3D 5 && CONFIG_PGTABLE_LEVELS !=3D 2= ); + /* User mode accesses just cause a SIGSEGV */ if (user_mode(regs)) return do_trap(regs, SIGSEGV, code, addr); @@ -189,39 +191,51 @@ static inline void vmalloc_fault(struct pt_regs *regs= , int code, unsigned long a */ index =3D pgd_index(addr); pfn =3D csr_read(CSR_SATP) & SATP_PPN; - pgd =3D (pgd_t *)pfn_to_virt(pfn) + index; - pgd_k =3D init_mm.pgd + index; =20 - if (!pgd_present(pgdp_get(pgd_k))) { + pgdp =3D (pgd_t *)pfn_to_virt(pfn) + index; + pgdp_k =3D init_mm.pgd + index; + + pgd_k =3D pgdp_get(pgdp_k); + if (!pgd_present(pgd_k)) { no_context(regs, addr); return; } - set_pgd(pgd, pgdp_get(pgd_k)); + if (CONFIG_PGTABLE_LEVELS =3D=3D 5) + set_pgd(pgdp, pgd_k); =20 - p4d_k =3D p4d_offset(pgd_k, addr); - if (!p4d_present(p4dp_get(p4d_k))) { + p4dp =3D p4d_offset(pgdp, addr); + p4dp_k =3D p4d_offset(pgdp_k, addr); + if (!p4d_present(p4dp_get(p4dp_k))) { no_context(regs, addr); return; } =20 - pud_k =3D pud_offset(p4d_k, addr); - if (!pud_present(pudp_get(pud_k))) { + pudp =3D pud_offset(p4dp, addr); + pudp_k =3D pud_offset(p4dp_k, addr); + + pud_k =3D pudp_get(pudp_k); + if (!pud_present(pud_k)) { no_context(regs, addr); return; } - if (pud_leaf(pudp_get(pud_k))) + if (pud_leaf(pud_k)) goto flush_tlb; =20 /* * Since the vmalloc area is global, it is unnecessary * to copy individual PTEs */ - pmd_k =3D pmd_offset(pud_k, addr); - if (!pmd_present(pmdp_get(pmd_k))) { + pmdp =3D pmd_offset(pudp, addr); + pmdp_k =3D pmd_offset(pudp_k, addr); + + pmd_k =3D pmdp_get(pmdp_k); + if (!pmd_present(pmd_k)) { no_context(regs, addr); return; } - if (pmd_leaf(pmdp_get(pmd_k))) + if (CONFIG_PGTABLE_LEVELS =3D=3D 2) + set_pmd(pmdp, pmd_k); + if (pmd_leaf(pmd_k)) goto flush_tlb; =20 /* @@ -230,8 +244,8 @@ static inline void vmalloc_fault(struct pt_regs *regs, = int code, unsigned long a * addresses. If we don't do this, this will just * silently loop forever. */ - pte_k =3D pte_offset_kernel(pmd_k, addr); - if (!pte_present(ptep_get(pte_k))) { + ptep_k =3D pte_offset_kernel(pmdp_k, addr); + if (!pte_present(ptep_get(ptep_k))) { no_context(regs, addr); return; } --=20 2.43.0 From nobody Fri Jul 24 22:54:56 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F26A63BCD04; Wed, 22 Jul 2026 15:32: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=1784734328; cv=none; b=E+wW9Re8bAnUEXLHCKN1LCmzqaxv6admK0aGj7mKPaTK2FG3kNJAhhIcqqtJa9YfgeQTmTjhjFFziuWJ2NLxTU2Bb6bywmFI94FATBoR2+lZYGobXj1nZJlOXB/tfY0I5BJxSJNTu5My04wG4w695FFsw+b0ynwwCgz73FuOaj4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734328; c=relaxed/simple; bh=wmJtmiPytl3HyZyDqwtjxdRsUOFgZxGgVlONXYHiJqA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hJfnOHraOcSXLYwweD/ajM+5TyxC/ErsQIOx/OzsgPATP7VQ+8+2vo/p1OCxRT/E/tBxKUX9BY5fNoe7hbpzTO/e+u3AFdh8ocRQZicwXb3RwlnHyfWPkaRIifUwooX5o7thwEJUlshy00kolaw0RlnrqcnCzku7Py8ygMg5W08= 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=f6SmQojq; 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="f6SmQojq" 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 3B4C4168F; Wed, 22 Jul 2026 08:32:02 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 749C13F66F; Wed, 22 Jul 2026 08:31:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734326; bh=wmJtmiPytl3HyZyDqwtjxdRsUOFgZxGgVlONXYHiJqA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=f6SmQojqGR7brRiEZavDDkmTWbw75QsPyhFd4pAG4O5+6Ju2I8ri3QCdZWN2rXkyN DCTNnGSdIhw7z2ehWnVgZaQ2zE6WyM6dw1A5orUEziWCCg2RkmxAjlcAHyBQDq35NO soM9uXuZ1k30ziofw8vM4Eb1IcYS6m8WnZbnkIfw= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:20 +0100 Subject: [PATCH RFC v2 12/20] x86: mm: define pudp_set_access_flags() when CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is enabled only. 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: <20260722-dummy_ptxp3-v2-12-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1039; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=wmJtmiPytl3HyZyDqwtjxdRsUOFgZxGgVlONXYHiJqA=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIVfJAQ0bxNGFW5YSiAzNm7IwBxCLOqc80gj i7axQ/7jfKJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFQAKCRBt1cPRWsUx M8CyC/9q4ATnNzBRhzDxRuqLX64PSTzrSfdIPjo8WlRytut8ZrhHFMfgcsu1OWhST0JPWq+r22v zJ6g8PXhJN5GkfC/aA5WFgbNDhiJO9mfOY4WJaWFSoB5qLe4rVE8KL1nSOeHn4he5thhorlk+FZ o1l4TLcbjqnpdwBpnKy9yw8hjMCo1D5TlY7XD6cf4nX6YeSoQzJK3j77HvuaM/zd+70XJcuZkfL 5Oyds34g83k0HLkkrjLBNu0DPunfEw8czmxodjY9Gvre/8CMOBUGGPSoNrCzTLjf/vjX5PWo3Rc oIGj8lh9egTAe+ruiexvMFVgMd62WeL/DvqiV/9KgLIluHYqsG7i7w9KvNOtjtUQ0XjkMtGcuOO nZVxKCU95sKFoKLDo5eYIJEZMubYpNqePB4xQQofkIs0yKScpMw20O2n7w64nCyFnn7uV86yb9N uOyUjDcvEWXUFQO0OPQ0pIwg21NrgYutufdstDwZ9vqKWkJclvbzJ9HKcNZlfdJcGaxsM= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 pudp_set_access_flags() is not used when CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is disabled. Therefore, define pudp_set_access_flags() only when CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is enabled. Signed-off-by: Yeoreum Yun --- arch/x86/mm/pgtable.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index f32facdb3035..edad847a2ecd 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -411,6 +411,7 @@ int pmdp_set_access_flags(struct vm_area_struct *vma, return changed; } =20 +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long addres= s, pud_t *pudp, pud_t entry, int dirty) { @@ -430,6 +431,7 @@ int pudp_set_access_flags(struct vm_area_struct *vma, u= nsigned long address, =20 return changed; } +#endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ #endif =20 bool ptep_test_and_clear_young(struct vm_area_struct *vma, --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5AE193D902E; Wed, 22 Jul 2026 15:32: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=1784734336; cv=none; b=RsuPQLgeKWU27jV6ujP1Jg7sS5ofJw+Qhi9G+dG6LKseEeDfWxPvrX4XVhBDBqwP+AtnuEF2Mu0dvRLYvv463iQCXKuvb92Uea+N2PqdmaM3yLHQmnUEaCtWS8UcqTJf+KKqV6fkElLCg6cxaveKfboOieVLqBQ8RMjo5177vxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734336; c=relaxed/simple; bh=yIEI9TusozWN8JuTGtczFutPYB9cl2kOS5ZHqTwGcQ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JO8IWojWId23QYjwdnycKtWNFh6A+IlrPlA2fsfaNUsAXnQH9zH+13WRge7Jy18c1wB1Fl7gALGA2ysp44hGmYG+K4dS6jx4YOkSY5o8ZnbfHRH8V4y+u14B2+uTOAJFM4wqIAiur2ExzyvRJJwgEZubtGTAaqrqYC3JWnx8+BI= 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=qRUJLFHg; 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="qRUJLFHg" 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 6EC20168F; Wed, 22 Jul 2026 08:32:09 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AA6373F66F; Wed, 22 Jul 2026 08:32:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734333; bh=yIEI9TusozWN8JuTGtczFutPYB9cl2kOS5ZHqTwGcQ4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qRUJLFHgOJjrfi+0gOnSAAWEwPfJRGMmZiCR/0lSgWgMyzUOCyvBmFc1wrXlZGTug +NmZavPY1FkNb5X9TeGnbtZD83EoZCYeskRRy4frc1M8Vh74wbAQwbXrcchc7SzpPG EpZUSMLdn/NzjDMJMU42Do1Z9A6kSfv4QS/Zu/sk= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:21 +0100 Subject: [PATCH RFC v2 13/20] x86: mm: carve out the generic compile-time folded pgtable case in effective_prot() 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: <20260722-dummy_ptxp3-v2-13-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2785; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=JZD/Lbfbj4HSmqdnx7eUuD3cSDyNIRyRTYfHOiVHoYI=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIVinW6xJ66J0AtgWmoOBZtJI2fJu39cT+lG lmMvjqN7dmJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFQAKCRBt1cPRWsUx MyCyDACle63B8F6HDqrCyaIvfxal1+c5g69sl4AqthRg5hNwvh6sb1rxEXQB/52AWeOXNH9P8sR aDlnR0TLzPJEldaqF746pWxMSKMrSydQ6xEWF3RWwa7WRkAZidtkw5heNBQGEHKzfWiwRW8gjAu k2gZi06lUIxph0Ng9HnPaoOHTQ8mVePaIzcmaQRlTrI4fjoHxddyfgzqqVtef+CYsvIFerrUzCY +TKNNtfkN3EqkPCNpDmA80f6fj4thl2/gTRaqCVex8in/rEy1PCid4f7edIoKlXUW7Ov7/vmN6s oSgu1pyEnnf+gjJZ2ZXc3YmrzRhoody2r0uJy76JCg3hjD2VTb6hw/uSFrO/spCd6Zyo2+Dl805 ztdWGgHUEEuWsQn2ZOG9CNHwgwPSo0WuEfwGHlnD9Z2VEZ9n6XsBJEqTCnUnSCBO4O2DaefO8Ki jwe3YWiyFr3Zzq7G3qqDmUmmBm94H+C+l4mENG+3rFbDzXHuFtK+NWkNmEwmd/4ezLd50= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" The behaviour of pXdp_get() will change with generic compile-time folded page tables. To prepare for that, rework effective_prot() to ignore any folded page tables entries, as it will unconditionally get called by ptdump core with pXd_val(pXdp_get()), and we really should be ignoring that value for folded entries. For this, introduce ptdump_pt_level_first() to identify the first real page-table level and update effective_prot with higher_prot only when the current entry is not folded nor the first level. There should be no functional change. Signed-off-by: Yeoreum Yun --- arch/x86/mm/dump_pagetables.c | 5 ++++- include/linux/ptdump.h | 1 + mm/ptdump.c | 11 +++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c index 2afa7a23340e..4e545988953a 100644 --- a/arch/x86/mm/dump_pagetables.c +++ b/arch/x86/mm/dump_pagetables.c @@ -27,6 +27,7 @@ */ struct pg_state { struct ptdump_state ptdump; + int first_level; int level; pgprotval_t current_prot; pgprotval_t effective_prot; @@ -254,7 +255,7 @@ static void effective_prot(struct ptdump_state *pt_st, = int level, u64 val) pgprotval_t prot =3D val & PTE_FLAGS_MASK; pgprotval_t effective; =20 - if (level > 0) { + if (level > st->first_level) { pgprotval_t higher_prot =3D st->prot_levels[level - 1]; =20 effective =3D (higher_prot & prot & (_PAGE_USER | _PAGE_RW)) | @@ -455,6 +456,8 @@ bool ptdump_walk_pgd_level_core(struct seq_file *m, .seq =3D m }; =20 + st.first_level =3D ptdump_pt_level_first(mm); + ptdump_walk_pgd(&st.ptdump, mm, pgd); =20 if (!checkwx) diff --git a/include/linux/ptdump.h b/include/linux/ptdump.h index 240bd3bff18d..26fa624eac44 100644 --- a/include/linux/ptdump.h +++ b/include/linux/ptdump.h @@ -29,6 +29,7 @@ bool ptdump_walk_pgd_level_core(struct seq_file *m, struct mm_struct *mm, pgd_t *pgd, bool checkwx, bool dmesg); void ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm, pgd_t = *pgd); +int ptdump_pt_level_first(struct mm_struct *mm); bool ptdump_check_wx(void); =20 static inline void debug_checkwx(void) diff --git a/mm/ptdump.c b/mm/ptdump.c index 5851096e6f65..96676c90430f 100644 --- a/mm/ptdump.c +++ b/mm/ptdump.c @@ -197,6 +197,17 @@ void ptdump_walk_pgd(struct ptdump_state *st, struct m= m_struct *mm, pgd_t *pgd) st->note_page_flush(st); } =20 +int ptdump_pt_level_first(struct mm_struct *mm) +{ + if (mm_pmd_folded(mm)) + return 3; + if (mm_pud_folded(mm)) + return 2; + if (mm_p4d_folded(mm)) + return 1; + return 0; +} + static int check_wx_show(struct seq_file *m, void *v) { if (ptdump_check_wx()) --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6B615376A0A; Wed, 22 Jul 2026 15:32:21 +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=1784734343; cv=none; b=htkc7mVB/jSsnbmsLg6rMxOOUXTav8JSLHoxvYKZI1tW6TGaACQGc+zQjBbu4AuaPS6/ln/loocLae8aySpFrmCVSk7g3MjkwsURWEi8U2UNTSNyAuSwXqDjOsaANqmi8rzcSITPa8r0aGXrTjKJyaTXON4iJH+i0asq80P5ARo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734343; c=relaxed/simple; bh=wsOvhQKZEG00wg1jKdkAFaJFjNazItDwe0xYFjnlbxQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RYikANhWMV2CQkDmb1aMy+cGOPdmZpW4mmOcs5cW70PbThfBLI7SmnkczgJkf9UWlduBa8KPE/XuR1Jmh4GsiTGl6z6qL5GJjPN/0ArBviRjzYBFkeh2+eiTzZsCL3qBOKqiRobHsco9G2QQa6xlLZ/YaYJCRDv2M5TWOHke32w= 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=pVLe2oqL; 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="pVLe2oqL" 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 AA06A1691; Wed, 22 Jul 2026 08:32:16 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E103D3F66F; Wed, 22 Jul 2026 08:32:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734340; bh=wsOvhQKZEG00wg1jKdkAFaJFjNazItDwe0xYFjnlbxQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pVLe2oqLj/GMbp2ufH9X7mDJQq2xQl+JLsb4rdHdEG8P4q6+zwtBTz6kqejK9a4vE 42w+M5uZ5nMb5hwWCHtS4s7q+ErSCs2KQQJDkfsn5+wpqdIMcK1OZYCZCB3cZAW4nq AggYvPNSBbaQWNfM1T4fRg3yIp8YqGdn0GMHuuGY= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:22 +0100 Subject: [PATCH RFC v2 14/20] x86: mm: skip pud setup when using generic compile-time folded pagetable 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: <20260722-dummy_ptxp3-v2-14-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1647; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=wsOvhQKZEG00wg1jKdkAFaJFjNazItDwe0xYFjnlbxQ=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIWIdSyNNx0bAaN04aBwgqBSXTMZTpRKvbWw OqEgUkq1DqJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFgAKCRBt1cPRWsUx M81eC/94aLur5BJub0U5CeumeSspcUbgF2bv6HfdAEYOdi5ZwYiF40PGZxxjAsv/yQlK5UzHDss aPkHeJPk8MkK0qc7gd9qgXRevhd2r3SbCV54lAhtxc3a8MyMlApf+nVtp6WMlSqBdjVBghBQYVu m4undaF9OwHTn2K6K/oaocwtD+K/DrwVWCi+WofWjdNbz59AZtNKXjUsQqR0sgDROPY7hcFFkTu 7JAqrngJ/Rkxa+ZTG1nr+VR0zoMGs9k12vLpTWZlxxB6mcDEbvHDicaHyuykmke3jENeOsJTl+3 HDxSBdyN3Dalc3OL8zAIHav1Idp6Xmu9CL9mfOQg2LeRY3RaajCzKL5rATAEhSKLyGuhW5cJDZR 69AEYlBnca2Wzl++N47dEOUGO/uXt3c71udqBZTA+I2so2zK3Gu6esbNhxoBe0uOYGsizKiyDEp LYPnBnpmu5SBzQ7DL3uDq15sZsUy9WU/F2HnuSrSJnVeaf08gu/ZXr0DZAzMMkUt7bZIA= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 We want to rework how set_pXd() behaves for generic compile-time folded page tables by disallowing its use and triggering a compile-time error when it is used improperly, ensuring that the actual first-level set_pXd() function is used instead. The behaviour of pXd_page() will change with generic compile-time folded page tables by disallowing its use and triggering a compile-time error when it's used improperly, ensuring that the actual. To prepare fot that, skip collapse_pud_page() and populate_pud() according to CONFIG_PGTABLE_LEVELS. There should be no functional change. Signed-off-by: Yeoreum Yun --- arch/x86/mm/pat/set_memory.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c index 078689aa7206..91b33a265a43 100644 --- a/arch/x86/mm/pat/set_memory.c +++ b/arch/x86/mm/pat/set_memory.c @@ -1346,7 +1346,7 @@ static int collapse_pud_page(pud_t *pud, unsigned lon= g addr, pmd_t *pmd, first; int i; =20 - if (!direct_gbpages) + if (CONFIG_PGTABLE_LEVELS =3D=3D 2 || !direct_gbpages) return 0; =20 addr &=3D PUD_MASK; @@ -1730,7 +1730,8 @@ static int populate_pud(struct cpa_data *cpa, unsigne= d long start, p4d_t *p4d, /* * Map everything starting from the Gb boundary, possibly with 1G pages */ - while (boot_cpu_has(X86_FEATURE_GBPAGES) && end - start >=3D PUD_SIZE) { + while (CONFIG_PGTABLE_LEVELS > 3 && boot_cpu_has(X86_FEATURE_GBPAGES) && + end - start >=3D PUD_SIZE) { set_pud(pud, pud_mkhuge(pfn_pud(cpa->pfn, canon_pgprot(pud_pgprot)))); =20 --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8FBE544AB63; Wed, 22 Jul 2026 15:32:28 +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=1784734350; cv=none; b=FiYoO2OacI4dHXMxKaeNQlJ/G/m0CPsXbNtLMs7GthvoGldxF6u9MHfY3YWMRSZRig0i+Ft/x0F/hXHFtufR2tt118MjQvkL6ILnavkA7l3UEodTP8oTwifU9Jyl5f0wzKrZeJkznyt2E2sgXB4Tqv6JD+8CoHSdV/+/l8I9Kow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734350; c=relaxed/simple; bh=vWdfZfN+TiiZA9mxg4SsfZFErqbDJUiR9ggvZZQt5JA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fb6/6nlSo+yk+JCxPneTBh9kg3xed0QsEqySj5n6MZ85BHgnc7q1euSEMegg0VmkqcIoHr/XgfrQHNZYsmxC585fKpp1KQAMl7fZdLoWVnPEsb4QIhNh2hW4pU2Y0T/S9GA0vJ9nx+CHOY45Bu61JdEkd2l2ST3qCTpPDQl0VH0= 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=TluBfn6Y; 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="TluBfn6Y" 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 BC0C81595; Wed, 22 Jul 2026 08:32:23 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 239BA3F66F; Wed, 22 Jul 2026 08:32:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734347; bh=vWdfZfN+TiiZA9mxg4SsfZFErqbDJUiR9ggvZZQt5JA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TluBfn6YvynnLDcgkk/QGS/YqHzTC1qQOYuWvEjPBaQRfpNlFivei9Evm3MWLvruP TPbqCkwMeV/455tcZTKmsYaC7xvULM9EWroPcZjh24N/EDwhLaY+XZhbJrM151ixS0 tRinqhTWhBgUWaY0/Q9D4pc2+OS/ow878qXHsExY= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:23 +0100 Subject: [PATCH RFC v2 15/20] mm/pgtable: optimize pmdp_get() and friends for folded pagetable levels 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: <20260722-dummy_ptxp3-v2-15-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5184; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=cnUlm8DDOUq30iZM7WGkUZANPR8bNBvx+fV94KySXE8=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIWDgQIN2ellQ1u+0chCvrQkqScLp7v2R/RU 36cXzhY1xOJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFgAKCRBt1cPRWsUx MyDDDACQWZei5YO99pneN8Lyoq4PWeM8DMKhrvzlE+hATCDxZYZYqyuMtbdAqTyetpmWXGW5siE gts8DGY7bYaUgcRAMVhigeJd7bcz7LMDtHhi/u/GW3DDpWGMfA7psXQ6DFVqYMnVUy+wCSNENOc SanzIHDCdilyEwAYEfSV92vfl0r239d6VSMLGN2WKD8fSNNn9WtMRLitSyiFRlcVM7uTDQ1D+9m swQnX0kJjxZd7fbD1Y0sB3pbgfhBXOnu1b93CBRLKHNK97V0z1hHNLSpcqwI5zeE6vgRLHvCAZ+ atJFh938hNaw2px8jQNgsNCNI5gFUuCju1bSSlHelm07/m4HUaE3TMUe7Qo9/+h6h5xuytxKnAG EFEv9pl5Dr/xsuErnxJQDYY/m3S3fQDIuHvAduxYEAuJC4tT25Q/fdA4f0IMJCBKYgFKHO4WE/C BxD1l8i7ha71s9NuT5l/0LKh+2twxhEwhIB1IE99Tv/Df7TZ0p/Yl9HWK5rgCAYq/Y6GI= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" Using pmdp_get() and friends in common code on a kernel config with folded page tables is suboptimal: they default to a READ_ONCE(), forcing the compiler to actually read that value even though it will not actually be used afterwards. This was recently reported by Christophe Leroy [1] and block conversion of more common code to pmdp_get() and friends. (using pgdp_get() as one example) Most of the code ignores the result from pgdp_get() on configs with folded page tables entirely, as we hardcode: pgd_present()=3D=3D1 && pgd_leaf()=3D=3Dfalse Common code will just treat it as a "this is a page table" and call p4d_offset() or p4d_offset_lockless() for the next lower level, where we just ignore the obtained pgdp_get() result entirely. So we can just return a dummy value and avoid any memory reads. There is a catch, though: 1) If code calls pgd_val() and somehow relies on the data, it would now see dummy values. The code really must be aware of folded page table levels. Fortunately, code usually ignores pgd_val() completely for page tables (with ptdump being one exception when calculating effective permissions). We checked + fixed the x86 ptdump mechanism. 2) If code passes the pgd_t to a function that would work on the result, it would now see dummy values. The only concern is really passing the pgd_t on the stack as a pointer to p4d_offset(). Most code that would do that, should actually use p4d_offset_lockless(), which handles this properly. We checked + fixed problematic instances. As an example, this is the generated code for perf_get_page_size() with PGTABLE_LEVELS=3D3 on arm64: Before: 00000000000052a0 : ... 52dc: d53b4234 mrs x20, DAIF 52e0: d50343df msr DAIFSet, #0x3 ... 52fc: d35e9a69 ubfx x9, x19, #30, #9 /* pud_offset_lockl= ess() */ 5300: f9403508 ldr x8, [x8, #0x68] 5304: f869790a ldr x10, [x8, x9, lsl #3] /* pudp_get() */ 5308: f90007ea str x10, [sp, #0x8] 530c: f8697908 ldr x8, [x8, x9, lsl #3] /* pudp_get() */ ... 5360: 90000009 adrp x9, 0x5000 5364: 92746908 and x8, x8, #0x7ffffff000 5368: d3557675 ubfx x21, x19, #21, #9 /* pmd_offset_lockl= ess() */ ... 5394: f8757ac8 ldr x8, [x22, x21, lsl #3] /* pmdp_get() */ After: 0000000000052a0 : ... 52dc: d53b4234 mrs x20, DAIF 52e0: d50343df msr DAIFSet, #0x3 ... /* no pud_offset_lo= ckless() and pudp_get() */ 5318: 90000009 adrp x9, 0x5000 531c: 92746908 and x8, x8, #0x7ffffff000 5320: d3557675 ubfx x21, x19, #21, #9 /* pmd_offset_lockl= ess() */ ... 5334: f8757ac8 ldr x8, [x22, x21, lsl #3] /* pmdp_get() */ [1] https://lore.kernel.org/all/0019d675-ce3d-4a5c-89ed-f126c45145c9@kernel= .org/ Signed-off-by: David Hildenbrand (Arm) --- include/asm-generic/pgtable-nop4d.h | 8 ++++++++ include/asm-generic/pgtable-nopmd.h | 8 ++++++++ include/asm-generic/pgtable-nopud.h | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgta= ble-nop4d.h index 019c3f074b77..ab4a826b3404 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -34,6 +34,14 @@ static inline bool pgd_leaf(pgd_t pgd) { return false; } */ #define set_pgd(pgdptr, pgdval) set_p4d((p4d_t *)(pgdptr), (p4d_t) { pgdva= l }) =20 +static inline pgd_t pgdp_get(pgd_t *p4dp) +{ + pgd_t dummy =3D { 0 }; + + return dummy; +} +#define pgdp_get pgdp_get + static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) { return (p4d_t *)pgd; diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgta= ble-nopmd.h index ae2eff44889a..711e12e5d180 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -44,6 +44,14 @@ static inline void pud_clear(pud_t *pud) { } */ #define set_pud(pudptr, pudval) set_pmd((pmd_t *)(pudptr), (pmd_t) { pud= val }) =20 +static inline pud_t pudp_get(pud_t *pudp) +{ + pud_t dummy =3D { 0 }; + + return dummy; +} +#define pudp_get pudp_get + static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) { return (pmd_t *)pud; diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgta= ble-nopud.h index 5a2b0a81ae19..8f01abbb0050 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h @@ -41,6 +41,14 @@ static inline bool p4d_leaf(p4d_t p4d) { return false; } */ #define set_p4d(p4dptr, p4dval) set_pud((pud_t *)(p4dptr), (pud_t) { p4dva= l }) =20 +static inline p4d_t p4dp_get(p4d_t *p4dp) +{ + p4d_t dummy =3D { 0 }; + + return dummy; +} +#define p4dp_get p4dp_get + static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address) { return (pud_t *)p4d; --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8C7B3473C87; Wed, 22 Jul 2026 15:32: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=1784734357; cv=none; b=cTmAhL79DVbKOX5KP8hDm9xK78cV1m3ZinBs8LJEmMSvF8btq+Cxcrs+5/WdWpEDIW8G5Rvr9ygTF8q5FTkPZnsdvXoZB21k1CUqEcQqOOAHsgMCM5fN/aUxAoArIO4etoagwI7zal/+3hx8qaqeOxYF77Hw2amumv70vRXvTKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734357; c=relaxed/simple; bh=N+0eZVFONFvivh04pFsm3rodZPvFa4H4Z1CBMvqzBeM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ie1tYh3qHIJVuYd8V35h2G51T5ZbmCBAVZeNIjNTwNbO8GDK+WgpLNLUDUFzHafZE7PAeSBPgBbbaHttH+J1VWUH1U4Rdd/7K7p4Y66Qr6Dqg8MVsHCH2m6oCDMbev4gfc4agzxSZlTd0tI63YTyI6xtVcQ9KSklyRzSEKNH0FU= 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=NfkiC7Lv; 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="NfkiC7Lv" 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 D8349168F; Wed, 22 Jul 2026 08:32:30 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3C2C03F66F; Wed, 22 Jul 2026 08:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734355; bh=N+0eZVFONFvivh04pFsm3rodZPvFa4H4Z1CBMvqzBeM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NfkiC7LvatbDCd8IFEJKF8ZzQvZpBgqSmEPN51LJZE/OVmfXd6Kf1RV8u98QdiPgM Sc3KDmdXbmurBey1D3Gyec/7xVyT3SIr25WtNoBCd9mJQh5P1yBqO0wtbOkeEBaQJY Rncag8lETm5J/fsgOKHBCJ7HAGeOqUsoIfiGTItA= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:24 +0100 Subject: [PATCH RFC v2 16/20] mm/pgtable: catch abuse of folded dummy pgd_t/p4d_t/pud_t 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: <20260722-dummy_ptxp3-v2-16-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5534; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=RbMQD5F2uNPQ+fzfq37nX2jXCxvoUCfqc4r8FAi/UD4=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIXMUxfLBwQNA0FIBBhvMbs4KRRARRynD3JT HzuiToRWiyJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFwAKCRBt1cPRWsUx M0SKC/9z/oLmRXpGI7R7NVtOGVIq9NNiulEe16gBiTJgA46ihrPkasRKG52jT80AXsQVVbZaXT9 i3X4aW4yt4fTJxnu3ko1a/XelioY0dgfCQ4sDg0fUz15D8f2+v4Y2PYvMR3pIQD3N7C/ggOgGIb 9Q3TJOAiiJYJVqrnXo6KtJWn5tSUjn9PswQL7/IDQXKX9vgqT5l3KdJZfTNE5I7sfHF6K7ttu7+ zMT5/cnS1/2UesAImhBoDEff0L0eOaF96/68J3JOjgwvWhLK9J/canHwnJfAkTAmSRVipqNZ6cX 4LdenlvLBRDPOTjZMfgQAy9BgoDbuDQo1L5QhNfO1GbpWqo5j47OK3SQtZG/1sn9xYz6sY7CNwv fw8Up6GkUZ878lkind26TxxiLVtbKbeQWHxU9ydtsx8CO9k9TlJ9TOATr2Lg0v051sNz0bLQGGK 0OQmLx2FO+zKWoPqe9xZRdRVl0zbG9UWFnQI47+7vThDXlp3iAUIFDBzJQ+TuPZwxkhQY= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" Let's catch and prevent all abuse with dummy values on the stack similar to: pud_t pud =3D pudp_get(pudp); pmd_t *pmdp =3D pud_offset(*pud, addr); While this approach relies on the compiler propagating constants, it should catch most of the issues in practice. It would have caught all the issues we found through manual inspection. To avoid build issues particularly on x86, where pgd_val() might not be around in some inclusion paths, perform the new checks from wrapper macros. Signed-off-by: David Hildenbrand (Arm) --- include/asm-generic/pgtable-nop4d.h | 23 ++++++++++++++++++----- include/asm-generic/pgtable-nopmd.h | 24 ++++++++++++++++++------ include/asm-generic/pgtable-nopud.h | 24 ++++++++++++++++++------ 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgta= ble-nop4d.h index ab4a826b3404..9e9e4557761d 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -34,7 +34,7 @@ static inline bool pgd_leaf(pgd_t pgd) { return false; } */ #define set_pgd(pgdptr, pgdval) set_p4d((p4d_t *)(pgdptr), (p4d_t) { pgdva= l }) =20 -static inline pgd_t pgdp_get(pgd_t *p4dp) +static __always_inline pgd_t pgdp_get(pgd_t *p4dp) { pgd_t dummy =3D { 0 }; =20 @@ -42,17 +42,30 @@ static inline pgd_t pgdp_get(pgd_t *p4dp) } #define pgdp_get pgdp_get =20 -static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) +#define pgd_check_dummy(pgd) BUILD_BUG_ON(__builtin_constant_p(pgd_val(pgd= ))) + +static __always_inline p4d_t *__p4d_offset(pgd_t *pgdp, unsigned long addr= ess) { - return (p4d_t *)pgd; + return (p4d_t *)pgdp; } =20 -static inline p4d_t *p4d_offset_lockless(pgd_t *pgdp, pgd_t pgd, +#define p4d_offset(pgdp, address) \ +({ \ + pgd_check_dummy(*(pgdp)); \ + __p4d_offset(pgdp, address); \ +}) + +static __always_inline p4d_t *__p4d_offset_lockless(pgd_t *pgdp, pgd_t pgd, unsigned long address) { return (p4d_t *)pgdp; } -#define p4d_offset_lockless p4d_offset_lockless + +#define p4d_offset_lockless(pgdp, pgd, address) \ +({ \ + pgd_check_dummy(*(pgdp)); \ + __p4d_offset_lockless(pgdp, pgd, address); \ +}) =20 #define p4d_val(x) (pgd_val((x).pgd)) #define __p4d(x) ((p4d_t) { __pgd(x) }) diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgta= ble-nopmd.h index 711e12e5d180..f92ddcea444f 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -44,7 +44,7 @@ static inline void pud_clear(pud_t *pud) { } */ #define set_pud(pudptr, pudval) set_pmd((pmd_t *)(pudptr), (pmd_t) { pud= val }) =20 -static inline pud_t pudp_get(pud_t *pudp) +static __always_inline pud_t pudp_get(pud_t *pudp) { pud_t dummy =3D { 0 }; =20 @@ -52,18 +52,30 @@ static inline pud_t pudp_get(pud_t *pudp) } #define pudp_get pudp_get =20 -static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) +#define pud_check_dummy(pud) BUILD_BUG_ON(__builtin_constant_p(pud_val(pud= ))) + +static __always_inline pmd_t *__pmd_offset(pud_t *pudp, unsigned long addr= ess) { - return (pmd_t *)pud; + return (pmd_t *)pudp; } -#define pmd_offset pmd_offset =20 -static inline pmd_t *pmd_offset_lockless(pud_t *pudp, pud_t pud, +#define pmd_offset(pudp, address) \ +({ \ + pud_check_dummy(*(pudp)); \ + __pmd_offset(pudp, address); \ +}) + +static __always_inline pmd_t *__pmd_offset_lockless(pud_t *pudp, pud_t pud, unsigned long address) { return (pmd_t *)pudp; } -#define pmd_offset_lockless pmd_offset_lockless + +#define pmd_offset_lockless(pudp, pud, address) \ +({ \ + pud_check_dummy(*(pudp)); \ + __pmd_offset_lockless(pudp, pud, address); \ +}) =20 #define pmd_val(x) (pud_val((x).pud)) #define __pmd(x) ((pmd_t) { __pud(x) } ) diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgta= ble-nopud.h index 8f01abbb0050..7475d0bd0f2e 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h @@ -41,7 +41,7 @@ static inline bool p4d_leaf(p4d_t p4d) { return false; } */ #define set_p4d(p4dptr, p4dval) set_pud((pud_t *)(p4dptr), (pud_t) { p4dva= l }) =20 -static inline p4d_t p4dp_get(p4d_t *p4dp) +static __always_inline p4d_t p4dp_get(p4d_t *p4dp) { p4d_t dummy =3D { 0 }; =20 @@ -49,18 +49,30 @@ static inline p4d_t p4dp_get(p4d_t *p4dp) } #define p4dp_get p4dp_get =20 -static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address) +#define p4d_check_dummy(p4d) BUILD_BUG_ON(__builtin_constant_p(p4d_val(p4d= ))) + +static __always_inline pud_t *__pud_offset(p4d_t *p4dp, unsigned long addr= ess) { - return (pud_t *)p4d; + return (pud_t *)p4dp; } -#define pud_offset pud_offset =20 -static inline pud_t *pud_offset_lockless(p4d_t *p4dp, p4d_t p4d, +#define pud_offset(p4dp, address) \ +({ \ + p4d_check_dummy(*(p4dp)); \ + __pud_offset(p4dp, address); \ +}) + +static __always_inline pud_t *__pud_offset_lockless(p4d_t *p4dp, p4d_t p4d, unsigned long address) { return (pud_t *)p4dp; } -#define pud_offset_lockless pud_offset_lockless + +#define pud_offset_lockless(p4dp, p4d, address) \ +({ \ + p4d_check_dummy(*(p4dp)); \ + __pud_offset_lockless(p4dp, p4d, address); \ +}) =20 #define pud_val(x) (p4d_val((x).p4d)) #define __pud(x) ((pud_t) { __p4d(x) }) --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CD2E047A0C4; Wed, 22 Jul 2026 15:32:42 +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=1784734364; cv=none; b=Jz6x4rYCK/TIU6kopsJteMNWaMMywhfHZPWrtD4DSX7XydqBD2HR5eVp3kM8O40H/xaehrFVfMTPFr68E17ldc7QIWgYaNWXucyP9XrJlKIjV2qvdFSzGBNarU7Bla5+ODiboegotMg6WsuE/oSPBc/kX6gBYXexhmtjW823/fc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734364; c=relaxed/simple; bh=7Ae9Beb4KeYHYFDO2fuqF6aoTpqIj0FluLW/seeBxD4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RSDb7KwgKMYmybTz6qWy9GrCsD0VaOsNEezy7HgjLF2PPoLIqfwq0EGI20hvsHAhKAw6MUJdA3WI65KYhHiwUXDp1QDWWSTdZvovQ2FArHdc7ktVg35hGNbIRmf7CFqFu5dAAg7A6zG7SVGYu8CL17pmjENEGNCUevlQ9JNjqc4= 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=B0aehDdF; 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="B0aehDdF" 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 EBCC7168F; Wed, 22 Jul 2026 08:32:37 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 546693F66F; Wed, 22 Jul 2026 08:32:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734362; bh=7Ae9Beb4KeYHYFDO2fuqF6aoTpqIj0FluLW/seeBxD4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=B0aehDdFvBfvBVIIp2zMH67Lgu5JuiYLh/bHJAAXod1jJVYAFkp5Bu1vG2YdKZCzM M0aFKyio40bPpN9seoAqUpmyTQoj/5ClQV8N33uLEYbIpsyIyeUsQ7VEjiJsJYIlX2 a0pvoqex/lEfvtzADdbbAoF90e4wmb3qWVHWRIYw= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:25 +0100 Subject: [PATCH RFC v2 17/20] mm/pgtable: disallow calling (pgd|p4d|pud)_page, pgd_page_vaddr() and (p4d|pud)_pgtable with dummy 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: <20260722-dummy_ptxp3-v2-17-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2991; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=ZfOIqDcnxaLeCJmpu2GHcBUFS7H+BCZkr1Bq1FmACcE=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIXWFr4tS39OcpehK5ArSSuOGxsT8KERLcOY bFidb6RmOuJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiFwAKCRBt1cPRWsUx Mxl5C/4/Z1An+pql6k/RmbweehPJhZeYR2tquIfEoDvMBJSdPiyFbCFjDDF/KEPtFyRTltpsXmj nzAORhubLrsQB4dtTfHleQt6PMQdVMtlXRJulqNEPQ0lMVYC+Ja5vR6TgOM8Xt0xVRH9op3YXV6 XVFwxUasE+yRlaMndg/VFQoVgZ0KZVsEOU5OVbb884+BEebDjXZrWL6y9ayYhKEb1s/ASnpJ40c jpBwvMakWgRS20jzRBXxCWzNF7S9I33l9S8IpU7Vdc4xGcut0KxmytlqFLElSSrXBpBq3hZbef0 R3UlALA31tYedWIXhixSSbGujT4BeJDB6W/iKmmZCGoUR71JyBQyljLM+dNRMWR81Cc8kdEGno/ RRj1wyhyGYC1/hC07KPBcGES4CJ9xA0DCuprgpOcy2/x7Fh6vYNpcPWpse086hcBs731SXQJzI1 RubKkCaWr4hOc32pd3WmnGvIsyxbARqJAr5JzesTLBpGF4nd4m0X533vaNfqsfo8IK0d4= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" These helpers that silently fallback to the folded level are dangerous, especially with some upcoming changes. Make all code compile-out any calls to these helpers with dummy value. So let's make the compiler complain if these helpers are abused with dummy = pXdp value. Signed-off-by: David Hildenbrand (Arm) --- include/asm-generic/pgtable-nop4d.h | 8 ++++++-- include/asm-generic/pgtable-nopmd.h | 8 ++++++-- include/asm-generic/pgtable-nopud.h | 8 ++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgta= ble-nop4d.h index 9e9e4557761d..05c3acc0884b 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -70,8 +70,12 @@ static __always_inline p4d_t *__p4d_offset_lockless(pgd_= t *pgdp, pgd_t pgd, #define p4d_val(x) (pgd_val((x).pgd)) #define __p4d(x) ((p4d_t) { __pgd(x) }) =20 -#define pgd_page(pgd) (p4d_page((p4d_t){ pgd })) -#define pgd_page_vaddr(pgd) ((unsigned long)(p4d_pgtable((p4d_t){ pgd })= )) +#define pgd_page(pgd) ({ BUILD_BUG(); (struct page *)NULL; }) +#define pgd_page_vaddr(pgd) \ +({ \ + pgd_check_dummy(pgd); \ + (unsigned long)p4d_pgtable((p4d_t) { pgd }); \ +}) =20 /* * allocating and freeing a p4d is trivial: the 1-entry p4d is diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgta= ble-nopmd.h index f92ddcea444f..aa4902f63c0e 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -80,8 +80,12 @@ static __always_inline pmd_t *__pmd_offset_lockless(pud_= t *pudp, pud_t pud, #define pmd_val(x) (pud_val((x).pud)) #define __pmd(x) ((pmd_t) { __pud(x) } ) =20 -#define pud_page(pud) (pmd_page((pmd_t){ pud })) -#define pud_pgtable(pud) ((pmd_t *)(pmd_page_vaddr((pmd_t){ pud }))) +#define pud_page(pud) ({ BUILD_BUG(); (struct page *)NULL; }) +#define pud_pgtable(pud) \ +({ \ + pud_check_dummy(pud); \ + ((pmd_t *)(pmd_page_vaddr((pmd_t) { pud }))); \ +}) =20 /* * allocating and freeing a pmd is trivial: the 1-entry pmd is diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgta= ble-nopud.h index 7475d0bd0f2e..3264673c0c38 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h @@ -77,8 +77,12 @@ static __always_inline pud_t *__pud_offset_lockless(p4d_= t *p4dp, p4d_t p4d, #define pud_val(x) (p4d_val((x).p4d)) #define __pud(x) ((pud_t) { __p4d(x) }) =20 -#define p4d_page(p4d) (pud_page((pud_t){ p4d })) -#define p4d_pgtable(p4d) ((pud_t *)(pud_pgtable((pud_t){ p4d }))) +#define p4d_page(p4d) ({ BUILD_BUG(); (struct page *)NULL; }) +#define p4d_pgtable(p4d) \ +({ \ + p4d_check_dummy(p4d); \ + ((pud_t *)(pud_pgtable((pud_t) { p4d }))); \ +}) =20 /* * allocating and freeing a pud is trivial: the 1-entry pud is --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DF4A136B93C; Wed, 22 Jul 2026 15:32: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=1784734375; cv=none; b=OWqY2DGwnyHh3HxWn4rQUx8xzqYB+Ta4lt3Y2kMm/A7JZg7L2cwELrPaJXjv0BrFrmBo2L/dM2uQXTO7EJ6DuiNgeGbuFrLWC6P5kq/UucKZCFkQYgNC1lhahw0fqx3a96GfYVshPtlLOa1PfSsrwq9evh19N4FNWNYYwjdyU4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734375; c=relaxed/simple; bh=32SOK5uh9E5GblRgaV7XM5xO+tgYklgQI1N792ThLp8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Jxf1CorgDK6vUsxKTN24wweEAMQNtenuyWLfzkCxLeux5HOZILQlnu3SRod6E529p1aLMXmWgikH7rGJSJeMQ2K6ZIrVPfxdUPmyf/e2CFV2+3KShy2rmf/niLZdd9fJpLoR28/sRtdkfdd7MHG1GHYuCiJbfWM0Pd3IyojXkno= 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=Z9iQmzRI; 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="Z9iQmzRI" 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 0DDC5168F; Wed, 22 Jul 2026 08:32:45 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6AB133F66F; Wed, 22 Jul 2026 08:32:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734369; bh=32SOK5uh9E5GblRgaV7XM5xO+tgYklgQI1N792ThLp8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Z9iQmzRIV9pJnoh2hiGVa9ykrtfqzzjDRhpsVG7HB9mUxK1Ydq79kvbnesR5P85vg l5qCgCFo61s2z6vCbkE9bR3zFUgYTlJwz83TKSEc0aENmhFNGRIAQ3EbNpHzJLxnGS JEq4PENZLBxO5Ajnd4KcJxsDCzfyRWplfYCjcNpI= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:26 +0100 Subject: [PATCH RFC v2 18/20] mm/pgtable: disallow calling folded set_pgd/set_p4d/set_pud with dummy 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: <20260722-dummy_ptxp3-v2-18-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2943; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=72r/KAfsnxC0TtxtNsnKFwa+EPFsf1mj7ooxl5Dvfk4=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIYpRCL2kb+SSUvVch8xReBRMPEyqCZIVn8X b/zh0aeNKWJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiGAAKCRBt1cPRWsUx M+pbC/9CtkmpOcQ9F4GGyLnOuiLOEo5b2ROwD1I5zPd1cPHGuVTNUZXHqOLTTLv+feYvEaRNS3Z IURhne2r5mprDEF78/YPTYMXnMHtqv2lrbabG6OVkp8cC54ISx13HX75MGXoTZnKz4kVIuTHDQN iy95ZvXGHln787hkEX1cila15mNcOBZRLTpB5wTUPuo2xeaQxEUwN5tBg578CXt3rFT2Z0kTDDm aDJnKlAyUDoc9zOFK7KHnYUvXU2myPODDiuJXp3rWmAZjMBvarSdGTkbAww6NLEBebM7kGyl4KN AF460tD32ygD8fYb2KRxPuECIt8Kw0VVf2M0wcJmMfOIHiUFl8FXcatscWKDuEqDy6vFa7+cPcJ yw9ypwNhnSgFVejzmjhJqtSzTppFlH0iH4p0RQNUGe+i1lo+NCeNyetGLAdAbcNug3p+7MvZoaN f+L0PmWXEePXWK4caevkf2aHZEHRkD4ToFUz3RuAB9s9Do544YGwAjEdmnP5hpsMi6da4= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" Make all code compile-out any calls to set_pgd/set_p4d/set_pud for folded page tables. So let's make the compiler complain if these helpers are abused with dummy. Signed-off-by: David Hildenbrand (Arm) --- include/asm-generic/pgtable-nop4d.h | 11 ++++++----- include/asm-generic/pgtable-nopmd.h | 10 +++++----- include/asm-generic/pgtable-nopud.h | 12 +++++++----- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgta= ble-nop4d.h index 05c3acc0884b..19f5a6eda76c 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -28,11 +28,12 @@ static inline bool pgd_leaf(pgd_t pgd) { return false;= } =20 #define pgd_populate(mm, pgd, p4d) do { } while (0) #define pgd_populate_safe(mm, pgd, p4d) do { } while (0) -/* - * (p4ds are folded into pgds so this doesn't get actually called, - * but the define is needed for a generic inline function.) - */ -#define set_pgd(pgdptr, pgdval) set_p4d((p4d_t *)(pgdptr), (p4d_t) { pgdva= l }) + +#define set_pgd(pgdptr, pgdval) \ +({ \ + pgd_check_dummy(pgdval); \ + set_p4d((p4d_t *)(pgdptr), (p4d_t) { pgdval }); \ +}) =20 static __always_inline pgd_t pgdp_get(pgd_t *p4dp) { diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgta= ble-nopmd.h index aa4902f63c0e..61852eb4b150 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h @@ -38,11 +38,11 @@ static inline void pud_clear(pud_t *pud) { } =20 #define pud_populate(mm, pmd, pte) do { } while (0) =20 -/* - * (pmds are folded into puds so this doesn't get actually called, - * but the define is needed for a generic inline function.) - */ -#define set_pud(pudptr, pudval) set_pmd((pmd_t *)(pudptr), (pmd_t) { pud= val }) +#define set_pud(pudptr, pudval) \ +({ \ + pud_check_dummy(pudval); \ + set_pmd((pmd_t *)(pudptr), (pmd_t) { pudval }); \ +}) =20 static __always_inline pud_t pudp_get(pud_t *pudp) { diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgta= ble-nopud.h index 3264673c0c38..5ee8f1852cd8 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h @@ -35,11 +35,13 @@ static inline bool p4d_leaf(p4d_t p4d) { return false;= } =20 #define p4d_populate(mm, p4d, pud) do { } while (0) #define p4d_populate_safe(mm, p4d, pud) do { } while (0) -/* - * (puds are folded into p4ds so this doesn't get actually called, - * but the define is needed for a generic inline function.) - */ -#define set_p4d(p4dptr, p4dval) set_pud((pud_t *)(p4dptr), (pud_t) { p4dva= l }) + +#define set_p4d(p4dptr, p4dval) \ +({ \ + p4d_check_dummy(p4dval); \ + set_pud((pud_t *)(p4dptr), (pud_t) { p4dval }); \ +}) + =20 static __always_inline p4d_t p4dp_get(p4d_t *p4dp) { --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E18EA4EA38C; Wed, 22 Jul 2026 15:32:56 +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=1784734378; cv=none; b=LqYvnroer22Fjjg8NAGV0eZce8jToR9BtCxd+Zf02x0Mr6HUJGAxqbrOl1plq/JLfR3K2A/fJMXXyqbBvKL0rCU7g5bZGrl1x5IOg7KXWBKfZCGZTuc+zkEam3i7sV+yB1qySEQWjQgvOkBYAmtJMNvVxeEPC+nonqBY4wWHmVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734378; c=relaxed/simple; bh=Rrla32h3UFOwfDCIJ6mk+qS084GnFvMqrfkCfZ9JSzY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GQ3oglrQbj3U2iu1FRPMgwdyMSMXDiYPBVmcUg6Llx7vOW6ofUNZi4JtdaUQKSuiWM5QOuFpAkYZkkWB2lji43lo1Ma9AGqhtVUGFrGq3Ge44hT/TfVOgSvPL00rxNq6LwirFDfa4n0R1iswmz6EYbBdYPbjuZCDioBBxdlNBoU= 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=XyJKsFxP; 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="XyJKsFxP" 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 23D0D168F; Wed, 22 Jul 2026 08:32:52 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 814893F66F; Wed, 22 Jul 2026 08:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734376; bh=Rrla32h3UFOwfDCIJ6mk+qS084GnFvMqrfkCfZ9JSzY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=XyJKsFxPiHVmHyMB5tdKC0VZOaJ5wDUT6AKN3Lte8vHdVyPzXh/uia/Z0HVn8xxLZ MJpub7dt7bxTTRhnbNvCnV3PmBb+Vtgk1WPyZ7OiGixI1C5hpGVoPBrfhbhS1kEDgb lEXOBfK4WlUhNlmJl4mGFF+ZmyhWn0p25in03lgQ= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:27 +0100 Subject: [PATCH RFC v2 19/20] openrisc/pgtable: drop __pmd_offset() 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: <20260722-dummy_ptxp3-v2-19-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=881; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=1xb3Ozyh2JOl/Co51IUX05GaQJt/5FuoyIGgUorDpg0=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIYnrk3rC8ElTnTfer6SHj2oBWybBYLfju+d 4SncyB+MwqJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiGAAKCRBt1cPRWsUx M4boDAC/KmDndZaDO1jJrApOeQCuvkJuqhLMfdqukXrHibqTGpXvh7Lwc4sNcH7N5YegBcGYZnV j8OQzx42GbLagf+9QG/YfGPDybE4rC2OL5XPwimSbLMb+WN4I8/lilSnKa7wUaS7SL/b4GC2vkg 8Jq/RbDvH+rgu805sIkfBKek5svMwWjMRRI14lIYZMBfgew6aO6qlqM9ztketbWrILpth4EwCEc cSBBO3cC/Pg7wWs25SiumksIV8bHn8Ze+9gPUFVMnrNwv9tddfeydkYK/jz7okv12hujP/fvdkj LDxJHLgKAtFsXVIjaQzaCp3WphsglIEJV99pn+5cw/JahUqiDyGT0p7IQT1hBvRb4s4d4fUo+Se D+tYt8k4B/cELCEj0LrTzVGfuWx+FVIESJpI0CfO6g+/Xzmfr7HkNrp4FAXv/nHkZbTes//Vc1B +otIwlYp1llqRUcFvB/JSLg+dlLxLagbPM2+dPFj+lO9ocdyz9TFn83w7Ns0+BMZmq00I= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 From: "David Hildenbrand (Arm)" The macro is unused, and will collide with a folded page table helper. Let's just remove it. Signed-off-by: David Hildenbrand (Arm) --- arch/openrisc/include/asm/pgtable.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/openrisc/include/asm/pgtable.h b/arch/openrisc/include/as= m/pgtable.h index 6b89996d0b62..5a491cd0f008 100644 --- a/arch/openrisc/include/asm/pgtable.h +++ b/arch/openrisc/include/asm/pgtable.h @@ -331,9 +331,6 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd) return ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK)); } =20 -#define __pmd_offset(address) \ - (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1)) - #define PFN_PTE_SHIFT PAGE_SHIFT #define pte_pfn(x) ((unsigned long)(((x).pte)) >> PAGE_SHIFT) #define pfn_pte(pfn, prot) __pte((((pfn) << PAGE_SHIFT)) | pgprot_val(pro= t)) --=20 2.43.0 From nobody Fri Jul 24 22:54:57 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EFE5943BDAA; Wed, 22 Jul 2026 15:33: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=1784734385; cv=none; b=r79dO6fzY6K5xhPKPA7qW+Fv//WdDbHFGXEfPi97LGMbyzls18Udz9llQJmngLXcmneop4+UbW5DLm8ryNjdCC6iPDsKNSP7e9n7lBS2P0K21fabA2i4QEh4fdKny2Fct5CZOJYqEUy+D6oQ5K0ZWYgiAmregmhBfx9+AxWtRxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784734385; c=relaxed/simple; bh=k+Ct6UKfsw6TgQhfFM/Z3zSeUfS2RWT0nIS47WctCoI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=btsGaWbH6fNC8eIwjS7cUknfJ+MugJG+ez4OX9AoCDgkU4aKPZ/tX8+mTZJZAUK1qFT+cIfyGFlgXLHf0aifB0+QYoGfV4fBlAJiDkVX2qxqnEpFWdxP6b/OkLs+57A4f8oS9gGHBa7RtpVJWHDQcw6nog54q04j/cgPo/q/F2g= 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=g0nt6IZQ; 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="g0nt6IZQ" 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 5BE34168F; Wed, 22 Jul 2026 08:32:59 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 96B563F66F; Wed, 22 Jul 2026 08:32:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784734383; bh=k+Ct6UKfsw6TgQhfFM/Z3zSeUfS2RWT0nIS47WctCoI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=g0nt6IZQyCvKgFZI60DRcC/GGffDPb2GQYIKllqDpAFm2g3BxA4jSQds3cRGSkeX+ Tmrbtu+qVu7CkkGqnfFFoBLy5zASiJCTJuvf7Q9ZTGipqgz23ZCnK/giM7u1gcWK6V V0zdJQpZ9klZ7UIIQa1LjhJUG8roKpNnBr50gWEk= From: Yeoreum Yun Date: Wed, 22 Jul 2026 16:30:28 +0100 Subject: [PATCH RFC v2 20/20] arm64: pgtable: convert pte_present() from macro to static inline 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: <20260722-dummy_ptxp3-v2-20-d9e4bad31e0a@arm.com> References: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> In-Reply-To: <20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com> To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Yeoreum Yun X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3788; i=yeoreum.yun@arm.com; h=from:subject:message-id; bh=k+Ct6UKfsw6TgQhfFM/Z3zSeUfS2RWT0nIS47WctCoI=; b=owEB7QES/pANAwAKAW3Vw9FaxTEzAcsmYgBqYOIZ28tsQPrNiVpXVTDwHe/CTrQCbHUFRJazg yJ2euBUl/WJAbMEAAEKAB0WIQQtg+CS3QUzuFh1pJ1t1cPRWsUxMwUCamDiGQAKCRBt1cPRWsUx M0S9DADGM2RD+DFrHP2YJpZpPcTcyVH/TMAS0pwVsW1g4uxtvIdtn63hJRlaxQu5urXc+Lq/RBH m65O3NKvfrVe/lONng8d0oSO9qWVcb88cWdEc/UMikc0hRViojalruYvg/j9Whge9O6REkHj4ef MCBpDPKXxJQnITLIphQp/inT602yb0Mc9ysYANV1nwHgfOlC+OkN1zMNOMeR9xAf1fDaAenzXob LH+Yv5ZeXfazFPG7QMZdsxejPVcuI8MGbXHDgjKPJW3VMRjAik4WPeD9L/7oWOopkz38RUIjNdu BiEPWbt7ZEuo9CE3Sh1yvzdKeBP55+kDJzxEPHfsed+tWtYBkw7Mgrx3hy1MbbltZ/TJAbZUwgB AKOmwqNxTPy7ZL2XMNPiavDxP8JhogFcR0yI9RvWg0KswIjItJfbV50X72kJrZalSNSOtsjgpwi SSuYz91oqX04BKa5QahApperz7grEN93/1UeYbDnaCBVnMAVl57yy1+slrRnHZyOohJ88= X-Developer-Key: i=yeoreum.yun@arm.com; a=openpgp; fpr=2D83E092DD0533B85875A49D6DD5C3D15AC53133 pte_present() is used as the basis for both pmd_present() and pud_present(). It is currently implemented as a macro composed of pte_val() and pte_present_invalid(). When pte_present() or its higher-level variants are used directly with ptep_get() or pXdp_get(), for example: pte_present(ptep_get(pte)); pmd_present(pmdp_get(pmd)); pud_present(pudp_get(pud)); the macro expansion causes the compiler to evaluate the argument twice, resulting in redundant loads. For example, pte_present() expands to: !pte_val(READ_ONCE(*pte) || pte_present_invalid(READ_ONCE(*pte)) A typical example is pud_free_pmd_page(), where the expansion of pmd_present() generates: ... /* pmd_present() (x20 =3D pmdp) */ 1b88: f9400288 ldr x8, [x20] // read pmdp. 1b8c: f9000fa8 str x8, [x29, #0x18] 1b90: 3707fec8 tbnz w8, #0x0, 0x1b68 1b94: f9400288 ldr x8, [x20] // redundant read of pmdp. 1b98: 8a170109 and x9, x8, x23 1b9c: f9000fa8 str x8, [x29, #0x18] 1ba0: f120013f cmp x9, #0x800 1ba4: 54fffe20 b.eq 0x1b68 1ba8: 17fffff4 b 0x1b78 ... Convert pte_present() to static inline function so that prevent the generation of redundant code and move pte_valid() and pte_present_invalid() further up so the inline function can use them. After this change, the generated code becomes: ... /* pmd_present() (x20 =3D pmdp) */ 1a30: f9400288 ldr x8, [x20] 1a34: 8a170109 and x9, x8, x23 1a38: f9000fa8 str x8, [x29, #0x18] 1a3c: f120013f cmp x9, #0x800 1a40: 54fffe80 b.eq 0x1a10 1a44: 3607fee8 tbz w8, #0x0, 0x1a20 1a48: 17fffff2 b 0x1a10 ... This eliminates the redundant load and also reduces code size at call sites using this pattern. For example, pud_free_pmd_page() shrinks from 7,500 bytes to 7,148 bytes, a reduction of approximately 4.7%. Signed-off-by: Yeoreum Yun --- arch/arm64/include/asm/pgtable.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgta= ble.h index 6185fc291fd7..aaae3d14895f 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -140,10 +140,17 @@ static inline pteval_t __phys_to_pte_val(phys_addr_t = phys) #define pte_none(pte) (!pte_val(pte)) #define pte_page(pte) (pfn_to_page(pte_pfn(pte))) =20 +#define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID)) +#define pte_present_invalid(pte) \ + ((pte_val(pte) & (PTE_VALID | PTE_PRESENT_INVALID)) =3D=3D PTE_PRESENT_IN= VALID) + /* * The following only work if pte_present(). Undefined behaviour otherwise. */ -#define pte_present(pte) (pte_valid(pte) || pte_present_invalid(pte)) +static __always_inline bool pte_present(pte_t pte) +{ + return pte_valid(pte) || pte_present_invalid(pte); +} #define pte_young(pte) (!!(pte_val(pte) & PTE_AF)) #define pte_special(pte) (!!(pte_val(pte) & PTE_SPECIAL)) #define pte_write(pte) (!!(pte_val(pte) & PTE_WRITE)) @@ -168,9 +175,6 @@ static inline pteval_t __phys_to_pte_val(phys_addr_t ph= ys) #define pte_sw_dirty(pte) (!!(pte_val(pte) & PTE_DIRTY)) #define pte_dirty(pte) (pte_sw_dirty(pte) || pte_hw_dirty(pte)) =20 -#define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID)) -#define pte_present_invalid(pte) \ - ((pte_val(pte) & (PTE_VALID | PTE_PRESENT_INVALID)) =3D=3D PTE_PRESENT_IN= VALID) /* * Execute-only user mappings do not have the PTE_USER bit set. All valid * kernel mappings have the PTE_UXN bit set. --=20 2.43.0