[RFC V2 1/6] loongarch/mm: Stop using pte_ERROR()
Anshuman Khandual
anshuman.khandual at arm.com
Wed Aug 12 21:34:15 PDT 2026
On Wed, Aug 12, 2026 at 01:27:54PM +0200, David Hildenbrand (Arm) wrote:
> On 8/12/26 13:19, David Hildenbrand (Arm) wrote:
> > On 8/11/26 06:21, Anshuman Khandual wrote:
> >> Directly use pr_err() in __set_fixmap() and drop pte_ERROR() which helps in
> >> eventually dropping pte_ERROR() macro across the tree. In this new printing
> >> __FILE__ and __LINE__ has been dropped because they are always the same and
> >> don't really add any value.
> >>
> >> Cc: Huacai Chen <chenhuacai at kernel.org>
> >> Cc: WANG Xuerui <kernel at xen0n.name>
> >> Cc: loongarch at lists.linux.dev
> >> Cc: linux-kernel at vger.kernel.org
> >> Signed-off-by: Anshuman Khandual <anshuman.khandual at arm.com>
> >> ---
> >> arch/loongarch/include/asm/pgtable.h | 2 --
> >> arch/loongarch/mm/init.c | 2 +-
> >> 2 files changed, 1 insertion(+), 3 deletions(-)
> >>
> >> diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/include/asm/pgtable.h
> >> index 223528c04d73..a32a8fff70c1 100644
> >> --- a/arch/loongarch/include/asm/pgtable.h
> >> +++ b/arch/loongarch/include/asm/pgtable.h
> >> @@ -128,8 +128,6 @@ struct vm_area_struct;
> >> #define ptep_get(ptep) READ_ONCE(*(ptep))
> >> #define pmdp_get(pmdp) READ_ONCE(*(pmdp))
> >>
> >> -#define pte_ERROR(e) \
> >> - pr_err("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))
> >> #ifndef __PAGETABLE_PMD_FOLDED
> >> #define pmd_ERROR(e) \
> >> pr_err("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e))
> >> diff --git a/arch/loongarch/mm/init.c b/arch/loongarch/mm/init.c
> >> index 3407030f3e7a..be9b127daef2 100644
> >> --- a/arch/loongarch/mm/init.c
> >> +++ b/arch/loongarch/mm/init.c
> >> @@ -203,7 +203,7 @@ void __init __set_fixmap(enum fixed_addresses idx,
> >>
> >> ptep = populate_kernel_pte(addr);
> >> if (!pte_none(ptep_get(ptep))) {
> >> - pte_ERROR(*ptep);
> >> + pr_err("bad pte %016lx\n", pte_val(*ptep));
> >> return;
> >> }
> >>
> >
> > Ah, I missed that we want to print actual values, I somehow thought that we
> > would be printing pte_none() ...
> >
> > Maybe we should just be more verbose while at it?
Initially thought that these new prints should be right close to the
original via pxd_ERROR() but I guess making them verbose while doing
the replacements should be indeed acceptable.
> >
> > pr_err("unexpected set PTE at %ul in __set_fixmap: %016lx\n",
> > addr, pte_val(*ptep));
> >
>
> On second thought, why not simply use ptval_to_str() here as well?
Sure will do the required changes - the following builds successfully.
--- a/arch/loongarch/mm/init.c
+++ b/arch/loongarch/mm/init.c
@@ -197,13 +197,15 @@ void __init __set_fixmap(enum fixed_addresses idx,
phys_addr_t phys, pgprot_t flags)
{
unsigned long addr = __fix_to_virt(idx);
+ char str[PTVAL_STR_MAX];
pte_t *ptep;
BUG_ON(idx <= FIX_HOLE || idx >= __end_of_fixed_addresses);
ptep = populate_kernel_pte(addr);
if (!pte_none(ptep_get(ptep))) {
- pr_err("bad pte %016lx\n", pte_val(*ptep));
+ ptval_to_str(str, pte_val(*ptep));
+ pr_err("unexpected set PTE at %lx in __set_fixmap: %s\n", addr, str);
return;
}
>
> --
> Cheers,
>
> David
More information about the linux-arm-kernel
mailing list