[PATCH v2 7/7] cmd: Update the meminfo command to show the memory map
Tom Rini
trini at konsulko.com
Sat Oct 12 03:42:42 CEST 2024
On Sat, Oct 12, 2024 at 01:18:19AM +0200, Heinrich Schuchardt wrote:
>
>
> Am 11. Oktober 2024 23:40:31 MESZ schrieb Simon Glass <sjg at chromium.org>:
> >U-Boot has a fairly rigid memory map which is normally not visible
> >unless debugging is enabled in board_f.c
> >
> >Update the 'meminfo' command to show it. This command does not cover
> >arch-specific pieces but gives a good overview of where things are.
> >
> >Signed-off-by: Simon Glass <sjg at chromium.org>
> >---
> >
> >Changes in v2:
> >- Modify the existing 'meminfo' command instead
> >
> > cmd/meminfo.c | 48 ++++++++++++++-
> > doc/usage/cmd/meminfo.rst | 126 ++++++++++++++++++++++++++++++++++++++
> > doc/usage/index.rst | 1 +
> > test/cmd/Makefile | 3 +-
> > test/cmd/meminfo.c | 38 ++++++++++++
> > 5 files changed, 214 insertions(+), 2 deletions(-)
> > create mode 100644 doc/usage/cmd/meminfo.rst
> > create mode 100644 test/cmd/meminfo.c
> >
> >diff --git a/cmd/meminfo.c b/cmd/meminfo.c
> >index bb9bcec2e3f..e9a635bf4bf 100644
> >--- a/cmd/meminfo.c
> >+++ b/cmd/meminfo.c
> >@@ -4,18 +4,64 @@
> > * Written by Simon Glass <sjg at chromium.org>
> > */
> >
> >+#include <bloblist.h>
> >+#include <bootstage.h>
> > #include <command.h>
> > #include <display_options.h>
> >+#include <malloc.h>
> >+#include <mapmem.h>
> > #include <asm/global_data.h>
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> >+static void print_region(const char *name, ulong base, ulong size, ulong *uptop)
> >+{
> >+ ulong end = base + size;
> >+
> >+ printf("%-12s %8lx %8lx %8lx", name, base, size, end);
> >+ if (*uptop)
> >+ printf(" %8lx", *uptop - end);
> >+ putc('\n');
> >+ *uptop = base;
> >+}
> >+
> > static int do_meminfo(struct cmd_tbl *cmdtp, int flag, int argc,
> >- char *const argv[])
> >+ char *const argv[])
> > {
> >+ ulong upto, stk_bot;
> >+
> > puts("DRAM: ");
> > print_size(gd->ram_size, "\n");
> >
> >+ printf("\n%-12s %8s %8s %8s %8s\n", "Region", "Base", "Size", "End",
> >+ "Gap");
> >+ printf("------------------------------------------------\n");
> >+ upto = 0;
> >+ if (IS_ENABLED(CONFIG_VIDEO))
> >+ print_region("video", gd_video_bottom(),
> >+ gd_video_size(), &upto);
> >+ if (IS_ENABLED(CONFIG_TRACE))
> >+ print_region("trace", map_to_sysmem(gd_trace_buff()),
> >+ gd_trace_size(), &upto);
> >+ print_region("code", gd->relocaddr, gd->mon_len, &upto);
> >+ print_region("malloc", map_to_sysmem((void *)mem_malloc_start),
> >+ mem_malloc_end - mem_malloc_start, &upto);
> >+ print_region("board_info", map_to_sysmem(gd->bd),
> >+ sizeof(struct bd_info), &upto);
> >+ print_region("global_data", map_to_sysmem((void *)gd),
> >+ sizeof(struct global_data), &upto);
> >+ print_region("devicetree", map_to_sysmem(gd->fdt_blob),
> >+ fdt_totalsize(gd->fdt_blob), &upto);
> >+ if (IS_ENABLED(CONFIG_BOOTSTAGE))
> >+ print_region("bootstage", map_to_sysmem(gd_bootstage()),
> >+ bootstage_get_size(false), &upto);
> >+ if (IS_ENABLED(CONFIG_BLOBLIST))
> >+ print_region("bloblist", map_to_sysmem(gd_bloblist()),
> >+ bloblist_get_total_size(), &upto);
> >+ stk_bot = gd->start_addr_sp - CONFIG_STACK_SIZE;
> >+ print_region("stack", stk_bot, CONFIG_STACK_SIZE, &upto);
> >+ print_region("free", gd->ram_base, stk_bot, &upto);
> >+
> > return 0;
> > }
> >
> >diff --git a/doc/usage/cmd/meminfo.rst b/doc/usage/cmd/meminfo.rst
> >new file mode 100644
> >index 00000000000..c628119787e
> >--- /dev/null
> >+++ b/doc/usage/cmd/meminfo.rst
> >@@ -0,0 +1,126 @@
> >+.. SPDX-License-Identifier: GPL-2.0+:
> >+
> >+.. index::
> >+ single: meminfo (command)
> >+
> >+meminfo command
> >+===============
> >+
> >+Synopsis
> >+--------
> >+
> >+::
> >+
> >+ meminfo
> >+
> >+Description
> >+-----------
> >+
> >+The meminfo command shows the amount of memory, the layout of memory used by
> >+U-Boot and the region which is free for use by images.
>
> The information offered by this command cannot be used for this purpose as it is incomplete.
>
> Memory allocated in LMB cannot be used to load images. And EFI in future will use LMB for allocations.
>
> The command should be changed to show LMB allocations.
I agree, this need to include the lmb information as that's quite
likely to be helpful to anyone wondering "well where can I place things
then?" when denied being able to load an image somewhere.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20241011/7c188bc3/attachment.sig>
More information about the U-Boot
mailing list