u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds
@ 2022-09-09 15:32 Pali Rohár
  2022-09-09 15:32 ` [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED Pali Rohár
                   ` (9 more replies)
  0 siblings, 10 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

This patch series fixes U-Boot code to correctly handle RAM size larger
than 2 GB and then fixes fsl ddr driver to do not crash U-Boot when 4 GB
DDR module is detected when U-Boot operates in 32-bit mode (as opposite
of the 36-bit mode).

With this patch series it is possible to boot 32-bit U-Boot with 4 GB
SODIMM DDR3 module without crashes. U-Boot will still use just
CONFIG_MAX_MEM_MAPPED amount of RAM, but it is better than crashing due
to the truncating of 4GB value to 32-bit number (which is zero).

I tested this patch series on powerpc P2020 based board but only with
U-Boot v2022.04 because U-Boot master branch is still broken on P2020.

Pali Rohár (9):
  common/memsize.c: Fix get_effective_memsize() to always check for
    CONFIG_MAX_MEM_MAPPED
  common/memsize.c: Fix get_effective_memsize() to check for overflow
  board_f: Fix types for board_get_usable_ram_top()
  board_f: Fix printing gd->ram_size and gd->ram_top
  ddr: fsl: Fix checking for maximal mappable memory
  ddr: fsl: Fix fsl_ddr_sdram_size() for 4GB modules with 32-bit
    phys_size_t
  ddr: fsl: Allow to detect 4 GB DDR modules in 32-bit mode
  ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds
  powerpc/mpc85xx: Explain TLB unmapped memory message

 arch/arm/mach-imx/imx8m/soc.c           |  2 +-
 arch/arm/mach-mvebu/arm64-common.c      |  2 +-
 arch/arm/mach-rockchip/sdram.c          |  2 +-
 arch/arm/mach-stm32mp/dram_init.c       |  2 +-
 arch/arm/mach-sunxi/board.c             |  2 +-
 arch/arm/mach-tegra/board2.c            |  2 +-
 arch/mips/mach-jz47xx/jz4780/jz4780.c   |  2 +-
 arch/mips/mach-octeon/dram.c            |  2 +-
 arch/powerpc/cpu/mpc85xx/tlb.c          |  2 +-
 arch/riscv/cpu/fu540/dram.c             |  2 +-
 arch/riscv/cpu/fu740/dram.c             |  2 +-
 arch/riscv/cpu/generic/dram.c           |  2 +-
 arch/x86/cpu/broadwell/sdram.c          |  2 +-
 arch/x86/cpu/coreboot/sdram.c           |  2 +-
 arch/x86/cpu/efi/payload.c              |  2 +-
 arch/x86/cpu/efi/sdram.c                |  2 +-
 arch/x86/cpu/intel_common/mrc.c         |  4 ++--
 arch/x86/cpu/ivybridge/sdram.c          |  2 +-
 arch/x86/cpu/qemu/dram.c                |  2 +-
 arch/x86/cpu/quark/dram.c               |  2 +-
 arch/x86/cpu/slimbootloader/sdram.c     |  2 +-
 arch/x86/cpu/tangier/sdram.c            |  2 +-
 arch/x86/include/asm/mrc_common.h       |  2 +-
 arch/x86/include/asm/u-boot-x86.h       |  2 +-
 arch/x86/lib/fsp1/fsp_dram.c            |  2 +-
 arch/x86/lib/fsp2/fsp_dram.c            |  2 +-
 board/broadcom/bcmns3/ns3.c             |  2 +-
 board/imgtec/boston/ddr.c               |  2 +-
 board/menlo/m53menlo/m53menlo.c         |  2 +-
 board/raspberrypi/rpi/rpi.c             |  2 +-
 board/ti/am65x/evm.c                    |  2 +-
 board/ti/j721e/evm.c                    |  2 +-
 board/ti/j721s2/evm.c                   |  2 +-
 board/xilinx/zynqmp/zynqmp.c            |  2 +-
 common/board_f.c                        |  6 ++---
 common/memsize.c                        | 20 ++++++++++++----
 drivers/ddr/fsl/lc_common_dimm_params.c |  3 +++
 drivers/ddr/fsl/main.c                  | 31 ++++++++++++++++++++-----
 drivers/video/fsl_dcu_fb.c              |  2 +-
 include/init.h                          |  2 +-
 40 files changed, 84 insertions(+), 50 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-23 22:48   ` Tom Rini
  2022-09-09 15:32 ` [PATCH 2/9] common/memsize.c: Fix get_effective_memsize() to check for overflow Pali Rohár
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

CONFIG_MAX_MEM_MAPPED when defined specifies upper memory mapped limit.
So check for it always, and not only when CONFIG_VERY_BIG_RAM is defined.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 common/memsize.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common/memsize.c b/common/memsize.c
index d5d13d51bf1f..31884acca0df 100644
--- a/common/memsize.c
+++ b/common/memsize.c
@@ -94,7 +94,7 @@ long get_ram_size(long *base, long maxsize)
 
 phys_size_t __weak get_effective_memsize(void)
 {
-#ifndef CONFIG_VERY_BIG_RAM
+#ifndef CONFIG_MAX_MEM_MAPPED
 	return gd->ram_size;
 #else
 	/* limit stack to what we can reasonable map */
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/9] common/memsize.c: Fix get_effective_memsize() to check for overflow
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
  2022-09-09 15:32 ` [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 15:32 ` [PATCH 3/9] board_f: Fix types for board_get_usable_ram_top() Pali Rohár
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

