Re: [PATCH 1/2] board_f: Add verbose DRAM layout print option

Ilias Apalodimas <[email protected]>
Newsgroups org.u-boot-project.lists.u-boot
Message-ID <CAC_iWjL15ysDBon6OYfH0swA0K9V_LFj5zWsdZEafVKAdz9x+Q@mail.gmail.com>
On Mon, 3 Aug 2026 at 00:35, Marek Vasut
<[email protected]> wrote:
>
> Make verbose DRAM layout print on boot configurable via newly introduced
> CONFIG_DISPLAY_DRAM_CONFIG_VERBOSE Kconfig option. This reuses existing
> DRAM layout debug print, but with additional rework to place the output
> at the end of DRAM size listing, print both bank start and end addresses,
> and skip empty banks. In case DEBUG is defined, the DRAM layout print is
> triggered unconditionally.
>
> The original debug print looked as follows, which puts the layout print
> between DRAM: size announcement (1) and duplicate DRAM: size print (2),
> does not skip empty banks (3), and does not print DRAM bank end (4).
>
> "
> Model: Renesas Ironhide board based on r8a78000
> DRAM:  <----------------------------------------------------------- (1)
> RAM Configuration:
> Bank #0: 1080000000 2 GiB
> Bank #1: 1200000000 4 GiB <---------------------------------------- (4)
> ...
> Bank #8: 40000000 2 GiB
> Bank #9: 0 0 Bytes <----------------------------------------------- (3)
> ...
> Bank #15: 0 0 Bytes
>
> DRAM:  2 GiB (total 32 GiB) <-------------------------------------- (2)
> Core:  68 devices, 26 uclasses, devicetree: separate
> "
>
> The new debug print and optionally verbose print looks as follows, the
> duplicate DRAM: prefix is removed (1), the layout is printed after the
> DRAM size print (3), the DRAM end address is printed (3) and there are
> no more empty banks printed (4):
>
> "
> Model: Renesas Ironhide board based on r8a78000
> DRAM:  2 GiB (total 32 GiB) <-------------------------------------- (1)
> RAM Configuration: <----------------------------------------------- (2)
> Bank #0: 0x1080000000 - 0x10ffffffff, 2 GiB <---------------------- (4)
> Bank #1: 0x1200000000 - 0x12ffffffff, 4 GiB
> Bank #2: 0x1400000000 - 0x14ffffffff, 4 GiB
> Bank #3: 0x1600000000 - 0x16ffffffff, 4 GiB
> Bank #4: 0x1800000000 - 0x18ffffffff, 4 GiB
> Bank #5: 0x1a00000000 - 0x1affffffff, 4 GiB
> Bank #6: 0x1c00000000 - 0x1cffffffff, 4 GiB
> Bank #7: 0x1e00000000 - 0x1effffffff, 4 GiB
> Bank #8: 0x40000000 - 0xbfffffff, 2 GiB <-------------------------- (3)
> Core:  68 devices, 26 uclasses, devicetree: separate
> "
>
> Signed-off-by: Marek Vasut <[email protected]>
> ---
Reviewed-by: Ilias Apalodimas <[email protected]>


> Cc: Aristo Chen <[email protected]>
> Cc: Ilias Apalodimas <[email protected]>
> Cc: Johan Jonker <[email protected]>
> Cc: Nobuhiro Iwamatsu <[email protected]>
> Cc: Peng Fan <[email protected]>
> Cc: Quentin Schulz <[email protected]>
> Cc: Simon Glass <[email protected]>
> Cc: Tom Rini <[email protected]>
> Cc: [email protected]
> ---
>  common/Kconfig   |  6 ++++++
>  common/board_f.c | 33 ++++++++++++++++++++++++---------
>  2 files changed, 30 insertions(+), 9 deletions(-)
>
> diff --git a/common/Kconfig b/common/Kconfig
> index 345be4b8ca1..869493c979d 100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -615,6 +615,12 @@ config DISPLAY_BOARDINFO_LATE
>           the relocation phase. The board function checkboard() is called to do
>           this.
>
> +config DISPLAY_DRAM_CONFIG_VERBOSE
> +       bool "Display additional information about DRAM layout"
> +       help
> +         Display additional information about the board DRAM layout, including
> +         each bank start address, end address and size.
> +
>  menu "Start-up hooks"
>
>  config CYCLIC
> diff --git a/common/board_f.c b/common/board_f.c
> index 9efcd9499a9..f886774e82b 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -217,21 +217,34 @@ static int sizes_near(unsigned long long size1, unsigned long long size2)
>         return size1_scale == size2_scale && size1_val == size2_val;
>  }
>
> +static void show_dram_config_verbose(void)
> +{
> +       int i;
> +
> +#ifndef DEBUG
> +       if (!CONFIG_IS_ENABLED(DISPLAY_DRAM_CONFIG_VERBOSE))
> +               return;
> +#endif
> +
> +       printf("RAM Configuration:\n");
> +       for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> +               if (!gd->dram[i].size)
> +                       break;
> +
> +               printf("Bank #%d: 0x%llx - 0x%llx, ", i,
> +                      (unsigned long long)(gd->dram[i].start),
> +                      (unsigned long long)(gd->dram[i].start + gd->dram[i].size - 1));
> +               print_size(gd->dram[i].size, "\n");
> +       }
> +}
> +
>  static int show_dram_config(void)
>  {
>         unsigned long long size;
>         int i;
>
> -       debug("\nRAM Configuration:\n");
> -       for (i = size = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> +       for (i = size = 0; i < CONFIG_NR_DRAM_BANKS; i++)
>                 size += gd->dram[i].size;
> -               debug("Bank #%d: %llx ", i,
> -                     (unsigned long long)(gd->dram[i].start));
> -#ifdef DEBUG
> -               print_size(gd->dram[i].size, "\n");
> -#endif
> -       }
> -       debug("\nDRAM:  ");
>
>         print_size(gd->ram_size, "");
>         if (!sizes_near(gd->ram_size, size)) {
> @@ -241,6 +254,8 @@ static int show_dram_config(void)
>         board_add_ram_info(0);
>         putc('\n');
>
> +       show_dram_config_verbose();
> +
>         return 0;
>  }
>
> --
> 2.53.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.