Skip to content

Commit 3d44be2

Browse files
riteshharjanimaddy-kerneldev
authored andcommitted
powerpc/ptdump: Dump PXX level info for kernel_page_tables
This patch adds PGD/PUD/PMD/PTE level information while dumping kernel page tables. Before this patch it was hard to identify which entries belongs to which page table level e.g. ~ # dmesg |grep -i radix [0.000000] radix-mmu: Mapped 0x0000000000000000-0x0000000005400000 with 2.00 MiB pages (exec) [0.000000] radix-mmu: Mapped 0x0000000005400000-0x0000000040000000 with 2.00 MiB pages [0.000000] radix-mmu: Mapped 0x0000000040000000-0x0000000100000000 with 1.00 GiB pages [0.000000] radix-mmu: Initializing Radix MMU Before: ---[ Start of kernel VM ]--- 0xc000000000000000-0xc000000003ffffff XXX 64M r X pte valid present dirty accessed 0xc000000004000000-0xc00000003fffffff XXX 960M r w pte valid present dirty accessed 0xc000000040000000-0xc0000000ffffffff XXX 3G r w pte valid present dirty accessed ... ---[ vmemmap start ]--- 0xc00c000000000000-0xc00c0000003fffff XXX 4M r w pte valid present dirty accessed After: ---[ Start of kernel VM ]--- 0xc000000000000000-0xc000000003ffffff XXX 64M PMD r X pte valid present dirty accessed 0xc000000004000000-0xc00000003fffffff XXX 960M PMD r w pte valid present dirty accessed 0xc000000040000000-0xc0000000ffffffff XXX 3G PUD r w pte valid present dirty accessed ... ---[ vmemmap start ]--- 0xc00c000000000000-0xc00c0000003fffff XXX 4M PMD r w pte valid present dirty accessed Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/95defb675ee5607ef3923a1e6aeac39311b8fad4.1761834163.git.ritesh.list@gmail.com
1 parent 6394f0e commit 3d44be2

5 files changed

Lines changed: 17 additions & 0 deletions

File tree

arch/powerpc/mm/ptdump/8xx.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,23 @@ static const struct flag_info flag_array[] = {
7171

7272
struct ptdump_pg_level pg_level[5] = {
7373
{ /* pgd */
74+
.name = "PGD",
7475
.flag = flag_array,
7576
.num = ARRAY_SIZE(flag_array),
7677
}, { /* p4d */
78+
.name = "P4D",
7779
.flag = flag_array,
7880
.num = ARRAY_SIZE(flag_array),
7981
}, { /* pud */
82+
.name = "PUD",
8083
.flag = flag_array,
8184
.num = ARRAY_SIZE(flag_array),
8285
}, { /* pmd */
86+
.name = "PMD",
8387
.flag = flag_array,
8488
.num = ARRAY_SIZE(flag_array),
8589
}, { /* pte */
90+
.name = "PTE",
8691
.flag = flag_array,
8792
.num = ARRAY_SIZE(flag_array),
8893
},

arch/powerpc/mm/ptdump/book3s64.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,23 @@ static const struct flag_info flag_array[] = {
104104

105105
struct ptdump_pg_level pg_level[5] = {
106106
{ /* pgd */
107+
.name = "PGD",
107108
.flag = flag_array,
108109
.num = ARRAY_SIZE(flag_array),
109110
}, { /* p4d */
111+
.name = "P4D",
110112
.flag = flag_array,
111113
.num = ARRAY_SIZE(flag_array),
112114
}, { /* pud */
115+
.name = "PUD",
113116
.flag = flag_array,
114117
.num = ARRAY_SIZE(flag_array),
115118
}, { /* pmd */
119+
.name = "PMD",
116120
.flag = flag_array,
117121
.num = ARRAY_SIZE(flag_array),
118122
}, { /* pte */
123+
.name = "PTE",
119124
.flag = flag_array,
120125
.num = ARRAY_SIZE(flag_array),
121126
},

arch/powerpc/mm/ptdump/ptdump.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ static void dump_addr(struct pg_state *st, unsigned long addr)
178178
pt_dump_seq_printf(st->seq, REG "-" REG " ", st->start_address, addr - 1);
179179
pt_dump_seq_printf(st->seq, " " REG " ", st->start_pa);
180180
pt_dump_size(st->seq, addr - st->start_address);
181+
pt_dump_seq_printf(st->seq, "%s ", pg_level[st->level].name);
181182
}
182183

183184
static void note_prot_wx(struct pg_state *st, unsigned long addr)

arch/powerpc/mm/ptdump/ptdump.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ struct flag_info {
1313

1414
struct ptdump_pg_level {
1515
const struct flag_info *flag;
16+
char name[4];
1617
size_t num;
1718
u64 mask;
1819
};

arch/powerpc/mm/ptdump/shared.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,23 @@ static const struct flag_info flag_array[] = {
6969

7070
struct ptdump_pg_level pg_level[5] = {
7171
{ /* pgd */
72+
.name = "PGD",
7273
.flag = flag_array,
7374
.num = ARRAY_SIZE(flag_array),
7475
}, { /* p4d */
76+
.name = "P4D",
7577
.flag = flag_array,
7678
.num = ARRAY_SIZE(flag_array),
7779
}, { /* pud */
80+
.name = "PUD",
7881
.flag = flag_array,
7982
.num = ARRAY_SIZE(flag_array),
8083
}, { /* pmd */
84+
.name = "PMD",
8185
.flag = flag_array,
8286
.num = ARRAY_SIZE(flag_array),
8387
}, { /* pte */
88+
.name = "PTE",
8489
.flag = flag_array,
8590
.num = ARRAY_SIZE(flag_array),
8691
},

0 commit comments

Comments
 (0)