Ensure that top of RAM can be represented by phys_size_t type. If RAM is
too large or RAM base address is too upper then limit RAM size to prevent
address space overflow.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 common/memsize.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/common/memsize.c b/common/memsize.c
index 31884acca0df..d11ed67632fb 100644
--- a/common/memsize.c
+++ b/common/memsize.c
@@ -94,11 +94,23 @@ long get_ram_size(long *base, long maxsize)
 
 phys_size_t __weak get_effective_memsize(void)
 {
+	phys_size_t ram_size = gd->ram_size;
+
+	/*
+	 * Check for overflow and limit ram size to some representable value.
+	 * It is required that ram_base + ram_size must be representable by
+	 * phys_size_t type and must be aligned by direct access, therefore
+	 * calculate it from last 4kB sector which should work as alignment
+	 * on any platform.
+	 */
+	if (gd->ram_base + ram_size < gd->ram_base)
+		ram_size = ((phys_size_t)~0xfffULL) - gd->ram_base;
+
 #ifndef CONFIG_MAX_MEM_MAPPED
-	return gd->ram_size;
+	return ram_size;
 #else
 	/* limit stack to what we can reasonable map */
-	return ((gd->ram_size > CONFIG_MAX_MEM_MAPPED) ?
-		CONFIG_MAX_MEM_MAPPED : gd->ram_size);
+	return ((ram_size > CONFIG_MAX_MEM_MAPPED) ?
+		CONFIG_MAX_MEM_MAPPED : ram_size);
 #endif
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 3/9] board_f: Fix types for board_get_usable_ram_top()
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
  2022-09-09 15:32 ` [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED Pali Rohár
  2022-09-09 15:32 ` [PATCH 2/9] common/memsize.c: Fix get_effective_memsize() to check for overflow Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 18:21   ` Simon Glass
  2022-09-09 15:32 ` [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top Pali Rohár
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

Commit 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
changed type of ram_top member from ulong to phys_addr_t but did not
changed types in board_get_usable_ram_top() function which returns value
for ram_top.

So change ulong to phys_addr_t type also in board_get_usable_ram_top()
signature and implementations.

Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
Signed-off-by: Pali Rohár <pali@kernel.org>
---
 arch/arm/mach-imx/imx8m/soc.c         | 2 +-
 arch/arm/mach-mvebu/arm64-common.c    | 2 +-
 arch/arm/mach-rockchip/sdram.c        | 2 +-
 arch/arm/mach-stm32mp/dram_init.c     | 2 +-
 arch/arm/mach-sunxi/board.c           | 2 +-
 arch/arm/mach-tegra/board2.c          | 2 +-
 arch/mips/mach-jz47xx/jz4780/jz4780.c | 2 +-
 arch/mips/mach-octeon/dram.c          | 2 +-
 arch/riscv/cpu/fu540/dram.c           | 2 +-
 arch/riscv/cpu/fu740/dram.c           | 2 +-
 arch/riscv/cpu/generic/dram.c         | 2 +-
 arch/x86/cpu/broadwell/sdram.c        | 2 +-
 arch/x86/cpu/coreboot/sdram.c         | 2 +-
 arch/x86/cpu/efi/payload.c            | 2 +-
 arch/x86/cpu/efi/sdram.c              | 2 +-
 arch/x86/cpu/intel_common/mrc.c       | 4 ++--
 arch/x86/cpu/ivybridge/sdram.c        | 2 +-
 arch/x86/cpu/qemu/dram.c              | 2 +-
 arch/x86/cpu/quark/dram.c             | 2 +-
 arch/x86/cpu/slimbootloader/sdram.c   | 2 +-
 arch/x86/cpu/tangier/sdram.c          | 2 +-
 arch/x86/include/asm/mrc_common.h     | 2 +-
 arch/x86/include/asm/u-boot-x86.h     | 2 +-
 arch/x86/lib/fsp1/fsp_dram.c          | 2 +-
 arch/x86/lib/fsp2/fsp_dram.c          | 2 +-
 board/broadcom/bcmns3/ns3.c           | 2 +-
 board/imgtec/boston/ddr.c             | 2 +-
 board/menlo/m53menlo/m53menlo.c       | 2 +-
 board/raspberrypi/rpi/rpi.c           | 2 +-
 board/ti/am65x/evm.c                  | 2 +-
 board/ti/j721e/evm.c                  | 2 +-
 board/ti/j721s2/evm.c                 | 2 +-
 board/xilinx/zynqmp/zynqmp.c          | 2 +-
 common/board_f.c                      | 2 +-
 drivers/video/fsl_dcu_fb.c            | 2 +-
 include/init.h                        | 2 +-
 36 files changed, 37 insertions(+), 37 deletions(-)

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 1a5a391443de..895b447ccc15 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -309,7 +309,7 @@ phys_size_t get_effective_memsize(void)
 #endif
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	ulong top_addr = PHYS_SDRAM + gd->ram_size;
 
diff --git a/arch/arm/mach-mvebu/arm64-common.c b/arch/arm/mach-mvebu/arm64-common.c
index 5357aa554db4..3dd94e7dde6b 100644
--- a/arch/arm/mach-mvebu/arm64-common.c
+++ b/arch/arm/mach-mvebu/arm64-common.c
@@ -30,7 +30,7 @@ DECLARE_GLOBAL_DATA_PTR;
  */
 #define USABLE_RAM_SIZE		0x80000000
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	if (gd->ram_size > USABLE_RAM_SIZE)
 		return USABLE_RAM_SIZE;
diff --git a/arch/arm/mach-rockchip/sdram.c b/arch/arm/mach-rockchip/sdram.c
index 705ec7ba6450..12f1d7ee5637 100644
--- a/arch/arm/mach-rockchip/sdram.c
+++ b/arch/arm/mach-rockchip/sdram.c
@@ -205,7 +205,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	unsigned long top = CONFIG_SYS_SDRAM_BASE + SDRAM_MAX_SIZE;
 
diff --git a/arch/arm/mach-stm32mp/dram_init.c b/arch/arm/mach-stm32mp/dram_init.c
index 920b99bb68f2..9346fa8546d2 100644
--- a/arch/arm/mach-stm32mp/dram_init.c
+++ b/arch/arm/mach-stm32mp/dram_init.c
@@ -40,7 +40,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	phys_size_t size;
 	phys_addr_t reg;
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 9a7673d82dc1..5af037df4bd4 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -65,7 +65,7 @@ static struct mm_region sunxi_mem_map[] = {
 };
 struct mm_region *mem_map = sunxi_mem_map;
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	/* Some devices (like the EMAC) have a 32-bit DMA limit. */
 	if (gd->ram_top > (1ULL << 32))
diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c
index 8950e678a619..1994db0e15f5 100644
--- a/arch/arm/mach-tegra/board2.c
+++ b/arch/arm/mach-tegra/board2.c
@@ -401,7 +401,7 @@ int dram_init_banksize(void)
  * This function is called before dram_init_banksize(), so we can't simply
  * return gd->bd->bi_dram[1].start + gd->bd->bi_dram[1].size.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	ulong ram_top;
 
diff --git a/arch/mips/mach-jz47xx/jz4780/jz4780.c b/arch/mips/mach-jz47xx/jz4780/jz4780.c
index fefba12873b8..a57ec7802bbf 100644
--- a/arch/mips/mach-jz47xx/jz4780/jz4780.c
+++ b/arch/mips/mach-jz47xx/jz4780/jz4780.c
@@ -76,7 +76,7 @@ void board_init_f(ulong dummy)
 }
 #endif /* CONFIG_SPL_BUILD */
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return CONFIG_SYS_SDRAM_BASE + (256 * 1024 * 1024);
 }
