[RESEND PATCH 00/10] memblock: introduce memsize showing reserved memory

From: Jaewon Kim
Date: Mon May 20 2024 - 22:40:57 EST


Some of memory regions can be reserved for a specific purpose. They are
usually defined through reserved-memory in device tree. If only size
without address is specified in device tree, the address of the region
will be determined at boot time.

We may find the address of the memory regions through booting log, but
it does not show all. And it could be hard to catch the very beginning
log. The memblock_dump_all shows all memblock status but it does not
show region name and its information is difficult to summarize.

This patch introduce a debugfs node, memblock/memsize, to see reserved
memory easily.

Here's an example

$ cat debugfs/memblock/memsize

0x0000000000000000-0x0000000000000000 0x02000000 ( 32768 KB ) map reusable linux,cma
0x0000000000000000-0x0000000000000000 0x01000000 ( 16384 KB ) map reusable vxxxxx
..
0x0000000000000000-0x0000000000000000 0x004e0000 ( 4992 KB ) nomap unusable unknown
0x0000000000000000-0x0000000000000000 0x00400000 ( 4096 KB ) nomap unusable cxxxxx
0x0000000000000000-0x0000000000000000 0x00e00000 ( 14336 KB ) nomap unusable gxxxxx

Reserved : 1223856 KB
.kernel : 275208 KB
.text : 16576 KB
.rwdata : 1963 KB
.rodata : 11920 KB
.bss : 2450 KB
.memmap : 186368 KB
.etc : 55933 KB
.unusable : 948648 KB
System : 11359056 KB
.common : 10306384 KB
.reusable : 1052672 KB
Total : 12582912 KB ( 12288.00 MB )

Jaewon Kim (10):
memblock: introduce memsize showing reserved memory
memblock: detect hidden memory hole size
memblock: handle overlapped reserved memory region
memblock: take a region intersecting an unknown region
memblock: track memblock changed at early param
memblock: recognize late freed size by checking PageReserved
memblock: track kernel size on memsize
memblock: print memsize summary information
memblock: print kernel internal size
memblock: support memsize reusable to consider as reusable

drivers/of/fdt.c | 11 +
drivers/of/of_reserved_mem.c | 12 +-
include/linux/memblock.h | 29 ++
init/main.c | 13 +-
kernel/dma/contiguous.c | 9 +-
mm/Kconfig | 16 ++
mm/memblock.c | 502 ++++++++++++++++++++++++++++++++++-
mm/mm_init.c | 6 +-
mm/page_alloc.c | 10 +-
9 files changed, 597 insertions(+), 11 deletions(-)

--
2.25.1