[PATCH v4 19/45] Show the malloc base with the bdinfo command
Bin Meng
bmeng.cn at gmail.com
Wed Jul 12 16:02:53 CEST 2023
Hi Simon,
On Mon, Jun 19, 2023 at 8:01 PM Simon Glass <sjg at chromium.org> wrote:
>
nits: please add the 'bdinfo' tag in the commit summary
> It is useful to see the base of the malloc region. This is visible when
> debugging but not in normal usage.
>
> Add it to the global data so that it can be shown.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Nikhil M Jain <n-jain1 at ti.com>
> Tested-by: Nikhil M Jain <n-jain1 at ti.com>
> ---
>
> (no changes since v1)
>
> cmd/bdinfo.c | 1 +
> common/board_r.c | 7 ++++---
> include/asm-generic/global_data.h | 13 +++++++++++++
> 3 files changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
> index 4bd21c9ea4b4..a864f01525fe 100644
> --- a/cmd/bdinfo.c
> +++ b/cmd/bdinfo.c
> @@ -155,6 +155,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> if (IS_ENABLED(CONFIG_CMD_BDINFO_EXTRA)) {
> bdinfo_print_num_ll("stack ptr", (ulong)&bd);
> bdinfo_print_num_ll("ram_top ptr", (ulong)gd->ram_top);
> + bdinfo_print_num_l("malloc base", gd_malloc_start());
> }
>
> arch_print_bdinfo();
> diff --git a/common/board_r.c b/common/board_r.c
> index d798c00a80a5..4aaa89403117 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -196,7 +196,7 @@ static int initr_barrier(void)
>
> static int initr_malloc(void)
> {
> - ulong malloc_start;
> + ulong start;
>
> #if CONFIG_VAL(SYS_MALLOC_F_LEN)
> debug("Pre-reloc malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr,
> @@ -207,8 +207,9 @@ static int initr_malloc(void)
> * This value MUST match the value of gd->start_addr_sp in board_f.c:
> * reserve_noncached().
> */
> - malloc_start = gd->relocaddr - TOTAL_MALLOC_LEN;
> - mem_malloc_init((ulong)map_sysmem(malloc_start, TOTAL_MALLOC_LEN),
> + start = gd->relocaddr - TOTAL_MALLOC_LEN;
> + gd_set_malloc_start(start);
> + mem_malloc_init((ulong)map_sysmem(start, TOTAL_MALLOC_LEN),
> TOTAL_MALLOC_LEN);
> return 0;
> }
> diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
> index a1e1b9d64005..8fc205ded1a3 100644
> --- a/include/asm-generic/global_data.h
> +++ b/include/asm-generic/global_data.h
> @@ -301,6 +301,12 @@ struct global_data {
> * @timebase_l: low 32 bits of timer
> */
> unsigned int timebase_l;
> + /**
> + * @malloc_start: start of malloc() region
> + */
> +#if CONFIG_IS_ENABLED(CMD_BDINFO_EXTRA)
> + unsigned long malloc_start;
> +#endif
> #if CONFIG_VAL(SYS_MALLOC_F_LEN)
> /**
> * @malloc_base: base address of early malloc()
> @@ -560,6 +566,13 @@ static_assert(sizeof(struct global_data) == GD_SIZE);
> #define gd_event_state() NULL
> #endif
>
> +#if CONFIG_IS_ENABLED(CMD_BDINFO_EXTRA)
> +#define gd_malloc_start() gd->malloc_start
> +#define gd_set_malloc_start(_val) gd->malloc_start = (_val)
> +#else
> +#define gd_malloc_start() 0
> +#define gd_set_malloc_start(val)
> +#endif
> /**
> * enum gd_flags - global data flags
> *
Otherwise,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
Regards,
Bin
More information about the U-Boot
mailing list