[PATCH v3] CONFIG_NR_DRAM_BANKS: Remove unreferenced code as its always defined

Pali Rohár pali at kernel.org
Wed Aug 12 10:05:17 CEST 2020


On Wednesday 12 August 2020 09:44:17 Stefan Roese wrote:
> Since commit 86cf1c82850f ("configs: Migrate CONFIG_NR_DRAM_BANKS") &
> commit 999a772d9f24 ("Kconfig: Migrate CONFIG_NR_DRAM_BANKS"),
> CONFIG_NR_DRAM_BANKS is always defined with a value (4 is default).
> It makes no sense to still carry code that is guarded with
> "#ifndef CONFIG_NR_DRAM_BANKS" (and similar). This patch removes
> all these unreferenced code paths.
> 
> Also complete remove bi_memstart & bi_memsize from the board-info
> struct. As now bi_dram[] is always enabled and should be used instead.
> This removes the redundant varriables.
> 
> Signed-off-by: Stefan Roese <sr at denx.de>
> Cc: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Ramon Fried <ramon.fried at gmail.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Michal Simek <michal.simek at xilinx.com>
> Cc: Pali Rohár <pali at kernel.org>
> ---
> v3:
> - Rebase on TOT
> - Add check to not overwrite bi_dram[0] if already configured in
>   setup_bdinfo(). This fixes the test issue with Nokia RX51.
> 
> Azure test report success:
> https://dev.azure.com/sr0718/u-boot/_build/results?buildId=26&view=results
>   
> v2:
> - Change all references to bi_memstart & bi_memsize to bi_dram[0].start/
>   size and remove it from the bd_info struct completely, as suggested by
>   Daniel
> 
>  api/api_platform-mips.c               |  4 ++--
>  api/api_platform-powerpc.c            |  2 +-
>  arch/mips/lib/boot.c                  |  2 +-
>  arch/mips/lib/bootm.c                 |  2 +-
>  arch/powerpc/cpu/mpc83xx/fdt.c        |  2 +-
>  arch/powerpc/cpu/mpc83xx/traps.c      |  2 +-
>  arch/powerpc/cpu/mpc85xx/fdt.c        |  4 ++--
>  arch/powerpc/cpu/mpc85xx/traps.c      |  2 +-
>  arch/powerpc/cpu/mpc86xx/fdt.c        |  2 +-
>  arch/powerpc/cpu/mpc86xx/traps.c      |  2 +-
>  arch/powerpc/cpu/mpc8xx/fdt.c         |  2 +-
>  arch/powerpc/lib/bootm.c              |  4 ++--
>  arch/x86/cpu/broadwell/cpu_from_spl.c |  2 --
>  arch/xtensa/lib/bdinfo.c              |  4 ++--
>  arch/xtensa/lib/bootm.c               |  4 ++--
>  board/Arcturus/ucp1020/spl.c          |  4 ++--
>  board/freescale/p1010rdb/spl.c        |  4 ++--
>  board/freescale/p1_p2_rdb_pc/spl.c    |  4 ++--
>  board/freescale/t102xrdb/spl.c        |  4 ++--
>  board/freescale/t104xrdb/spl.c        |  4 ++--
>  board/freescale/t208xqds/spl.c        |  4 ++--
>  board/freescale/t208xrdb/spl.c        |  4 ++--
>  board/freescale/t4rdb/spl.c           |  4 ++--
>  board/xilinx/zynqmp/zynqmp.c          |  2 --
>  cmd/bdinfo.c                          |  6 ++---
>  cmd/bedbug.c                          |  2 +-
>  common/board_f.c                      | 13 +++++------
>  common/image.c                        | 10 +-------
>  common/init/handoff.c                 | 33 +++++++++++----------------
>  drivers/pci/pci-uclass.c              | 17 +-------------
>  drivers/video/cfb_console.c           |  8 +------
>  include/asm-generic/u-boot.h          |  4 ----
>  include/handoff.h                     |  2 --
>  lib/fdtdec.c                          |  5 ----
>  lib/lmb.c                             |  7 ------
>  35 files changed, 60 insertions(+), 121 deletions(-)
> 
> diff --git a/api/api_platform-mips.c b/api/api_platform-mips.c
> index 51cd328b3d..f1721cef19 100644
> --- a/api/api_platform-mips.c
> +++ b/api/api_platform-mips.c
> @@ -24,8 +24,8 @@ DECLARE_GLOBAL_DATA_PTR;
>  int platform_sys_info(struct sys_info *si)
>  {
>  
> -	platform_set_mr(si, gd->bd->bi_memstart,
> -			gd->bd->bi_memsize, MR_ATTR_DRAM);
> +	platform_set_mr(si, gd->bd->bi_dram[0].start,
> +			gd->bd->bi_dram[0].size, MR_ATTR_DRAM);
>  
>  	return 1;
>  }
> diff --git a/api/api_platform-powerpc.c b/api/api_platform-powerpc.c
> index 15930cfdb6..8fff6e4cae 100644
> --- a/api/api_platform-powerpc.c
> +++ b/api/api_platform-powerpc.c
> @@ -42,7 +42,7 @@ int platform_sys_info(struct sys_info *si)
>  	si->bar = 0;
>  #endif
>  
> -	platform_set_mr(si, gd->bd->bi_memstart, gd->bd->bi_memsize, MR_ATTR_DRAM);
> +	platform_set_mr(si, gd->bd->bi_dram[0].start, gd->bd->bi_dram[0].size, MR_ATTR_DRAM);
>  	platform_set_mr(si, gd->bd->bi_flashstart, gd->bd->bi_flashsize, MR_ATTR_FLASH);
>  	platform_set_mr(si, gd->bd->bi_sramstart, gd->bd->bi_sramsize, MR_ATTR_SRAM);
>  
> diff --git a/arch/mips/lib/boot.c b/arch/mips/lib/boot.c
> index db862f6379..3b960691c5 100644
> --- a/arch/mips/lib/boot.c
> +++ b/arch/mips/lib/boot.c
> @@ -17,7 +17,7 @@ unsigned long do_go_exec(ulong (*entry)(int, char * const []),
>  	 * whole SDRAM area, since we don't know the size of the image
>  	 * that was loaded.
>  	 */
> -	flush_cache(gd->bd->bi_memstart, gd->ram_top - gd->bd->bi_memstart);
> +	flush_cache(gd->bd->bi_dram[0].start, gd->ram_top - gd->bd->bi_dram[0].start);
>  
>  	return entry(argc, argv);
>  }
> diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
> index 0a13f6edb7..b3ef15963e 100644
> --- a/arch/mips/lib/bootm.c
> +++ b/arch/mips/lib/bootm.c
> @@ -242,7 +242,7 @@ static int boot_reloc_fdt(bootm_headers_t *images)
>  #if CONFIG_IS_ENABLED(MIPS_BOOT_FDT) && CONFIG_IS_ENABLED(OF_LIBFDT)
>  int arch_fixup_fdt(void *blob)
>  {
> -	u64 mem_start = virt_to_phys((void *)gd->bd->bi_memstart);
> +	u64 mem_start = virt_to_phys((void *)gd->bd->bi_dram[0].start);
>  	u64 mem_size = gd->ram_size;

I do not fully understand this change. Why on some places you are suing
bi_dram[0].size and on some places gd->ram_size?

>  
>  	return fdt_fixup_memory_banks(blob, &mem_start, &mem_size, 1);
> diff --git a/arch/powerpc/cpu/mpc83xx/fdt.c b/arch/powerpc/cpu/mpc83xx/fdt.c
> index ebdedb2888..05523ecc67 100644
> --- a/arch/powerpc/cpu/mpc83xx/fdt.c
> +++ b/arch/powerpc/cpu/mpc83xx/fdt.c
> @@ -121,7 +121,7 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
>                  "clock-frequency", get_serial_clock(), 1);
>  #endif
>  
> -	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
> +	fdt_fixup_memory(blob, (u64)bd->bi_dram[0].start, (u64)bd->bi_dram[0].size);
>  
>  #if defined(CONFIG_BOOTCOUNT_LIMIT) && \
>  	(defined(CONFIG_QE) && !defined(CONFIG_ARCH_MPC831X))
> diff --git a/arch/powerpc/cpu/mpc83xx/traps.c b/arch/powerpc/cpu/mpc83xx/traps.c
> index c3cc119d65..5a8cd36420 100644
> --- a/arch/powerpc/cpu/mpc83xx/traps.c
> +++ b/arch/powerpc/cpu/mpc83xx/traps.c
> @@ -23,7 +23,7 @@ DECLARE_GLOBAL_DATA_PTR;
>  /* Returns 0 if exception not found and fixup otherwise.  */
>  extern unsigned long search_exception_table(unsigned long);
>  
> -#define END_OF_MEM	(gd->bd->bi_memstart + gd->bd->bi_memsize)
> +#define END_OF_MEM	(gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size)
>  
>  /*
>   * Trap & Exception support
> diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c
> index 9569c1a64b..2cc567a5f4 100644
> --- a/arch/powerpc/cpu/mpc85xx/fdt.c
> +++ b/arch/powerpc/cpu/mpc85xx/fdt.c
> @@ -672,10 +672,10 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
>  		"clock-frequency", get_bus_freq(0), 1);
>  #endif
>  
> -	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
> +	fdt_fixup_memory(blob, (u64)bd->bi_dram[0].start, (u64)bd->bi_dram[0].size);
>  
>  #ifdef CONFIG_MP
> -	ft_fixup_cpu(blob, (u64)bd->bi_memstart + (u64)bd->bi_memsize);
> +	ft_fixup_cpu(blob, (u64)bd->bi_dram[0].start + (u64)bd->bi_dram[0].size);
>  	ft_fixup_num_cores(blob);
>  #endif
>  
> diff --git a/arch/powerpc/cpu/mpc85xx/traps.c b/arch/powerpc/cpu/mpc85xx/traps.c
> index f37a45e269..061b7b8f6e 100644
> --- a/arch/powerpc/cpu/mpc85xx/traps.c
> +++ b/arch/powerpc/cpu/mpc85xx/traps.c
> @@ -37,7 +37,7 @@ extern unsigned long search_exception_table(unsigned long);
>   * amount of memory on the system if we're unable to keep all
>   * the memory mapped in.
>   */
> -#define END_OF_MEM (gd->bd->bi_memstart + get_effective_memsize())
> +#define END_OF_MEM (gd->bd->bi_dram[0].start + get_effective_memsize())

