arm64: Print physical address of page table base in show_pte()
authorWill Deacon <will.deacon@arm.com>
Tue, 14 May 2019 11:25:28 +0000 (12:25 +0100)
committerWill Deacon <will.deacon@arm.com>
Tue, 14 May 2019 11:25:28 +0000 (12:25 +0100)
When dumping the page table in response to an unexpected kernel page
fault, we print the virtual (hashed) address of the page table base, but
display physical addresses for everything else.

Make the page table dumping code in show_pte() consistent, by printing
the page table base pointer as a physical address.

Reported-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/mm/fault.c

index 0cb0e09995e110ef075c0f834ce22f3493f70d2e..dda234bcc020cd109a8594f2898a16a38c5dc616 100644 (file)
@@ -171,9 +171,10 @@ static void show_pte(unsigned long addr)
                return;
        }
 
-       pr_alert("%s pgtable: %luk pages, %u-bit VAs, pgdp = %p\n",
+       pr_alert("%s pgtable: %luk pages, %u-bit VAs, pgdp=%016lx\n",
                 mm == &init_mm ? "swapper" : "user", PAGE_SIZE / SZ_1K,
-                mm == &init_mm ? VA_BITS : (int) vabits_user, mm->pgd);
+                mm == &init_mm ? VA_BITS : (int)vabits_user,
+                (unsigned long)virt_to_phys(mm->pgd));
        pgdp = pgd_offset(mm, addr);
        pgd = READ_ONCE(*pgdp);
        pr_alert("[%016lx] pgd=%016llx", addr, pgd_val(pgd));