diff --git a/arch/mips/mach-octeon/dram.c b/arch/mips/mach-octeon/dram.c
index 4679260f17ad..9c5789b1c8eb 100644
--- a/arch/mips/mach-octeon/dram.c
+++ b/arch/mips/mach-octeon/dram.c
@@ -77,7 +77,7 @@ phys_size_t get_effective_memsize(void)
 	return UBOOT_RAM_SIZE_MAX;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	if (IS_ENABLED(CONFIG_RAM_OCTEON)) {
 		/* Map a maximum of 256MiB - return not size but address */
diff --git a/arch/riscv/cpu/fu540/dram.c b/arch/riscv/cpu/fu540/dram.c
index 1fdc7837b864..44e11bd56c5d 100644
--- a/arch/riscv/cpu/fu540/dram.c
+++ b/arch/riscv/cpu/fu540/dram.c
@@ -21,7 +21,7 @@ int dram_init_banksize(void)
 	return fdtdec_setup_memory_banksize();
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	/*
 	 * Ensure that we run from first 4GB so that all
diff --git a/arch/riscv/cpu/fu740/dram.c b/arch/riscv/cpu/fu740/dram.c
index 1dc77efeca55..d6d4a41d25e3 100644
--- a/arch/riscv/cpu/fu740/dram.c
+++ b/arch/riscv/cpu/fu740/dram.c
@@ -20,7 +20,7 @@ int dram_init_banksize(void)
 	return fdtdec_setup_memory_banksize();
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 #ifdef CONFIG_64BIT
 	/*
diff --git a/arch/riscv/cpu/generic/dram.c b/arch/riscv/cpu/generic/dram.c
index 1fdc7837b864..44e11bd56c5d 100644
--- a/arch/riscv/cpu/generic/dram.c
+++ b/arch/riscv/cpu/generic/dram.c
@@ -21,7 +21,7 @@ int dram_init_banksize(void)
 	return fdtdec_setup_memory_banksize();
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	/*
 	 * Ensure that we run from first 4GB so that all
diff --git a/arch/x86/cpu/broadwell/sdram.c b/arch/x86/cpu/broadwell/sdram.c
index c104a849a545..1295121ae5b6 100644
--- a/arch/x86/cpu/broadwell/sdram.c
+++ b/arch/x86/cpu/broadwell/sdram.c
@@ -25,7 +25,7 @@
 #include <asm/arch/pei_data.h>
 #include <asm/arch/pm.h>
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return mrc_common_board_get_usable_ram_top(total_size);
 }
diff --git a/arch/x86/cpu/coreboot/sdram.c b/arch/x86/cpu/coreboot/sdram.c
index 4a256bad4458..f4ee4cdf5d8c 100644
--- a/arch/x86/cpu/coreboot/sdram.c
+++ b/arch/x86/cpu/coreboot/sdram.c
@@ -27,7 +27,7 @@ unsigned int install_e820_map(unsigned int max_entries,
  * address, and how far U-Boot is moved by relocation are set in the global
  * data structure.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	uintptr_t dest_addr = 0;
 	int i;
diff --git a/arch/x86/cpu/efi/payload.c b/arch/x86/cpu/efi/payload.c
index b7778565b19e..1c28a43778ec 100644
--- a/arch/x86/cpu/efi/payload.c
+++ b/arch/x86/cpu/efi/payload.c
@@ -27,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
  * the relocation address, and how far U-Boot is moved by relocation are
  * set in the global data structure.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	struct efi_mem_desc *desc, *end;
 	struct efi_entry_memmap *map;
diff --git a/arch/x86/cpu/efi/sdram.c b/arch/x86/cpu/efi/sdram.c
index af65982fd0c0..f3086db42c49 100644
--- a/arch/x86/cpu/efi/sdram.c
+++ b/arch/x86/cpu/efi/sdram.c
@@ -11,7 +11,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return (ulong)efi_get_ram_base() + gd->ram_size;
 }
diff --git a/arch/x86/cpu/intel_common/mrc.c b/arch/x86/cpu/intel_common/mrc.c
index a97b0b7ceb41..a4918fbad61a 100644
--- a/arch/x86/cpu/intel_common/mrc.c
+++ b/arch/x86/cpu/intel_common/mrc.c
@@ -25,7 +25,7 @@ static const char *const ecc_decoder[] = {
 	"active"
 };
 
-ulong mrc_common_board_get_usable_ram_top(ulong total_size)
+phys_size_t mrc_common_board_get_usable_ram_top(phys_size_t total_size)
 {
 	struct memory_info *info = &gd->arch.meminfo;
 	uintptr_t dest_addr = 0;
@@ -50,7 +50,7 @@ ulong mrc_common_board_get_usable_ram_top(ulong total_size)
 
 	dest_addr = largest->start + largest->size;
 
-	return (ulong)dest_addr;
+	return (phys_size_t)dest_addr;
 }
 
 void mrc_common_dram_init_banksize(void)
diff --git a/arch/x86/cpu/ivybridge/sdram.c b/arch/x86/cpu/ivybridge/sdram.c
index dd6b8753de68..1a0ec433e654 100644
--- a/arch/x86/cpu/ivybridge/sdram.c
+++ b/arch/x86/cpu/ivybridge/sdram.c
@@ -44,7 +44,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define CMOS_OFFSET_MRC_SEED_S3		156
 #define CMOS_OFFSET_MRC_SEED_CHK	160
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return mrc_common_board_get_usable_ram_top(total_size);
 }
diff --git a/arch/x86/cpu/qemu/dram.c b/arch/x86/cpu/qemu/dram.c
index c1745501294c..595c397d4a4f 100644
--- a/arch/x86/cpu/qemu/dram.c
+++ b/arch/x86/cpu/qemu/dram.c
@@ -71,7 +71,7 @@ int dram_init_banksize(void)
  * the relocation address, and how far U-Boot is moved by relocation are
  * set in the global data structure.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return qemu_get_low_memory_size();
 }
diff --git a/arch/x86/cpu/quark/dram.c b/arch/x86/cpu/quark/dram.c
index 2287dce12b52..8b1ee2d5ae57 100644
--- a/arch/x86/cpu/quark/dram.c
+++ b/arch/x86/cpu/quark/dram.c
@@ -184,7 +184,7 @@ int dram_init_banksize(void)
  * the relocation address, and how far U-Boot is moved by relocation are
  * set in the global data structure.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return gd->ram_size;
 }
diff --git a/arch/x86/cpu/slimbootloader/sdram.c b/arch/x86/cpu/slimbootloader/sdram.c
index c6f10e22e315..d748d5c7d469 100644
--- a/arch/x86/cpu/slimbootloader/sdram.c
+++ b/arch/x86/cpu/slimbootloader/sdram.c
@@ -48,7 +48,7 @@ static struct sbl_memory_map_info *get_memory_map_info(void)
  * @total_size: The memory size that u-boot occupies
  * Return:    : The top available memory address lower than 4GB
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	struct sbl_memory_map_info *data;
 	int i;
diff --git a/arch/x86/cpu/tangier/sdram.c b/arch/x86/cpu/tangier/sdram.c
index afb08476ed3b..8a4b1c5d2d72 100644
--- a/arch/x86/cpu/tangier/sdram.c
+++ b/arch/x86/cpu/tangier/sdram.c
@@ -204,7 +204,7 @@ unsigned int install_e820_map(unsigned int max_entries,
  * address, and how far U-Boot is moved by relocation are set in the global
  * data structure.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	struct sfi_table_simple *sb;
 	struct sfi_mem_entry *mentry;
diff --git a/arch/x86/include/asm/mrc_common.h b/arch/x86/include/asm/mrc_common.h
index 3d7f00c9f92b..a7f260a7079a 100644
--- a/arch/x86/include/asm/mrc_common.h
+++ b/arch/x86/include/asm/mrc_common.h
@@ -47,7 +47,7 @@ int mrc_add_memory_area(struct memory_info *info, uint64_t start,
  * the relocation address, and how far U-Boot is moved by relocation are
  * set in the global data structure.
  */
-ulong mrc_common_board_get_usable_ram_top(ulong total_size);
+phys_size_t mrc_common_board_get_usable_ram_top(phys_size_t total_size);
 
 void mrc_common_dram_init_banksize(void);
 
diff --git a/arch/x86/include/asm/u-boot-x86.h b/arch/x86/include/asm/u-boot-x86.h
index a1655e1cea5c..4cf41e935416 100644
--- a/arch/x86/include/asm/u-boot-x86.h
+++ b/arch/x86/include/asm/u-boot-x86.h
@@ -77,7 +77,7 @@ int x86_cleanup_before_linux(void);
 void x86_enable_caches(void);
 void x86_disable_caches(void);
 int x86_init_cache(void);
-ulong board_get_usable_ram_top(ulong total_size);
+phys_size_t board_get_usable_ram_top(phys_size_t total_size);
 int default_print_cpuinfo(void);
 
 /* Set up a UART which can be used with printch(), printhex8(), etc. */
diff --git a/arch/x86/lib/fsp1/fsp_dram.c b/arch/x86/lib/fsp1/fsp_dram.c
index cfd9b9f48c34..5825221d1e5d 100644
--- a/arch/x86/lib/fsp1/fsp_dram.c
+++ b/arch/x86/lib/fsp1/fsp_dram.c
@@ -34,7 +34,7 @@ int dram_init(void)
  * the relocation address, and how far U-Boot is moved by relocation are
  * set in the global data structure.
  */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return fsp_get_usable_lowmem_top(gd->arch.hob_list);
 }
