> 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.
I wasn't aware of this change but this likely broke some boards or some functionality for archs like MIPS or PPC at the time. Unconditionally enabling CONFIG_NR_DRAM_BANKS was actually incorrect without migrating all users of bd->bi_memstart and bd->bi_memsize to bd->bi_dram[0]. Maybe most stuff kept working because board_f.c executed setup_board_part1() and dram_init_banksize() in parallel on archs like MIPS or PPC and redundant DRAM information had been carried around since then. To make this patch complete, we should finally remove the redundant bi_memstart and bi_memsize. The replacement with bi_dram[0].start and bi_dram[0].size should be rather trivial. $ git grep -n bi_memstart api/api_platform-mips.c:27: platform_set_mr(si, gd->bd- >bi_memstart, api/api_platform-powerpc.c:45: platform_set_mr(si, gd->bd- >bi_memstart, gd->bd->bi_memsize, MR_ATTR_DRAM); arch/arc/lib/cpu.c:30: gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; arch/mips/lib/boot.c:20: flush_cache(gd->bd->bi_memstart, gd- >ram_top - gd->bd->bi_memstart); arch/mips/lib/bootm.c:245: u64 mem_start = virt_to_phys((void *)gd->bd->bi_memstart); arch/powerpc/cpu/mpc83xx/fdt.c:124: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/cpu/mpc83xx/traps.c:26:#define END_OF_MEM (gd->bd- >bi_memstart + gd->bd->bi_memsize) arch/powerpc/cpu/mpc85xx/fdt.c:675: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/cpu/mpc85xx/fdt.c:678: ft_fixup_cpu(blob, (u64)bd- >bi_memstart + (u64)bd->bi_memsize); arch/powerpc/cpu/mpc85xx/traps.c:40:#define END_OF_MEM (gd->bd- >bi_memstart + get_effective_memsize()) arch/powerpc/cpu/mpc86xx/fdt.c:30: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/cpu/mpc86xx/traps.c:33:#define END_OF_MEM (gd->bd- >bi_memstart + get_effective_memsize()) arch/powerpc/cpu/mpc8xx/fdt.c:28: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/lib/bootm.c:301: base = (u64)gd->bd->bi_memstart; arch/xtensa/lib/bootm.c:51: mem->start = bd->bi_memstart; arch/xtensa/lib/bootm.c:52: mem->end = bd->bi_memstart + bd- >bi_memsize; board/Arcturus/ucp1020/spl.c:86: bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR; board/cadence/xtfpga/xtfpga.c:54: gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE); board/freescale/p1010rdb/spl.c:72: bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR; board/freescale/p1_p2_rdb_pc/spl.c:78: bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR; board/freescale/t102xrdb/spl.c:106: bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR; board/freescale/t104xrdb/spl.c:97: bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR; board/freescale/t208xqds/spl.c:105: bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR; board/freescale/t208xrdb/spl.c:75: bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR; board/freescale/t4rdb/spl.c:78: bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR; cmd/bdinfo.c:76: bdinfo_print_num("memstart", (ulong)bd- >bi_memstart); cmd/bedbug.c:351: top = gd->bd->bi_memstart + gd->bd->bi_memsize; common/board_f.c:610: bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; /* start of memory */ common/image.c:693: start = gd->bd->bi_memstart; drivers/video/cfb_console.c:1999: if ((ulong)video_fb_address >= bd->bi_memstart && drivers/video/cfb_console.c:2000: (ulong)video_fb_address < bd->bi_memstart + bd->bi_memsize) include/asm-generic/u-boot.h:30: unsigned long bi_memstart; /* start of DRAM memory */ lib/lmb.c:130: lmb_add(lmb, bd->bi_memstart, bd->bi_memsize); $ git grep -n bi_memsize api/api_platform-mips.c:28: gd->bd->bi_memsize, MR_ATTR_DRAM); api/api_platform-powerpc.c:45: platform_set_mr(si, gd->bd- >bi_memstart, gd->bd->bi_memsize, MR_ATTR_DRAM); arch/arc/lib/cpu.c:31: gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE; arch/powerpc/cpu/mpc83xx/fdt.c:124: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/cpu/mpc83xx/traps.c:26:#define END_OF_MEM (gd->bd- >bi_memstart + gd->bd->bi_memsize) arch/powerpc/cpu/mpc85xx/fdt.c:675: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/cpu/mpc85xx/fdt.c:678: ft_fixup_cpu(blob, (u64)bd- >bi_memstart + (u64)bd->bi_memsize); arch/powerpc/cpu/mpc86xx/fdt.c:30: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/cpu/mpc8xx/fdt.c:28: fdt_fixup_memory(blob, (u64)bd- >bi_memstart, (u64)bd->bi_memsize); arch/powerpc/lib/bootm.c:302: size = (u64)gd->bd->bi_memsize; arch/xtensa/lib/bootm.c:52: mem->end = bd->bi_memstart + bd- >bi_memsize; board/Arcturus/ucp1020/spl.c:87: bd->bi_memsize = CONFIG_SYS_L2_SIZE; board/cadence/xtfpga/xtfpga.c:55: gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE; board/freescale/p1010rdb/spl.c:73: bd->bi_memsize = CONFIG_SYS_L2_SIZE; board/freescale/p1_p2_rdb_pc/spl.c:79: bd->bi_memsize = CONFIG_SYS_L2_SIZE; board/freescale/t102xrdb/spl.c:107: bd->bi_memsize = CONFIG_SYS_L3_SIZE; board/freescale/t104xrdb/spl.c:98: bd->bi_memsize = CONFIG_SYS_L3_SIZE; board/freescale/t208xqds/spl.c:106: bd->bi_memsize = CONFIG_SYS_L3_SIZE; board/freescale/t208xrdb/spl.c:76: bd->bi_memsize = CONFIG_SYS_L3_SIZE; board/freescale/t4rdb/spl.c:79: bd->bi_memsize = CONFIG_SYS_L3_SIZE; cmd/bdinfo.c:77: print_lnum("memsize", (u64)bd->bi_memsize); cmd/bedbug.c:351: top = gd->bd->bi_memstart + gd->bd->bi_memsize; common/board_f.c:611: bd->bi_memsize = gd- >ram_size; /* size in bytes */ common/image.c:694: size = gd->bd->bi_memsize; drivers/video/cfb_console.c:2000: (ulong)video_fb_address < bd->bi_memstart + bd->bi_memsize) include/asm-generic/u- boot.h:31: phys_size_t bi_memsize; /* size of DRAM memory in bytes */ lib/lmb.c:129: if (bd->bi_memsize) lib/lmb.c:130: lmb_add(lmb, bd->bi_memstart, bd->bi_memsize); > > Signed-off-by: Stefan Roese <s...@denx.de> > Cc: Tom Rini <tr...@konsulko.com> > Cc: Ramon Fried <ramon.fr...@gmail.com> > Cc: Simon Glass <s...@chromium.org> > Cc: Michal Simek <michal.si...@xilinx.com> > --- > arch/x86/cpu/broadwell/cpu_from_spl.c | 2 -- > board/xilinx/zynqmp/zynqmp.c | 2 -- > cmd/bdinfo.c | 2 -- > common/board_f.c | 6 +----- > common/image.c | 3 +-- > common/init/handoff.c | 4 ---- > drivers/pci/pci-uclass.c | 17 +---------------- > include/asm-generic/u-boot.h | 2 -- > include/handoff.h | 2 -- > lib/fdtdec.c | 5 ----- > lib/lmb.c | 7 ------- > 11 files changed, 3 insertions(+), 49 deletions(-) > > 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/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 8b2c105e77..61daef4214 100644 > --- a/cmd/bdinfo.c > +++ b/cmd/bdinfo.c > @@ -47,7 +47,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) { > @@ -57,7 +56,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) > diff --git a/common/board_f.c b/common/board_f.c > index 88ff0424a7..d7c13f63c9 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 > diff --git a/common/image.c b/common/image.c > index 9d7d5c17d1..2ed46f7685 100644 > --- a/common/image.c > +++ b/common/image.c > @@ -685,8 +685,7 @@ phys_size_t env_get_bootm_size(void) > return tmp; > } > > -#if (defined(CONFIG_ARM) || defined(CONFIG_MICROBLAZE)) && \ > - defined(CONFIG_NR_DRAM_BANKS) > +#if defined(CONFIG_ARM) || defined(CONFIG_MICROBLAZE) > start = gd->bd->bi_dram[0].start; > size = gd->bd->bi_dram[0].size; > #else > diff --git a/common/init/handoff.c b/common/init/handoff.c > index e00b43e6a7..c20fbf78b8 100644 > --- a/common/init/handoff.c > +++ b/common/init/handoff.c > @@ -13,7 +13,6 @@ DECLARE_GLOBAL_DATA_PTR; > void handoff_save_dram(struct spl_handoff *ho) > { > ho->ram_size = gd->ram_size; > -#ifdef CONFIG_NR_DRAM_BANKS > { > struct bd_info *bd = gd->bd; > int i; > @@ -23,7 +22,6 @@ void handoff_save_dram(struct spl_handoff *ho) > ho->ram_bank[i].size = bd->bi_dram[i].size; > } > } > -#endif > } > > void handoff_load_dram_size(struct spl_handoff *ho) > @@ -33,7 +31,6 @@ 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; > @@ -43,5 +40,4 @@ void handoff_load_dram_banks(struct spl_handoff *ho) > 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/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h > index 62e61d41cc..99d3fe33ad 100644 > --- a/include/asm-generic/u-boot.h > +++ b/include/asm-generic/u-boot.h > @@ -70,12 +70,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 2d680d8d02..f0adc9592e 100644 > --- a/lib/lmb.c > +++ b/lib/lmb.c > @@ -113,22 +113,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); > } > -- - Daniel