[PATCH v4 3/5] arm64: indent ptdump by level, aligning attributes

From: Maxwell Bland
Date: Tue Jun 18 2024 - 10:49:30 EST


Outputs each level of the page table with two additional spaces for
parsers, distinction, and readability while maintaining the alignment of
region size and attributes.

Signed-off-by: Maxwell Bland <mbland@xxxxxxxxxxxx>
---
arch/arm64/mm/ptdump.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/arch/arm64/mm/ptdump.c b/arch/arm64/mm/ptdump.c
index 8f0b459c13ed..2ec16b523043 100644
--- a/arch/arm64/mm/ptdump.c
+++ b/arch/arm64/mm/ptdump.c
@@ -336,6 +336,10 @@ static void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
addr >= st->marker[1].start_address) {
const char *unit = units;
unsigned long delta;
+ unsigned int i;
+
+ for (i = 0; i < st->level; i++)
+ pt_dump_seq_printf(st->seq, " ");

if (st->current_prot) {
note_prot_uxn(st, addr);
@@ -362,6 +366,10 @@ static void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
st->start_address, addr);
}

+ /* Align region information regardlesss of level */
+ for (i = st->level; i < 4; i++)
+ pt_dump_seq_printf(st->seq, " ");
+
delta >>= 10;
while (!(delta & 1023) && unit[1]) {
delta >>= 10;
@@ -369,6 +377,7 @@ static void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
}
pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit,
pg_level[st->level].name);
+
if (st->current_prot && pg_level[st->level].bits)
dump_prot(st, pg_level[st->level].bits,
pg_level[st->level].num);
--
2.39.2