diff --git a/arch/x86/lib/fsp2/fsp_dram.c b/arch/x86/lib/fsp2/fsp_dram.c
index 42d3892b7626..f9ea1ab3baad 100644
--- a/arch/x86/lib/fsp2/fsp_dram.c
+++ b/arch/x86/lib/fsp2/fsp_dram.c
@@ -77,7 +77,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	if (!ll_boot_init())
 		return gd->ram_size;
diff --git a/board/broadcom/bcmns3/ns3.c b/board/broadcom/bcmns3/ns3.c
index 88036c16c951..26652e8f7733 100644
--- a/board/broadcom/bcmns3/ns3.c
+++ b/board/broadcom/bcmns3/ns3.c
@@ -183,7 +183,7 @@ int dram_init_banksize(void)
 }
 
 /* Limit RAM used by U-Boot to the DDR first bank End region */
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return BCM_NS3_MEM_END;
 }
diff --git a/board/imgtec/boston/ddr.c b/board/imgtec/boston/ddr.c
index 182f79b9182d..5b245cb44734 100644
--- a/board/imgtec/boston/ddr.c
+++ b/board/imgtec/boston/ddr.c
@@ -23,7 +23,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/menlo/m53menlo/m53menlo.c b/board/menlo/m53menlo/m53menlo.c
index 9545e633a3dc..7f3a1d8f7630 100644
--- a/board/menlo/m53menlo/m53menlo.c
+++ b/board/menlo/m53menlo/m53menlo.c
@@ -42,7 +42,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static u32 mx53_dram_size[2];
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	/*
 	 * WARNING: We must override get_effective_memsize() function here
diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
index 17b8108cc88f..00afb352bd1e 100644
--- a/board/raspberrypi/rpi/rpi.c
+++ b/board/raspberrypi/rpi/rpi.c
@@ -335,7 +335,7 @@ static void set_fdt_addr(void)
 /*
  * Prevent relocation from stomping on a firmware provided FDT blob.
  */
-unsigned long board_get_usable_ram_top(unsigned long total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	if ((gd->ram_top - fw_dtb_pointer) > SZ_64M)
 		return gd->ram_top;
diff --git a/board/ti/am65x/evm.c b/board/ti/am65x/evm.c
index 7182a8cad1a4..bda0fae80b1f 100644
--- a/board/ti/am65x/evm.c
+++ b/board/ti/am65x/evm.c
@@ -61,7 +61,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 #ifdef CONFIG_PHYS_64BIT
 	/* Limit RAM used by U-Boot to the DDR low region */
diff --git a/board/ti/j721e/evm.c b/board/ti/j721e/evm.c
index e6ff54c065de..e6dd2b73d6a5 100644
--- a/board/ti/j721e/evm.c
+++ b/board/ti/j721e/evm.c
@@ -57,7 +57,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 #ifdef CONFIG_PHYS_64BIT
 	/* Limit RAM used by U-Boot to the DDR low region */
diff --git a/board/ti/j721s2/evm.c b/board/ti/j721s2/evm.c
index 3c75ecfc0fe4..e09adc8ad34e 100644
--- a/board/ti/j721s2/evm.c
+++ b/board/ti/j721s2/evm.c
@@ -46,7 +46,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 #ifdef CONFIG_PHYS_64BIT
 	/* Limit RAM used by U-Boot to the DDR low region */
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 70b3c81f1284..c20d8e71ef1d 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -511,7 +511,7 @@ int dram_init(void)
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	phys_size_t size;
 	phys_addr_t reg;
diff --git a/common/board_f.c b/common/board_f.c
index ac7e2d65694c..15e442a0cf33 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -302,7 +302,7 @@ __weak int mach_cpu_init(void)
 }
 
 /* Get the top of usable RAM */
-__weak ulong board_get_usable_ram_top(ulong total_size)
+__weak phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 #if defined(CONFIG_SYS_SDRAM_BASE) && CONFIG_SYS_SDRAM_BASE > 0
 	/*
diff --git a/drivers/video/fsl_dcu_fb.c b/drivers/video/fsl_dcu_fb.c
index dc5b24c98bb8..9c04f0685af1 100644
--- a/drivers/video/fsl_dcu_fb.c
+++ b/drivers/video/fsl_dcu_fb.c
@@ -372,7 +372,7 @@ int fsl_dcu_init(struct fb_info *fbinfo, unsigned int xres,
 	return 0;
 }
 
-ulong board_get_usable_ram_top(ulong total_size)
+phys_size_t board_get_usable_ram_top(phys_size_t total_size)
 {
 	return gd->ram_top - CONFIG_VIDEO_FSL_DCU_MAX_FB_SIZE_MB;
 }
diff --git a/include/init.h b/include/init.h
index 20c3976af09a..a83c0b148924 100644
--- a/include/init.h
+++ b/include/init.h
@@ -290,7 +290,7 @@ int show_board_info(void);
  *
  * @param total_size	Size of U-Boot (unused?)
  */
-ulong board_get_usable_ram_top(ulong total_size);
+phys_size_t board_get_usable_ram_top(phys_size_t total_size);
 
 int board_early_init_f(void);
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (2 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 3/9] board_f: Fix types for board_get_usable_ram_top() Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 18:20   ` Simon Glass
  2022-09-09 15:32 ` [PATCH 5/9] ddr: fsl: Fix checking for maximal mappable memory Pali Rohár
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

Members gd->ram_size and gd->ram_top are of type phys_addr_t which does not
have to fit into ulong type. So cast them into unsigned long long.

Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
Signed-off-by: Pali Rohár <pali@kernel.org>
---
 common/board_f.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/board_f.c b/common/board_f.c
index 15e442a0cf33..9e34fbee147e 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -325,7 +325,7 @@ static int setup_dest_addr(void)
 	/*
 	 * Ram is setup, size stored in gd !!
 	 */
