Skip to content

Commit 2cf660e

Browse files
Gavin Shanwilldeacon
authored andcommitted
arm64/mm: Refactor {pgd, pud, pmd, pte}_ERROR()
The function __{pgd, pud, pmd, pte}_error() are introduced so that they can be called by {pgd, pud, pmd, pte}_ERROR(). However, some of the functions could never be called when the corresponding page table level isn't enabled. For example, __{pud, pmd}_error() are unused when PUD and PMD are folded to PGD. This removes __{pgd, pud, pmd, pte}_error() and call pr_err() from {pgd, pud, pmd, pte}_ERROR() directly, similar to what x86/powerpc are doing. With this, the code looks a bit simplified either. Signed-off-by: Gavin Shan <[email protected]> Reviewed-by: Anshuman Khandual <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Will Deacon <[email protected]>
1 parent 2a49313 commit 2cf660e

File tree

2 files changed

+8
-29
lines changed

2 files changed

+8
-29
lines changed

arch/arm64/include/asm/pgtable.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@
3535

3636
extern struct page *vmemmap;
3737

38-
extern void __pte_error(const char *file, int line, unsigned long val);
39-
extern void __pmd_error(const char *file, int line, unsigned long val);
40-
extern void __pud_error(const char *file, int line, unsigned long val);
41-
extern void __pgd_error(const char *file, int line, unsigned long val);
42-
4338
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
4439
#define __HAVE_ARCH_FLUSH_PMD_TLB_RANGE
4540

@@ -57,7 +52,8 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
5752
extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)];
5853
#define ZERO_PAGE(vaddr) phys_to_page(__pa_symbol(empty_zero_page))
5954

60-
#define pte_ERROR(pte) __pte_error(__FILE__, __LINE__, pte_val(pte))
55+
#define pte_ERROR(e) \
56+
pr_err("%s:%d: bad pte %016llx.\n", __FILE__, __LINE__, pte_val(e))
6157

6258
/*
6359
* Macros to convert between a physical address and its placement in a
@@ -541,7 +537,8 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
541537

542538
#if CONFIG_PGTABLE_LEVELS > 2
543539

544-
#define pmd_ERROR(pmd) __pmd_error(__FILE__, __LINE__, pmd_val(pmd))
540+
#define pmd_ERROR(e) \
541+
pr_err("%s:%d: bad pmd %016llx.\n", __FILE__, __LINE__, pmd_val(e))
545542

546543
#define pud_none(pud) (!pud_val(pud))
547544
#define pud_bad(pud) (!(pud_val(pud) & PUD_TABLE_BIT))
@@ -608,7 +605,8 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
608605

609606
#if CONFIG_PGTABLE_LEVELS > 3
610607

611-
#define pud_ERROR(pud) __pud_error(__FILE__, __LINE__, pud_val(pud))
608+
#define pud_ERROR(e) \
609+
pr_err("%s:%d: bad pud %016llx.\n", __FILE__, __LINE__, pud_val(e))
612610

613611
#define p4d_none(p4d) (!p4d_val(p4d))
614612
#define p4d_bad(p4d) (!(p4d_val(p4d) & 2))
@@ -667,7 +665,8 @@ static inline unsigned long p4d_page_vaddr(p4d_t p4d)
667665

668666
#endif /* CONFIG_PGTABLE_LEVELS > 3 */
669667

670-
#define pgd_ERROR(pgd) __pgd_error(__FILE__, __LINE__, pgd_val(pgd))
668+
#define pgd_ERROR(e) \
669+
pr_err("%s:%d: bad pgd %016llx.\n", __FILE__, __LINE__, pgd_val(e))
671670

672671
#define pgd_set_fixmap(addr) ((pgd_t *)set_fixmap_offset(FIX_PGD, addr))
673672
#define pgd_clear_fixmap() clear_fixmap(FIX_PGD)

arch/arm64/kernel/traps.c

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -935,26 +935,6 @@ asmlinkage void enter_from_user_mode(void)
935935
}
936936
NOKPROBE_SYMBOL(enter_from_user_mode);
937937

938-
void __pte_error(const char *file, int line, unsigned long val)
939-
{
940-
pr_err("%s:%d: bad pte %016lx.\n", file, line, val);
941-
}
942-
943-
void __pmd_error(const char *file, int line, unsigned long val)
944-
{
945-
pr_err("%s:%d: bad pmd %016lx.\n", file, line, val);
946-
}
947-
948-
void __pud_error(const char *file, int line, unsigned long val)
949-
{
950-
pr_err("%s:%d: bad pud %016lx.\n", file, line, val);
951-
}
952-
953-
void __pgd_error(const char *file, int line, unsigned long val)
954-
{
955-
pr_err("%s:%d: bad pgd %016lx.\n", file, line, val);
956-
}
957-
958938
/* GENERIC_BUG traps */
959939

960940
int is_valid_bugaddr(unsigned long addr)

0 commit comments

Comments
 (0)