From nobody Tue Feb 10 07:38:54 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B9474346AE0 for ; Mon, 5 Jan 2026 20:23:36 +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=1767644618; cv=none; b=CzIgWzW00EkdCovlVPgkPvs2V4dCQnl2YDdnEhfA9RfYs54iSC0r/eb+GxcK8OoKUPtWTy5UdGGEBDU95IDYdPap4jmgRjhIgGd5OjHiS4UbWg9btXJPgZY9IkJGMC0ah2FiP3Z+itMVNlWMOX7j27C44NsfRychS3r87bt2AaM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767644618; c=relaxed/simple; bh=vRgILYPe4/hcU2lSc8CoAy8OBjyhaWAUUedlud7jyh0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=I3Vrwff/ojmHH9lGbL0mSb+HaYdaJGwNKY+mBrNIG3ZxUMlQKea7+J29zST4rUjtrTni1FvptzNFT5RX9L/S169XrwnAIYAyx+9t3cnMtpIeKv36xhk+oGErCXWdZ5nP7tApnUfVI3tI978hvOxlA4U/86JDzgvTCvcRCAn2Bvc= 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; 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 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 52B63153B; Mon, 5 Jan 2026 12:23:29 -0800 (PST) Received: from e129823.cambridge.arm.com (e129823.arm.com [10.1.197.6]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2DF953F6A8; Mon, 5 Jan 2026 12:23:33 -0800 (PST) From: Yeoreum Yun To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev Cc: catalin.marinas@arm.com, will@kernel.org, ryan.roberts@arm.com, akpm@linux-oundation.org, david@kernel.org, kevin.brodsky@arm.com, quic_zhenhuah@quicinc.com, dev.jain@arm.com, yang@os.amperecomputing.com, chaitanyas.prakash@arm.com, bigeasy@linutronix.de, clrkwllms@kernel.org, rostedt@goodmis.org, lorenzo.stoakes@oracle.com, ardb@kernel.org, jackmanb@google.com, vbabka@suse.cz, mhocko@suse.com, Yeoreum Yun Subject: [PATCH v5 1/3] arm64: mmu: introduce pgtable_alloc_t Date: Mon, 5 Jan 2026 20:23:26 +0000 Message-Id: <20260105202328.2418990-2-yeoreum.yun@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260105202328.2418990-1-yeoreum.yun@arm.com> References: <20260105202328.2418990-1-yeoreum.yun@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This is preparation patch to use preallocated page tables for linear_map_split_to_ptes(). Define pgtable_alloc_t type for callback used by create_XXX_mapping(). Signed-off-by: Yeoreum Yun Reviewed-by: Ryan Roberts --- arch/arm64/mm/mmu.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 8e1d80a7033e..4b4908ae189b 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -74,6 +74,8 @@ EXPORT_SYMBOL(empty_zero_page); static DEFINE_SPINLOCK(swapper_pgdir_lock); static DEFINE_MUTEX(fixmap_lock); =20 +typedef phys_addr_t (pgtable_alloc_t)(enum pgtable_type); + void noinstr set_swapper_pgd(pgd_t *pgdp, pgd_t pgd) { pgd_t *fixmap_pgdp; @@ -197,7 +199,7 @@ static void init_pte(pte_t *ptep, unsigned long addr, u= nsigned long end, static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { unsigned long next; @@ -252,7 +254,7 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned lo= ng addr, =20 static int init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), int flags) + pgtable_alloc_t pgtable_alloc, int flags) { unsigned long next; =20 @@ -292,7 +294,7 @@ static int init_pmd(pmd_t *pmdp, unsigned long addr, un= signed long end, static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { int ret; @@ -349,7 +351,7 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned lo= ng addr, =20 static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long e= nd, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { int ret =3D 0; @@ -415,7 +417,7 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long ad= dr, unsigned long end, =20 static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long e= nd, phys_addr_t phys, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { int ret; @@ -467,7 +469,7 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long ad= dr, unsigned long end, static int __create_pgd_mapping_locked(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { int ret; @@ -500,7 +502,7 @@ static int __create_pgd_mapping_locked(pgd_t *pgdir, ph= ys_addr_t phys, static int __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { int ret; @@ -516,7 +518,7 @@ static int __create_pgd_mapping(pgd_t *pgdir, phys_addr= _t phys, static void early_create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot, - phys_addr_t (*pgtable_alloc)(enum pgtable_type), + pgtable_alloc_t pgtable_alloc, int flags) { int ret; --=20 LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}