And on other place is get_effective_memsize()?

>  static __inline__ void set_tsr(unsigned long val)
>  {
> diff --git a/arch/powerpc/cpu/mpc86xx/fdt.c b/arch/powerpc/cpu/mpc86xx/fdt.c
> index 24e53115ec..143575befd 100644
> --- a/arch/powerpc/cpu/mpc86xx/fdt.c
> +++ b/arch/powerpc/cpu/mpc86xx/fdt.c
> @@ -27,7 +27,7 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
>  	do_fixup_by_prop_u32(blob, "device_type", "soc", 4,
>  			     "bus-frequency", bd->bi_busfreq, 1);
>  
> -	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
> +	fdt_fixup_memory(blob, (u64)bd->bi_dram[0].start, (u64)bd->bi_dram[0].size);
>  
>  #ifdef CONFIG_SYS_NS16550
>  	do_fixup_by_compat_u32(blob, "ns16550",
> diff --git a/arch/powerpc/cpu/mpc86xx/traps.c b/arch/powerpc/cpu/mpc86xx/traps.c
> index c0161e3379..532df93c3c 100644
> --- a/arch/powerpc/cpu/mpc86xx/traps.c
> +++ b/arch/powerpc/cpu/mpc86xx/traps.c
> @@ -30,7 +30,7 @@ extern unsigned long search_exception_table(unsigned long);
>   * amount of memory on the system if we're unable to keep all
>   * the memory mapped in.
>   */
> -#define END_OF_MEM (gd->bd->bi_memstart + get_effective_memsize())
> +#define END_OF_MEM (gd->bd->bi_dram[0].start + get_effective_memsize())
>  
>  /*
>   * Trap & Exception support
> diff --git a/arch/powerpc/cpu/mpc8xx/fdt.c b/arch/powerpc/cpu/mpc8xx/fdt.c
> index 4d952a3882..e593242631 100644
> --- a/arch/powerpc/cpu/mpc8xx/fdt.c
> +++ b/arch/powerpc/cpu/mpc8xx/fdt.c
> @@ -25,5 +25,5 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
>  	do_fixup_by_compat_u32(blob, "fsl,cpm-brg", "clock-frequency",
>  			       gd->arch.brg_clk, 1);
>  
> -	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
> +	fdt_fixup_memory(blob, (u64)bd->bi_dram[0].start, (u64)bd->bi_dram[0].size);
>  }
> diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
> index 8c8ed99cd3..d8bf5a14f6 100644
> --- a/arch/powerpc/lib/bootm.c
> +++ b/arch/powerpc/lib/bootm.c
> @@ -298,8 +298,8 @@ void boot_prep_vxworks(bootm_headers_t *images)
>  	if (!images->ft_addr)
>  		return;
>  
> -	base = (u64)gd->bd->bi_memstart;
> -	size = (u64)gd->bd->bi_memsize;
> +	base = (u64)gd->bd->bi_dram[0].start;
> +	size = (u64)gd->bd->bi_dram[0].size;
>  
>  	off = fdt_path_offset(images->ft_addr, "/memory");
>  	if (off < 0)
> diff --git a/arch/x86/cpu/broadwell/cpu_from_spl.c b/arch/x86/cpu/broadwell/cpu_from_spl.c
> index 6567d50653..4d4cdafa2b 100644
> --- a/arch/x86/cpu/broadwell/cpu_from_spl.c
> +++ b/arch/x86/cpu/broadwell/cpu_from_spl.c
> @@ -53,14 +53,12 @@ void board_debug_uart_init(void)
>  
>  int dram_init_banksize(void)
>  {
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	struct spl_handoff *ho;
>  
>  	ho = bloblist_find(BLOBLISTT_SPL_HANDOFF, sizeof(*ho));
>  	if (!ho)
>  		return log_msg_ret("Missing SPL hand-off info", -ENOENT);
>  	handoff_load_dram_banks(ho);
> -#endif
>  
>  	return 0;
>  }
> diff --git a/arch/xtensa/lib/bdinfo.c b/arch/xtensa/lib/bdinfo.c
> index 4ec8529521..1839edd9bb 100644
> --- a/arch/xtensa/lib/bdinfo.c
> +++ b/arch/xtensa/lib/bdinfo.c
> @@ -15,8 +15,8 @@ int arch_setup_bdinfo(void)
>  {
>  	struct bd_info *bd = gd->bd;
>  
> -	bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
> -	bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
> +	bd->bi_dram[0].start = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
> +	bd->bi_dram[0].size = CONFIG_SYS_SDRAM_SIZE;
>  
>  	return 0;
>  }
> diff --git a/arch/xtensa/lib/bootm.c b/arch/xtensa/lib/bootm.c
> index 458eaf95c0..16ab51dbc9 100644
> --- a/arch/xtensa/lib/bootm.c
> +++ b/arch/xtensa/lib/bootm.c
> @@ -48,8 +48,8 @@ static struct bp_tag *setup_memory_tag(struct bp_tag *params)
>  	params->size = sizeof(struct meminfo);
>  	mem = (struct meminfo *)params->data;
>  	mem->type = MEMORY_TYPE_CONVENTIONAL;
> -	mem->start = bd->bi_memstart;
> -	mem->end = bd->bi_memstart + bd->bi_memsize;
> +	mem->start = bd->bi_dram[0].start;
> +	mem->end = bd->bi_dram[0].start + bd->bi_dram[0].size;
>  
>  	printf("   MEMORY:          tag:0x%04x, type:0X%lx, start:0X%lx, end:0X%lx\n",
>  	       BP_TAG_MEMORY, mem->type, mem->start, mem->end);
> diff --git a/board/Arcturus/ucp1020/spl.c b/board/Arcturus/ucp1020/spl.c
> index 5416a5b663..8eb641ef8d 100644
> --- a/board/Arcturus/ucp1020/spl.c
> +++ b/board/Arcturus/ucp1020/spl.c
> @@ -83,8 +83,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(CONFIG_SPL_GD_ADDR + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L2_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L2_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L2_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/p1010rdb/spl.c b/board/freescale/p1010rdb/spl.c
> index 4ee4573d2b..ddc0af3faa 100644
> --- a/board/freescale/p1010rdb/spl.c
> +++ b/board/freescale/p1010rdb/spl.c
> @@ -69,8 +69,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(CONFIG_SPL_GD_ADDR + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L2_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L2_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L2_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/p1_p2_rdb_pc/spl.c b/board/freescale/p1_p2_rdb_pc/spl.c
> index e76c3e82c3..f67b0fcbb9 100644
> --- a/board/freescale/p1_p2_rdb_pc/spl.c
> +++ b/board/freescale/p1_p2_rdb_pc/spl.c
> @@ -75,8 +75,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(CONFIG_SPL_GD_ADDR + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L2_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L2_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L2_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/t102xrdb/spl.c b/board/freescale/t102xrdb/spl.c
> index da442fcc18..ce7ccfe41d 100644
> --- a/board/freescale/t102xrdb/spl.c
> +++ b/board/freescale/t102xrdb/spl.c
> @@ -103,8 +103,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(gd + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L3_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L3_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L3_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/t104xrdb/spl.c b/board/freescale/t104xrdb/spl.c
> index f83d69ba15..4b5fb8b955 100644
> --- a/board/freescale/t104xrdb/spl.c
> +++ b/board/freescale/t104xrdb/spl.c
> @@ -94,8 +94,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(gd + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L3_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L3_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L3_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/t208xqds/spl.c b/board/freescale/t208xqds/spl.c
> index c197884421..dc0046d93c 100644
> --- a/board/freescale/t208xqds/spl.c
> +++ b/board/freescale/t208xqds/spl.c
> @@ -102,8 +102,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(gd + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L3_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L3_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L3_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/t208xrdb/spl.c b/board/freescale/t208xrdb/spl.c
> index 07aab6349c..f523622de9 100644
> --- a/board/freescale/t208xrdb/spl.c
> +++ b/board/freescale/t208xrdb/spl.c
> @@ -72,8 +72,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(gd + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L3_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L3_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L3_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/freescale/t4rdb/spl.c b/board/freescale/t4rdb/spl.c
> index 64d2753da8..a5351e813a 100644
> --- a/board/freescale/t4rdb/spl.c
> +++ b/board/freescale/t4rdb/spl.c
> @@ -75,8 +75,8 @@ void board_init_r(gd_t *gd, ulong dest_addr)
>  	bd = (struct bd_info *)(gd + sizeof(gd_t));
>  	memset(bd, 0, sizeof(struct bd_info));
>  	gd->bd = bd;
> -	bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
> -	bd->bi_memsize = CONFIG_SYS_L3_SIZE;
> +	bd->bi_dram[0].start = CONFIG_SYS_INIT_L3_ADDR;
> +	bd->bi_dram[0].size = CONFIG_SYS_L3_SIZE;
>  
>  	arch_cpu_init();
>  	get_clocks();
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index ebb7172908..4cc5cb6fd7 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -467,10 +467,8 @@ int dram_init(void)
>  #else
>  int dram_init_banksize(void)
>  {
> -#if defined(CONFIG_NR_DRAM_BANKS)
>  	gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
>  	gd->bd->bi_dram[0].size = get_effective_memsize();
> -#endif
>  
>  	mem_map_fill();
>  
> diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
> index 9593b345a3..117788dade 100644
> --- a/cmd/bdinfo.c
> +++ b/cmd/bdinfo.c
> @@ -49,7 +49,6 @@ void bdinfo_print_mhz(const char *name, unsigned long hz)
>  
>  static void print_bi_dram(const struct bd_info *bd)
>  {
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	int i;
>  
>  	for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
> @@ -59,7 +58,6 @@ static void print_bi_dram(const struct bd_info *bd)
>  			bdinfo_print_num("-> size",	bd->bi_dram[i].size);
>  		}
>  	}
> -#endif
>  }
>  
>  __weak void arch_print_bdinfo(void)
> @@ -75,8 +73,8 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>  #endif
>  	bdinfo_print_num("boot_params", (ulong)bd->bi_boot_params);
>  	print_bi_dram(bd);
> -	bdinfo_print_num("memstart", (ulong)bd->bi_memstart);
> -	print_phys_addr("memsize", bd->bi_memsize);
> +	bdinfo_print_num("memstart", (ulong)bd->bi_dram[0].start);
> +	print_phys_addr("memsize", bd->bi_dram[0].size);
>  	if (IS_ENABLED(CONFIG_SYS_HAS_SRAM)) {
>  		bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart);
>  		bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize);
> diff --git a/cmd/bedbug.c b/cmd/bedbug.c
> index 81ce256480..0db42d7eed 100644
> --- a/cmd/bedbug.c
> +++ b/cmd/bedbug.c
> @@ -348,7 +348,7 @@ int do_bedbug_stack(struct cmd_tbl *cmdtp, int flag, int argc,
>  		return 1;
>  	}
>  
> -	top = gd->bd->bi_memstart + gd->bd->bi_memsize;
> +	top = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size;
>  	depth = 0;
>  
>  	printf ("Depth     PC\n");
> diff --git a/common/board_f.c b/common/board_f.c
> index 79532f4365..1d2f6a2545 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -216,7 +216,6 @@ static int show_dram_config(void)
>  {
>  	unsigned long long size;
>  
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	int i;
>  
>  	debug("\nRAM Configuration:\n");
> @@ -229,9 +228,6 @@ static int show_dram_config(void)
>  #endif
>  	}
>  	debug("\nDRAM:  ");
> -#else
> -	size = gd->ram_size;
> -#endif
>  
>  	print_size(size, "");
>  	board_add_ram_info(0);
> @@ -242,7 +238,7 @@ static int show_dram_config(void)
>  
>  __weak int dram_init_banksize(void)
>  {
> -#if defined(CONFIG_NR_DRAM_BANKS) && defined(CONFIG_SYS_SDRAM_BASE)
> +#if defined(CONFIG_SYS_SDRAM_BASE)
>  	gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
>  	gd->bd->bi_dram[0].size = get_effective_memsize();
>  #endif
> @@ -607,8 +603,11 @@ int setup_bdinfo(void)
>  {
>  	struct bd_info *bd = gd->bd;
>  
> -	bd->bi_memstart = gd->ram_base;  /* start of memory */
> -	bd->bi_memsize = gd->ram_size;   /* size in bytes */
> +	/* Only overwrite bi_dram[0] values if not already set */
> +	if (!bd->bi_dram[0].size) {

This still look suspicious. When is bi_dram[0].size zero? I tried to
trace source code. dram_init_banksize() is always called before
setup_bdinfo() which fills bi_dram[], so when can be dram size zero?
Or I'm missing something?

> +		bd->bi_dram[0].start = gd->ram_base;  /* start of memory */
> +		bd->bi_dram[0].size = gd->ram_size;   /* size in bytes */
> +	}
>  
>  	if (IS_ENABLED(CONFIG_SYS_HAS_SRAM)) {
>  		bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
> diff --git a/common/image.c b/common/image.c
> index 9d7d5c17d1..35db5c2fda 100644
> --- a/common/image.c
> +++ b/common/image.c
> @@ -668,10 +668,8 @@ ulong env_get_bootm_low(void)
>  
>  #if defined(CONFIG_SYS_SDRAM_BASE)
>  	return CONFIG_SYS_SDRAM_BASE;
> -#elif defined(CONFIG_ARM) || defined(CONFIG_MICROBLAZE)
> -	return gd->bd->bi_dram[0].start;
>  #else
> -	return 0;
> +	return gd->bd->bi_dram[0].start;
>  #endif
>  }
>  
> @@ -685,14 +683,8 @@ phys_size_t env_get_bootm_size(void)
>  		return tmp;
>  	}
>  
> -#if (defined(CONFIG_ARM) || defined(CONFIG_MICROBLAZE)) && \
> -     defined(CONFIG_NR_DRAM_BANKS)
>  	start = gd->bd->bi_dram[0].start;
>  	size = gd->bd->bi_dram[0].size;
> -#else
> -	start = gd->bd->bi_memstart;
> -	size = gd->bd->bi_memsize;
> -#endif
>  
>  	s = env_get("bootm_low");
>  	if (s)
> diff --git a/common/init/handoff.c b/common/init/handoff.c
> index e00b43e6a7..62071bd017 100644
> --- a/common/init/handoff.c
> +++ b/common/init/handoff.c
> @@ -12,18 +12,15 @@ DECLARE_GLOBAL_DATA_PTR;
>  
>  void handoff_save_dram(struct spl_handoff *ho)
>  {
> +	struct bd_info *bd = gd->bd;
> +	int i;
> +
>  	ho->ram_size = gd->ram_size;
> -#ifdef CONFIG_NR_DRAM_BANKS
> -	{
> -		struct bd_info *bd = gd->bd;
> -		int i;
> -
> -		for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> -			ho->ram_bank[i].start = bd->bi_dram[i].start;
> -			ho->ram_bank[i].size = bd->bi_dram[i].size;
> -		}
> +
> +	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> +		ho->ram_bank[i].start = bd->bi_dram[i].start;
> +		ho->ram_bank[i].size = bd->bi_dram[i].size;
>  	}
> -#endif
>  }
>  
>  void handoff_load_dram_size(struct spl_handoff *ho)
> @@ -33,15 +30,11 @@ void handoff_load_dram_size(struct spl_handoff *ho)
>  
>  void handoff_load_dram_banks(struct spl_handoff *ho)
>  {
> -#ifdef CONFIG_NR_DRAM_BANKS
> -	{
> -		struct bd_info *bd = gd->bd;
> -		int i;
> -
> -		for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> -			bd->bi_dram[i].start = ho->ram_bank[i].start;
> -			bd->bi_dram[i].size = ho->ram_bank[i].size;
> -		}
> +	struct bd_info *bd = gd->bd;
> +	int i;
> +
> +	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> +		bd->bi_dram[i].start = ho->ram_bank[i].start;
> +		bd->bi_dram[i].size = ho->ram_bank[i].size;
>  	}
> -#endif
>  }
> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
> index 834526c5a4..69fb46d3f4 100644
> --- a/drivers/pci/pci-uclass.c
> +++ b/drivers/pci/pci-uclass.c
> @@ -871,6 +871,7 @@ static void decode_regions(struct pci_controller *hose, ofnode parent_node,
>  			   ofnode node)
>  {
>  	int pci_addr_cells, addr_cells, size_cells;
> +	struct bd_info *bd = gd->bd;
>  	int cells_per_record;
>  	const u32 *prop;
>  	int len;
> @@ -938,9 +939,6 @@ static void decode_regions(struct pci_controller *hose, ofnode parent_node,
>  	}
>  
>  	/* Add a region for our local memory */
> -#ifdef CONFIG_NR_DRAM_BANKS
> -	struct bd_info *bd = gd->bd;
> -
>  	if (!bd)
>  		return;
>  
> @@ -958,19 +956,6 @@ static void decode_regions(struct pci_controller *hose, ofnode parent_node,
>  				       PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
>  		}
>  	}
> -#else
> -	phys_addr_t base = 0, size;
> -
> -	size = gd->ram_size;
> -#ifdef CONFIG_SYS_SDRAM_BASE
> -	base = CONFIG_SYS_SDRAM_BASE;
> -#endif
> -	if (gd->pci_ram_top && gd->pci_ram_top < base + size)
> -		size = gd->pci_ram_top - base;
> -	if (size)
> -		pci_set_region(hose->regions + hose->region_count++, base,
> -			base, size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
> -#endif
>  
>  	return;
>  }
> diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
> index badade353e..3f07f4eb29 100644
> --- a/drivers/video/cfb_console.c
> +++ b/drivers/video/cfb_console.c
> @@ -1983,8 +1983,6 @@ static void *video_logo(void)
>  static int cfb_fb_is_in_dram(void)
>  {
>  	struct bd_info *bd = gd->bd;
> -#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || \
> -defined(CONFIG_SANDBOX) || defined(CONFIG_X86)
>  	ulong start, end;
>  	int i;
>  
> @@ -1995,11 +1993,7 @@ defined(CONFIG_SANDBOX) || defined(CONFIG_X86)
>  		    (ulong)video_fb_address < end)
>  			return 1;
>  	}
> -#else
> -	if ((ulong)video_fb_address >= bd->bi_memstart &&
> -	    (ulong)video_fb_address < bd->bi_memstart + bd->bi_memsize)
> -		return 1;
> -#endif
> +
>  	return 0;
>  }
>  
> diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h
> index 62e61d41cc..637de0c455 100644
> --- a/include/asm-generic/u-boot.h
> +++ b/include/asm-generic/u-boot.h
> @@ -27,8 +27,6 @@
>  #include <linux/types.h>
>  
>  struct bd_info {
> -	unsigned long	bi_memstart;	/* start of DRAM memory */
> -	phys_size_t	bi_memsize;	/* size	 of DRAM memory in bytes */
>  	unsigned long	bi_flashstart;	/* start of FLASH memory */
>  	unsigned long	bi_flashsize;	/* size	 of FLASH memory */
>  	unsigned long	bi_flashoffset; /* reserved area for startup monitor */
> @@ -70,12 +68,10 @@ struct bd_info {
>  #endif
>  	ulong	        bi_arch_number;	/* unique id for this board */
>  	ulong	        bi_boot_params;	/* where this board expects params */
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	struct {			/* RAM configuration */
>  		phys_addr_t start;
>  		phys_size_t size;
>  	} bi_dram[CONFIG_NR_DRAM_BANKS];
> -#endif /* CONFIG_NR_DRAM_BANKS */
>  };
>  
>  #endif /* __ASSEMBLY__ */
> diff --git a/include/handoff.h b/include/handoff.h
> index 75d19b1f6e..070a79c1b9 100644
> --- a/include/handoff.h
> +++ b/include/handoff.h
> @@ -20,12 +20,10 @@
>  struct spl_handoff {
>  	struct arch_spl_handoff arch;
>  	u64 ram_size;
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	struct {
>  		u64 start;
>  		u64 size;
>  	} ram_bank[CONFIG_NR_DRAM_BANKS];
> -#endif
>  };
>  
>  void handoff_save_dram(struct spl_handoff *ho);
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index 78576b530f..ecbf10121d 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -1055,8 +1055,6 @@ int fdtdec_setup_mem_size_base(void)
>  	return 0;
>  }
>  
> -#if defined(CONFIG_NR_DRAM_BANKS)
> -
>  static int get_next_memory_node(const void *blob, int mem)
>  {
>  	do {
> @@ -1106,7 +1104,6 @@ int fdtdec_setup_memory_banksize(void)
>  
>  	return 0;
>  }
> -#endif
>  
>  #if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
>  # if CONFIG_IS_ENABLED(MULTI_DTB_FIT_GZIP) ||\
> @@ -1569,7 +1566,6 @@ int fdtdec_resetup(int *rescan)
>  }
>  #endif
>  
> -#ifdef CONFIG_NR_DRAM_BANKS
>  int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
>  			   phys_addr_t *basep, phys_size_t *sizep,
>  			   struct bd_info *bd)
> @@ -1675,6 +1671,5 @@ int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
>  
>  	return 0;
>  }
> -#endif /* CONFIG_NR_DRAM_BANKS */
>  
>  #endif /* !USE_HOSTCC */
> diff --git a/lib/lmb.c b/lib/lmb.c
> index 75082f3559..600f55051c 100644
> --- a/lib/lmb.c
> +++ b/lib/lmb.c
> @@ -117,22 +117,15 @@ static void lmb_reserve_common(struct lmb *lmb, void *fdt_blob)
>  /* Initialize the struct, add memory and call arch/board reserve functions */
>  void lmb_init_and_reserve(struct lmb *lmb, struct bd_info *bd, void *fdt_blob)
>  {
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	int i;
> -#endif
>  
>  	lmb_init(lmb);
> -#ifdef CONFIG_NR_DRAM_BANKS
>  	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
>  		if (bd->bi_dram[i].size) {
>  			lmb_add(lmb, bd->bi_dram[i].start,
>  				bd->bi_dram[i].size);
>  		}
>  	}
> -#else
> -	if (bd->bi_memsize)
> -		lmb_add(lmb, bd->bi_memstart, bd->bi_memsize);
> -#endif
>  	lmb_reserve_common(lmb, fdt_blob);
>  }
>  
> -- 
> 2.28.0
> 

For me it looks like that this patch is mixing different structures for
ram size from different sources. It is really correct? Does not it break
other boards?

I think that there is missing explanation of these changes.


More information about the U-Boot mailing list