-	debug("Ram size: %08lX\n", (ulong)gd->ram_size);
+	debug("Ram size: %08llX\n", (unsigned long long)gd->ram_size);
 #if defined(CONFIG_SYS_MEM_TOP_HIDE)
 	/*
 	 * Subtract specified amount of memory to hide so that it won't
@@ -345,7 +345,7 @@ static int setup_dest_addr(void)
 	gd->ram_top = gd->ram_base + get_effective_memsize();
 	gd->ram_top = board_get_usable_ram_top(gd->mon_len);
 	gd->relocaddr = gd->ram_top;
-	debug("Ram top: %08lX\n", (ulong)gd->ram_top);
+	debug("Ram top: %08llX\n", (unsigned long long)gd->ram_top);
 #if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
 	/*
 	 * We need to make sure the location we intend to put secondary core
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 5/9] ddr: fsl: Fix checking for maximal mappable memory
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (3 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 15:32 ` [PATCH 6/9] ddr: fsl: Fix fsl_ddr_sdram_size() for 4GB modules with 32-bit phys_size_t Pali Rohár
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

Check needs to be done against CONFIG_MAX_MEM_MAPPED macro and not fixed
size 4GB (as CONFIG_MAX_MEM_MAPPED can be lower and for example for e500
cores it is just 2GB). Also fix printf re-align, which should be applied
only for non-SPL builds, during init_dram() call.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 drivers/ddr/fsl/main.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index f389e5ef9524..ec040f265da2 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -856,13 +856,22 @@ phys_size_t __fsl_ddr_sdram(fsl_ddr_info_t *pinfo)
 	debug("total_memory by %s = %llu\n", __func__, total_memory);
 
 #if !defined(CONFIG_PHYS_64BIT)
-	/* Check for 4G or more.  Bad. */
-	if ((first_ctrl == 0) && (total_memory >= (1ull << 32))) {
+	/* Check for more than max memory.  Bad. */
+	if ((first_ctrl == 0) && (total_memory > CONFIG_MAX_MEM_MAPPED)) {
 		puts("Detected ");
 		print_size(total_memory, " of memory\n");
-		printf("       This U-Boot only supports < 4G of DDR\n");
-		printf("       You could rebuild it with CONFIG_PHYS_64BIT\n");
-		printf("       "); /* re-align to match init_dram print */
+#ifndef CONFIG_SPL_BUILD
+		puts("       "); /* re-align to match init_dram print */
+#endif
+		puts("This U-Boot only supports <= ");
+		print_size(CONFIG_MAX_MEM_MAPPED, " of DDR\n");
+#ifndef CONFIG_SPL_BUILD
+		puts("       "); /* re-align to match init_dram print */
+#endif
+		puts("You could rebuild it with CONFIG_PHYS_64BIT\n");
+#ifndef CONFIG_SPL_BUILD
+		puts("       "); /* re-align to match init_dram print */
+#endif
 		total_memory = CONFIG_MAX_MEM_MAPPED;
 	}
 #endif
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 6/9] ddr: fsl: Fix fsl_ddr_sdram_size() for 4GB modules with 32-bit phys_size_t
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (4 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 5/9] ddr: fsl: Fix checking for maximal mappable memory Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 15:32 ` [PATCH 7/9] ddr: fsl: Allow to detect 4 GB DDR modules in 32-bit mode Pali Rohár
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

Function fsl_ddr_compute() always return size in unsigned long long type,
but function fsl_ddr_sdram_size() returns size in phys_size_t type.

When 36-bit addressing mode is not enabled then phys_size_t type is only
32-bit and thus it cannot store value 4GB (0x100000000). Function
fsl_ddr_sdram_size() in this case returns truncated value 0x0.

Fix this issue by returning the highest representable value, which is
0xffffffff (4GB - 1 byte).

This change fixes crashing of proper U-Boot because it detected 4 GB module
as RAM with zero size.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 drivers/ddr/fsl/main.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index ec040f265da2..dd55e61a7a73 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -949,5 +949,9 @@ fsl_ddr_sdram_size(void)
 	/* Compute it once normally. */
 	total_memory = fsl_ddr_compute(&info, STEP_GET_SPD, 1);
 
+	/* Ensure that total_memory does not overflow on return */
+	if (total_memory > (phys_size_t)~0ULL)
+		total_memory = (phys_size_t)~0ULL;
+
 	return total_memory;
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 7/9] ddr: fsl: Allow to detect 4 GB DDR modules in 32-bit mode
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (5 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 6/9] ddr: fsl: Fix fsl_ddr_sdram_size() for 4GB modules with 32-bit phys_size_t Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 15:32 ` [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds Pali Rohár
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

U-Boot core code already handles the case when RAM size is bigger than
CONFIG_MAX_MEM_MAPPED. So there is no need to do duplicate check in fsl ddr
driver for CONFIG_MAX_MEM_MAPPED. Instead simplify code to just check if
RAM size can be representable in phys_size_t type. And avoid printing
warning if phys_size_t is just 1 byte smaller than RAM size, which is the
typical situation with 4 GB DDR module.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 drivers/ddr/fsl/main.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index dd55e61a7a73..577ca569b042 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -856,15 +856,18 @@ phys_size_t __fsl_ddr_sdram(fsl_ddr_info_t *pinfo)
 	debug("total_memory by %s = %llu\n", __func__, total_memory);
 
 #if !defined(CONFIG_PHYS_64BIT)
-	/* Check for more than max memory.  Bad. */
-	if ((first_ctrl == 0) && (total_memory > CONFIG_MAX_MEM_MAPPED)) {
+	/*
+	 * Show warning about big DDR moodules. But avoid warning for 4 GB DDR
+	 * modules when U-Boot supports RAM of maximal size 4 GB - 1 byte.
+	 */
+	if ((first_ctrl == 0) && (total_memory - 1 > (phys_size_t)~0ULL)) {
 		puts("Detected ");
 		print_size(total_memory, " of memory\n");
 #ifndef CONFIG_SPL_BUILD
 		puts("       "); /* re-align to match init_dram print */
 #endif
 		puts("This U-Boot only supports <= ");
-		print_size(CONFIG_MAX_MEM_MAPPED, " of DDR\n");
+		print_size((unsigned long long)((phys_size_t)~0ULL)+1, " of DDR\n");
 #ifndef CONFIG_SPL_BUILD
 		puts("       "); /* re-align to match init_dram print */
 #endif
@@ -872,10 +875,13 @@ phys_size_t __fsl_ddr_sdram(fsl_ddr_info_t *pinfo)
 #ifndef CONFIG_SPL_BUILD
 		puts("       "); /* re-align to match init_dram print */
 #endif
-		total_memory = CONFIG_MAX_MEM_MAPPED;
 	}
 #endif
 
+	/* Ensure that total_memory does not overflow on return */
+	if (total_memory > (phys_size_t)~0ULL)
+		total_memory = (phys_size_t)~0ULL;
+
 	return total_memory;
 }
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (6 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 7/9] ddr: fsl: Allow to detect 4 GB DDR modules in 32-bit mode Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-09 18:21   ` Simon Glass
  2022-09-09 15:32 ` [PATCH 9/9] powerpc/mpc85xx: Explain TLB unmapped memory message Pali Rohár
  2022-09-11  9:29 ` [PATCH 10/9] powerpc/mpc85xx: Fix re-align of unmapped DDR memory message for non-SPL builds Pali Rohár
  9 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

During init_dram() is called also compute_lowest_common_dimm_parameters()
function which prints multi-line detailed output. So print also re-aligning
filler after "Detected ?DIMM" line to have "DRAM:  " output aligned.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 drivers/ddr/fsl/lc_common_dimm_params.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/ddr/fsl/lc_common_dimm_params.c b/drivers/ddr/fsl/lc_common_dimm_params.c
index d738ae3a7c66..5e4ad56f0714 100644
--- a/drivers/ddr/fsl/lc_common_dimm_params.c
+++ b/drivers/ddr/fsl/lc_common_dimm_params.c
@@ -422,6 +422,9 @@ compute_lowest_common_dimm_parameters(const unsigned int ctrl_num,
 					dimm_params[i].mpart);
 #endif
 			}
+#ifndef CONFIG_SPL_BUILD
+			puts("       ");
+#endif
 		}
 	}
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 9/9] powerpc/mpc85xx: Explain TLB unmapped memory message
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (7 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds Pali Rohár
@ 2022-09-09 15:32 ` Pali Rohár
  2022-09-11  9:29 ` [PATCH 10/9] powerpc/mpc85xx: Fix re-align of unmapped DDR memory message for non-SPL builds Pali Rohár
  9 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 15:32 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

Currently U-Boot SPL prints just generic message "2 GiB left unmapped".
Change it to more detailed "2 GiB of DDR memory left unmapped in U-Boot".
This is just U-Boot configuration and operating system may map more (or
also less) memory.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 arch/powerpc/cpu/mpc85xx/tlb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/cpu/mpc85xx/tlb.c b/arch/powerpc/cpu/mpc85xx/tlb.c
index 550d45da0efa..6107a91ecd3c 100644
--- a/arch/powerpc/cpu/mpc85xx/tlb.c
+++ b/arch/powerpc/cpu/mpc85xx/tlb.c
@@ -311,7 +311,7 @@ unsigned int setup_ddr_tlbs_phys(phys_addr_t p_addr,
 	if (size || memsize > CONFIG_MAX_MEM_MAPPED) {
 		print_size(memsize > CONFIG_MAX_MEM_MAPPED ?
 			   memsize - CONFIG_MAX_MEM_MAPPED + size : size,
-			   " left unmapped\n");
+			   " of DDR memory left unmapped in U-Boot\n");
 	}
 
 	return memsize_in_meg;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top
  2022-09-09 15:32 ` [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top Pali Rohár
@ 2022-09-09 18:20   ` Simon Glass
  2022-09-09 21:46     ` Pali Rohár
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Glass @ 2022-09-09 18:20 UTC (permalink / raw)
  To: Pali Rohár; +Cc: U-Boot Mailing List, Marek Behún, Peng Fan, Tom Rini

Hi Pali,

On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
>
> Members gd->ram_size and gd->ram_top are of type phys_addr_t which does not
> have to fit into ulong type. So cast them into unsigned long long.

Which board does this break?

>
> Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
> Signed-off-by: Pali Rohár <pali@kernel.org>
> ---
>  common/board_f.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/common/board_f.c b/common/board_f.c
> index 15e442a0cf33..9e34fbee147e 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -325,7 +325,7 @@ static int setup_dest_addr(void)
>         /*
>          * Ram is setup, size stored in gd !!
>          */
> -       debug("Ram size: %08lX\n", (ulong)gd->ram_size);
> +       debug("Ram size: %08llX\n", (unsigned long long)gd->ram_size);
>  #if defined(CONFIG_SYS_MEM_TOP_HIDE)
>         /*
>          * Subtract specified amount of memory to hide so that it won't
> @@ -345,7 +345,7 @@ static int setup_dest_addr(void)
>         gd->ram_top = gd->ram_base + get_effective_memsize();
>         gd->ram_top = board_get_usable_ram_top(gd->mon_len);
>         gd->relocaddr = gd->ram_top;
> -       debug("Ram top: %08lX\n", (ulong)gd->ram_top);
> +       debug("Ram top: %08llX\n", (unsigned long long)gd->ram_top);
>  #if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
>         /*
>          * We need to make sure the location we intend to put secondary core
> --
> 2.20.1
>

Reviewed-by: Simon Glass <sjg@chromium.org>

This seems OK, as it still only shows 8 digits in most cases.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 3/9] board_f: Fix types for board_get_usable_ram_top()
  2022-09-09 15:32 ` [PATCH 3/9] board_f: Fix types for board_get_usable_ram_top() Pali Rohár
@ 2022-09-09 18:21   ` Simon Glass
  0 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2022-09-09 18:21 UTC (permalink / raw)
  To: Pali Rohár; +Cc: U-Boot Mailing List, Marek Behún, Peng Fan, Tom Rini

On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
>
> Commit 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
> changed type of ram_top member from ulong to phys_addr_t but did not
> changed types in board_get_usable_ram_top() function which returns value
> for ram_top.
>
> So change ulong to phys_addr_t type also in board_get_usable_ram_top()
> signature and implementations.
>
> Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
> Signed-off-by: Pali Rohár <pali@kernel.org>
> ---
>  arch/arm/mach-imx/imx8m/soc.c         | 2 +-
>  arch/arm/mach-mvebu/arm64-common.c    | 2 +-
>  arch/arm/mach-rockchip/sdram.c        | 2 +-
>  arch/arm/mach-stm32mp/dram_init.c     | 2 +-
>  arch/arm/mach-sunxi/board.c           | 2 +-
>  arch/arm/mach-tegra/board2.c          | 2 +-
>  arch/mips/mach-jz47xx/jz4780/jz4780.c | 2 +-
>  arch/mips/mach-octeon/dram.c          | 2 +-
>  arch/riscv/cpu/fu540/dram.c           | 2 +-
>  arch/riscv/cpu/fu740/dram.c           | 2 +-
>  arch/riscv/cpu/generic/dram.c         | 2 +-
>  arch/x86/cpu/broadwell/sdram.c        | 2 +-
>  arch/x86/cpu/coreboot/sdram.c         | 2 +-
>  arch/x86/cpu/efi/payload.c            | 2 +-
>  arch/x86/cpu/efi/sdram.c              | 2 +-
>  arch/x86/cpu/intel_common/mrc.c       | 4 ++--

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds
  2022-09-09 15:32 ` [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds Pali Rohár
@ 2022-09-09 18:21   ` Simon Glass
  2022-09-09 19:08     ` Tom Rini
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Glass @ 2022-09-09 18:21 UTC (permalink / raw)
  To: Pali Rohár; +Cc: U-Boot Mailing List, Marek Behún, Peng Fan, Tom Rini

Hi,

On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
>
> During init_dram() is called also compute_lowest_common_dimm_parameters()
> function which prints multi-line detailed output. So print also re-aligning
> filler after "Detected ?DIMM" line to have "DRAM:  " output aligned.
>
> Signed-off-by: Pali Rohár <pali@kernel.org>
> ---
>  drivers/ddr/fsl/lc_common_dimm_params.c | 3 +++
>  1 file changed, 3 insertions(+)

At some point could this move to drivers/ram ?

Regards,
Simon

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds
  2022-09-09 18:21   ` Simon Glass
@ 2022-09-09 19:08     ` Tom Rini
  2022-09-09 19:39       ` Simon Glass
  0 siblings, 1 reply; 20+ messages in thread
From: Tom Rini @ 2022-09-09 19:08 UTC (permalink / raw)
  To: Simon Glass
  Cc: Pali Rohár, U-Boot Mailing List, Marek Behún, Peng Fan

[-- Attachment #1: Type: text/plain, Size: 707 bytes --]

On Fri, Sep 09, 2022 at 12:21:11PM -0600, Simon Glass wrote:
> Hi,
> 
> On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
> >
> > During init_dram() is called also compute_lowest_common_dimm_parameters()
> > function which prints multi-line detailed output. So print also re-aligning
> > filler after "Detected ?DIMM" line to have "DRAM:  " output aligned.
> >
> > Signed-off-by: Pali Rohár <pali@kernel.org>
> > ---
> >  drivers/ddr/fsl/lc_common_dimm_params.c | 3 +++
> >  1 file changed, 3 insertions(+)
> 
> At some point could this move to drivers/ram ?

Depends on if we're keeping / making drivers/ram mean uses uclass and
drivers/ddr does not, I think.

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds
  2022-09-09 19:08     ` Tom Rini
@ 2022-09-09 19:39       ` Simon Glass
  2022-09-09 21:05         ` Tom Rini
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Glass @ 2022-09-09 19:39 UTC (permalink / raw)
  To: Tom Rini; +Cc: Pali Rohár, U-Boot Mailing List, Marek Behún, Peng Fan

Hi Tom,

On Fri, 9 Sept 2022 at 13:08, Tom Rini <trini@konsulko.com> wrote:
>
> On Fri, Sep 09, 2022 at 12:21:11PM -0600, Simon Glass wrote:
> > Hi,
> >
> > On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
> > >
> > > During init_dram() is called also compute_lowest_common_dimm_parameters()
> > > function which prints multi-line detailed output. So print also re-aligning
> > > filler after "Detected ?DIMM" line to have "DRAM:  " output aligned.
> > >
> > > Signed-off-by: Pali Rohár <pali@kernel.org>
> > > ---
> > >  drivers/ddr/fsl/lc_common_dimm_params.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> >
> > At some point could this move to drivers/ram ?
>
> Depends on if we're keeping / making drivers/ram mean uses uclass and
> drivers/ddr does not, I think.

Yes, except for Altera:

$ git grep UCLASS_RAM drivers/ddr
drivers/ddr/altera/sdram_gen5.c:    .id = UCLASS_RAM,
drivers/ddr/altera/sdram_soc64.c:   .id = UCLASS_RAM,

Regards,
Simon

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds
  2022-09-09 19:39       ` Simon Glass
@ 2022-09-09 21:05         ` Tom Rini
  0 siblings, 0 replies; 20+ messages in thread
From: Tom Rini @ 2022-09-09 21:05 UTC (permalink / raw)
  To: Simon Glass
  Cc: Pali Rohár, U-Boot Mailing List, Marek Behún, Peng Fan

[-- Attachment #1: Type: text/plain, Size: 1255 bytes --]

On Fri, Sep 09, 2022 at 01:39:25PM -0600, Simon Glass wrote:
> Hi Tom,
> 
> On Fri, 9 Sept 2022 at 13:08, Tom Rini <trini@konsulko.com> wrote:
> >
> > On Fri, Sep 09, 2022 at 12:21:11PM -0600, Simon Glass wrote:
> > > Hi,
> > >
> > > On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
> > > >
> > > > During init_dram() is called also compute_lowest_common_dimm_parameters()
> > > > function which prints multi-line detailed output. So print also re-aligning
> > > > filler after "Detected ?DIMM" line to have "DRAM:  " output aligned.
> > > >
> > > > Signed-off-by: Pali Rohár <pali@kernel.org>
> > > > ---
> > > >  drivers/ddr/fsl/lc_common_dimm_params.c | 3 +++
> > > >  1 file changed, 3 insertions(+)
> > >
> > > At some point could this move to drivers/ram ?
> >
> > Depends on if we're keeping / making drivers/ram mean uses uclass and
> > drivers/ddr does not, I think.
> 
> Yes, except for Altera:
> 
> $ git grep UCLASS_RAM drivers/ddr
> drivers/ddr/altera/sdram_gen5.c:    .id = UCLASS_RAM,
> drivers/ddr/altera/sdram_soc64.c:   .id = UCLASS_RAM,

Then we should move those over to drivers/ram/altera/ and leave the rest
as-is. And of course, totally outside the scope of this series.

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top
  2022-09-09 18:20   ` Simon Glass
@ 2022-09-09 21:46     ` Pali Rohár
  2022-09-12 13:33       ` Simon Glass
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-09-09 21:46 UTC (permalink / raw)
  To: Simon Glass; +Cc: U-Boot Mailing List, Marek Behún, Peng Fan, Tom Rini

On Friday 09 September 2022 12:20:57 Simon Glass wrote:
> Hi Pali,
> 
> On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
> >
> > Members gd->ram_size and gd->ram_top are of type phys_addr_t which does not
> > have to fit into ulong type. So cast them into unsigned long long.
> 
> Which board does this break?

Uff.. I'm not sure right now as I have this patch for months. Anyway,
looking at it I think the issue is with 36-bit powerpc stuff where
phys_addr_t is 64-bit, ulong is 32-bit and therefore ram_size can be up
to 64 GB. Of course addressable RAM maximally 4 GB. Anyway, there should
not be any break, this is just debug output.

> >
> > Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
> > Signed-off-by: Pali Rohár <pali@kernel.org>
> > ---
> >  common/board_f.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/common/board_f.c b/common/board_f.c
> > index 15e442a0cf33..9e34fbee147e 100644
> > --- a/common/board_f.c
> > +++ b/common/board_f.c
> > @@ -325,7 +325,7 @@ static int setup_dest_addr(void)
> >         /*
> >          * Ram is setup, size stored in gd !!
> >          */
> > -       debug("Ram size: %08lX\n", (ulong)gd->ram_size);
> > +       debug("Ram size: %08llX\n", (unsigned long long)gd->ram_size);
> >  #if defined(CONFIG_SYS_MEM_TOP_HIDE)
> >         /*
> >          * Subtract specified amount of memory to hide so that it won't
> > @@ -345,7 +345,7 @@ static int setup_dest_addr(void)
> >         gd->ram_top = gd->ram_base + get_effective_memsize();
> >         gd->ram_top = board_get_usable_ram_top(gd->mon_len);
> >         gd->relocaddr = gd->ram_top;
> > -       debug("Ram top: %08lX\n", (ulong)gd->ram_top);
> > +       debug("Ram top: %08llX\n", (unsigned long long)gd->ram_top);
> >  #if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
> >         /*
> >          * We need to make sure the location we intend to put secondary core
> > --
> > 2.20.1
> >
> 
> Reviewed-by: Simon Glass <sjg@chromium.org>
> 
> This seems OK, as it still only shows 8 digits in most cases.

No? IIRC %08 prints at least 8 digits (not at most).

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 10/9] powerpc/mpc85xx: Fix re-align of unmapped DDR memory message for non-SPL builds
  2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
                   ` (8 preceding siblings ...)
  2022-09-09 15:32 ` [PATCH 9/9] powerpc/mpc85xx: Explain TLB unmapped memory message Pali Rohár
@ 2022-09-11  9:29 ` Pali Rohár
  9 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-09-11  9:29 UTC (permalink / raw)
  To: u-boot, Marek Behún, Peng Fan, Tom Rini

During init_dram() is called also setup_ddr_tlbs_phys() function which may
print message about unmapped DDR memory. So in this case print also
re-aligning filler after unmapped DDR memory message.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 arch/powerpc/cpu/mpc85xx/tlb.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/powerpc/cpu/mpc85xx/tlb.c b/arch/powerpc/cpu/mpc85xx/tlb.c
index 6107a91ecd3c..723ee1d599fd 100644
--- a/arch/powerpc/cpu/mpc85xx/tlb.c
+++ b/arch/powerpc/cpu/mpc85xx/tlb.c
@@ -312,6 +312,9 @@ unsigned int setup_ddr_tlbs_phys(phys_addr_t p_addr,
 		print_size(memsize > CONFIG_MAX_MEM_MAPPED ?
 			   memsize - CONFIG_MAX_MEM_MAPPED + size : size,
 			   " of DDR memory left unmapped in U-Boot\n");
+#ifndef CONFIG_SPL_BUILD
+		puts("       ");
+#endif
 	}
 
 	return memsize_in_meg;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top
  2022-09-09 21:46     ` Pali Rohár
@ 2022-09-12 13:33       ` Simon Glass
  0 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2022-09-12 13:33 UTC (permalink / raw)
  To: Pali Rohár; +Cc: U-Boot Mailing List, Marek Behún, Peng Fan, Tom Rini

Hi Pali,

On Fri, 9 Sept 2022 at 15:46, Pali Rohár <pali@kernel.org> wrote:
>
> On Friday 09 September 2022 12:20:57 Simon Glass wrote:
> > Hi Pali,
> >
> > On Fri, 9 Sept 2022 at 09:34, Pali Rohár <pali@kernel.org> wrote:
> > >
> > > Members gd->ram_size and gd->ram_top are of type phys_addr_t which does not
> > > have to fit into ulong type. So cast them into unsigned long long.
> >
> > Which board does this break?
>
> Uff.. I'm not sure right now as I have this patch for months. Anyway,
> looking at it I think the issue is with 36-bit powerpc stuff where
> phys_addr_t is 64-bit, ulong is 32-bit and therefore ram_size can be up
> to 64 GB. Of course addressable RAM maximally 4 GB. Anyway, there should
> not be any break, this is just debug output.

OK

>
> > >
> > > Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t")
> > > Signed-off-by: Pali Rohár <pali@kernel.org>
> > > ---
> > >  common/board_f.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/common/board_f.c b/common/board_f.c
> > > index 15e442a0cf33..9e34fbee147e 100644
> > > --- a/common/board_f.c
> > > +++ b/common/board_f.c
> > > @@ -325,7 +325,7 @@ static int setup_dest_addr(void)
> > >         /*
> > >          * Ram is setup, size stored in gd !!
> > >          */
> > > -       debug("Ram size: %08lX\n", (ulong)gd->ram_size);
> > > +       debug("Ram size: %08llX\n", (unsigned long long)gd->ram_size);
> > >  #if defined(CONFIG_SYS_MEM_TOP_HIDE)
> > >         /*
> > >          * Subtract specified amount of memory to hide so that it won't
> > > @@ -345,7 +345,7 @@ static int setup_dest_addr(void)
> > >         gd->ram_top = gd->ram_base + get_effective_memsize();
> > >         gd->ram_top = board_get_usable_ram_top(gd->mon_len);
> > >         gd->relocaddr = gd->ram_top;
> > > -       debug("Ram top: %08lX\n", (ulong)gd->ram_top);
> > > +       debug("Ram top: %08llX\n", (unsigned long long)gd->ram_top);
> > >  #if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
> > >         /*
> > >          * We need to make sure the location we intend to put secondary core
> > > --
> > > 2.20.1
> > >
> >
> > Reviewed-by: Simon Glass <sjg@chromium.org>
> >
> > This seems OK, as it still only shows 8 digits in most cases.
>
> No? IIRC %08 prints at least 8 digits (not at most).

Yes we are saying the same thing. It is %016x that I would object to.

Regards,
Simon

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED
  2022-09-09 15:32 ` [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED Pali Rohár
@ 2022-09-23 22:48   ` Tom Rini
  0 siblings, 0 replies; 20+ messages in thread
From: Tom Rini @ 2022-09-23 22:48 UTC (permalink / raw)
  To: Pali Rohár; +Cc: u-boot, Marek Behún, Peng Fan

[-- Attachment #1: Type: text/plain, Size: 329 bytes --]

On Fri, Sep 09, 2022 at 05:32:38PM +0200, Pali Rohár wrote:

> CONFIG_MAX_MEM_MAPPED when defined specifies upper memory mapped limit.
> So check for it always, and not only when CONFIG_VERY_BIG_RAM is defined.
> 
> Signed-off-by: Pali Rohár <pali@kernel.org>

For the series, applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2022-09-23 22:48 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-09 15:32 [PATCH 0/9] Support for 4 GB DDR modules for 32-bit U-Boot builds Pali Rohár
2022-09-09 15:32 ` [PATCH 1/9] common/memsize.c: Fix get_effective_memsize() to always check for CONFIG_MAX_MEM_MAPPED Pali Rohár
2022-09-23 22:48   ` Tom Rini
2022-09-09 15:32 ` [PATCH 2/9] common/memsize.c: Fix get_effective_memsize() to check for overflow Pali Rohár
2022-09-09 15:32 ` [PATCH 3/9] board_f: Fix types for board_get_usable_ram_top() Pali Rohár
2022-09-09 18:21   ` Simon Glass
2022-09-09 15:32 ` [PATCH 4/9] board_f: Fix printing gd->ram_size and gd->ram_top Pali Rohár
2022-09-09 18:20   ` Simon Glass
2022-09-09 21:46     ` Pali Rohár
2022-09-12 13:33       ` Simon Glass
2022-09-09 15:32 ` [PATCH 5/9] ddr: fsl: Fix checking for maximal mappable memory Pali Rohár
2022-09-09 15:32 ` [PATCH 6/9] ddr: fsl: Fix fsl_ddr_sdram_size() for 4GB modules with 32-bit phys_size_t Pali Rohár
2022-09-09 15:32 ` [PATCH 7/9] ddr: fsl: Allow to detect 4 GB DDR modules in 32-bit mode Pali Rohár
2022-09-09 15:32 ` [PATCH 8/9] ddr: fsl: Fix re-align of verbose DRAM information for non-SPL builds Pali Rohár
2022-09-09 18:21   ` Simon Glass
2022-09-09 19:08     ` Tom Rini
2022-09-09 19:39       ` Simon Glass
2022-09-09 21:05         ` Tom Rini
2022-09-09 15:32 ` [PATCH 9/9] powerpc/mpc85xx: Explain TLB unmapped memory message Pali Rohár
2022-09-11  9:29 ` [PATCH 10/9] powerpc/mpc85xx: Fix re-align of unmapped DDR memory message for non-SPL builds Pali Rohár

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).