From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D21B32550CD for ; Mon, 16 Mar 2026 14:22: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=1773670936; cv=none; b=pVV6Mk9rn1eEFd5o8nhb/1yxNMhZJtqDTRGbm9g5jSZSlwkSvoPMsqcuTUxqjq3qb6Qrkshz+2lrfakbFlB58Kdb1yD7Exli1WvOoy3vBvxp3Np8LnLYS8oVAd1p28Mhrh3TRuHcQxXGmdeTb2UN1NFZd1iZ0v2zjy4po3LLJJs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773670936; c=relaxed/simple; bh=+8m1ENmUrlTLZRFZ7nXPXrGmJCSXVAO2QIMdLwkn/2A=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=RI8f06KprMso7prPHg4vIjWlAz41h0Zerl0v6FBCmpOtZPB18Spc/GL1p70lhOhcQHeNBz1KNma2uvmBEX7/Qzx6rdrB4Hu07B6Fev92x8gWzeMGVGHj05cSJBkr6gbGoFrv3DHbxeA0+A2sG4nD+NumOvzppO0+TRh23d+Z5u4= 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 289881477; Mon, 16 Mar 2026 07:22:08 -0700 (PDT) Received: from [10.57.84.154] (unknown [10.57.84.154]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1084D3F73B; Mon, 16 Mar 2026 07:22:12 -0700 (PDT) Message-ID: <415ea4a5-e729-4fe5-b95d-29fcca8f7dbd@arm.com> Date: Mon, 16 Mar 2026 14:22:11 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] arm64: mm: Use generic enum pgtable_level Content-Language: en-GB To: Kevin Brodsky , linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, "David Hildenbrand (Arm)" , Catalin Marinas , Will Deacon References: <20260316140150.58207-1-kevin.brodsky@arm.com> From: Ryan Roberts In-Reply-To: <20260316140150.58207-1-kevin.brodsky@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 16/03/2026 14:01, Kevin Brodsky wrote: > enum pgtable_type was introduced for arm64 by commit c64f46ee1377 > ("arm64: mm: use enum to identify pgtable level instead of > *_SHIFT"). In the meantime, the generic enum pgtable_level got > introduced by commit b22cc9a9c7ff ("mm/rmap: convert "enum > rmap_level" to "enum pgtable_level""). > > Let's switch to the generic enum pgtable_level. The only difference > is that it also includes PGD level - this isn't relevant in > __pgd_pgtable_alloc() so we just add a default statement. > > Suggested-by: David Hildenbrand (Arm) > Signed-off-by: Kevin Brodsky > --- > Cc: Catalin Marinas > Cc: Ryan Roberts > Cc: Will Deacon > --- > arch/arm64/include/asm/mmu.h | 7 ----- > arch/arm64/mm/mmu.c | 58 +++++++++++++++++++----------------- > 2 files changed, 30 insertions(+), 35 deletions(-) > [...] > static phys_addr_t __pgd_pgtable_alloc(struct mm_struct *mm, gfp_t gfp, > - enum pgtable_type pgtable_type) > + enum pgtable_level pgtable_level) > { > /* Page is zeroed by init_clear_pgtable() so don't duplicate effort. */ > struct ptdesc *ptdesc = pagetable_alloc(gfp & ~__GFP_ZERO, 0); > @@ -539,40 +539,42 @@ static phys_addr_t __pgd_pgtable_alloc(struct mm_struct *mm, gfp_t gfp, > > pa = page_to_phys(ptdesc_page(ptdesc)); > > - switch (pgtable_type) { > - case TABLE_PTE: > + switch (pgtable_level) { > + case PGTABLE_LEVEL_PTE: > BUG_ON(!pagetable_pte_ctor(mm, ptdesc)); > break; > - case TABLE_PMD: > + case PGTABLE_LEVEL_PMD: > BUG_ON(!pagetable_pmd_ctor(mm, ptdesc)); > break; > - case TABLE_PUD: > + case PGTABLE_LEVEL_PUD: > pagetable_pud_ctor(ptdesc); > break; > - case TABLE_P4D: > + case PGTABLE_LEVEL_P4D: > pagetable_p4d_ctor(ptdesc); > break; > + default: > + break; nit: I think we should either explicitly support pgd or explicitly bug/warn. Now that the enum has PGTABLE_LEVEL_PGD it looks legit to call __pgd_pgtable_alloc() to allocate one. But it will currently silently fail to call pagetable_pgd_ctor(). Probably simplest just to call BUG() in the default path? With this addressed: Reviewed-by: Ryan Roberts Thanks, Ryan