Currently, the memblock debugfs can display the count of memblock_type and the base and end of the reg. However, when the following scenario occurs, the information in the existing debugfs cannot make it clear why the address is not consecutive. For example, cat /sys/kernel/debug/memblock/memory 0: 0x0000000080000000..0x00000000901fffff 1: 0x0000000090200000..0x00000000905fffff 2: 0x0000000090600000..0x0000000092ffffff 3: 0x0000000093000000..0x00000000973fffff 4: 0x0000000097400000..0x00000000b71fffff 5: 0x00000000c0000000..0x00000000dfffffff 6: 0x00000000e2500000..0x00000000f87fffff 7: 0x00000000f8800000..0x00000000fa7fffff 8: 0x00000000fa800000..0x00000000fd3effff 9: 0x00000000fd3f0000..0x00000000fd3fefff 10: 0x00000000fd3ff000..0x00000000fd7fffff 11: 0x00000000fd800000..0x00000000fd901fff 12: 0x00000000fd902000..0x00000000fd909fff 13: 0x00000000fd90a000..0x00000000fd90bfff 14: 0x00000000fd90c000..0x00000000ffffffff 15: 0x0000000880000000..0x0000000affffffff So we can add flags and nid to this debugfs. For example, cat /sys/kernel/debug/memblock/memory cnt flags base..end 0: 0x0 0x0000000080000000..0x00000000901fffff 1: 0x4 0x0000000090200000..0x00000000905fffff 2: 0x0 0x0000000090600000..0x0000000092ffffff 3: 0x4 0x0000000093000000..0x00000000973fffff 4: 0x0 0x0000000097400000..0x00000000b71fffff 5: 0x0 0x00000000c0000000..0x00000000dfffffff 6: 0x0 0x00000000e2500000..0x00000000f87fffff 7: 0x4 0x00000000f8800000..0x00000000fa7fffff 8: 0x0 0x00000000fa800000..0x00000000fd3effff 9: 0x4 0x00000000fd3f0000..0x00000000fd3fefff 10: 0x0 0x00000000fd3ff000..0x00000000fd7fffff 11: 0x4 0x00000000fd800000..0x00000000fd901fff 12: 0x0 0x00000000fd902000..0x00000000fd909fff 13: 0x4 0x00000000fd90a000..0x00000000fd90bfff 14: 0x0 0x00000000fd90c000..0x00000000ffffffff 15: 0x0 0x0000000880000000..0x0000000affffffff Signed-off-by: Yuwei Guan <ssawgyw@xxxxxxxxx> --- mm/memblock.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mm/memblock.c b/mm/memblock.c index 45f198750be9..34230b258e21 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -2045,11 +2045,21 @@ static int memblock_debug_show(struct seq_file *m, void *private) int i; phys_addr_t end; +#ifdef CONFIG_NUMA + seq_puts(m, "cnt\tflags\tnid\tbase..end\n"); +#else + seq_puts(m, "cnt\tflags\tbase..end\n"); +#endif + for (i = 0; i < type->cnt; i++) { reg = &type->regions[i]; end = reg->base + reg->size - 1; - seq_printf(m, "%4d: ", i); + seq_printf(m, "%d:\t", i); + seq_printf(m, "0x%x\t", reg->flags); +#ifdef CONFIG_NUMA + seq_printf(m, "0x%x\t", reg->nid); +#endif seq_printf(m, "%pa..%pa\n", ®->base, &end); } return 0; -- 2.34.1