Re: [RFC V2 3/6] sh/mm: Stop using pte_ERROR()
From: David Hildenbrand (Arm)
Date: Wed Aug 12 2026 - 07:45:32 EST
On 8/11/26 06:21, Anshuman Khandual wrote:
> Directly use pr_err() in set_pte_phys() 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: Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx>
> Cc: Rich Felker <dalias@xxxxxxxx>
> Cc: John Paul Adrian Glaubitz <glaubitz@xxxxxxxxxxxxxxxxxxx>
> Cc: linux-sh@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Signed-off-by: Anshuman Khandual <anshuman.khandual@xxxxxxx>
> ---
> arch/sh/include/asm/pgtable_32.h | 5 -----
> arch/sh/mm/init.c | 11 ++++++++++-
> 2 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/arch/sh/include/asm/pgtable_32.h b/arch/sh/include/asm/pgtable_32.h
> index 5f51af18997b..c8eb9a7a4c4c 100644
> --- a/arch/sh/include/asm/pgtable_32.h
> +++ b/arch/sh/include/asm/pgtable_32.h
> @@ -401,14 +401,9 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
> #define pmd_page(pmd) (virt_to_page(pmd_val(pmd)))
>
> #ifdef CONFIG_X2TLB
> -#define pte_ERROR(e) \
> - printk("%s:%d: bad pte %p(%08lx%08lx).\n", __FILE__, __LINE__, \
> - &(e), (e).pte_high, (e).pte_low)
> #define pgd_ERROR(e) \
> printk("%s:%d: bad pgd %016llx.\n", __FILE__, __LINE__, pgd_val(e))
> #else
> -#define pte_ERROR(e) \
> - printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))
> #define pgd_ERROR(e) \
> printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e))
> #endif
> diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
> index 110308bdef01..b3c7fd84ceb4 100644
> --- a/arch/sh/mm/init.c
> +++ b/arch/sh/mm/init.c
> @@ -78,13 +78,22 @@ static pte_t *__get_pte_phys(unsigned long addr)
> return pte_offset_kernel(pmd, addr);
> }
>
> +static void print_bad_pte(pte_t pte)
> +{
> +#ifdef CONFIG_X2TLB
> + printk("bad pte %p(%08lx%08lx).\n", &pte, pte.pte_high, pte.pte_low);
> +#else
> + printk("bad pte %08lx.\n", pte_val(pte));
> +#endif
I'd avoid that helper if possible, so we don't encourage new users.
Shouldn't we just switch to pr_err() right away?
> +}
> +
> static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
> {
> pte_t *pte;
>
> pte = __get_pte_phys(addr);
> if (!pte_none(*pte)) {
> - pte_ERROR(*pte);
> + print_bad_pte(*pte);
Maybe similar to my reply to patch #1, actually print something more useful than
just "bad pte" ? And possibly also just use ptval_to_str().
--
Cheers,
David