* [PATCH v1] board: verdin-am62: fix missing memory fixup call
@ 2025-03-03 18:16 Stefan Eichenberger
2025-03-04 7:09 ` Francesco Dolcini
2025-03-04 16:57 ` Tom Rini
0 siblings, 2 replies; 3+ messages in thread
From: Stefan Eichenberger @ 2025-03-03 18:16 UTC (permalink / raw)
To: francesco.dolcini, trini, n-francis, s-k6, w.egorov,
emanuele.ghidoli
Cc: u-boot, Stefan Eichenberger
From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
The commit bc07851897bd ("board: ti: Pull redundant DDR functions to a
common location and Fixup DDR size when ECC is enabled") broke DRAM
support for the Verdin AM62. This was partially fixed with commit
3f866c47b582 ("board: verdin-am62: add dram_init_banksize"). However,
because fixup_memory_node was not called, the Linux kernel was started
with the wrong memory size on modules with less memory available. This
resulted in boot failures. Fix this issue by calling fixup_memory_node
in the board file.
spl_perform_fixups will be called in the SPL and now sets the correct
memory size in the device tree of U-Boot by calling fixup_memory_node.
U-Boot will then adjust the memory sizes of Linux during bootm/booti in
fdt_fixup_memory_banks. This chain ensures that U-Boot and Linux only
use RAM that is actually available.
Fixes: 3f866c47b582 ("board: verdin-am62: add dram_init_banksize")
Fixes: bc07851897bd ("board: ti: Pull redundant DDR functions to a common location and Fixup DDR size when ECC is enabled")
Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
---
board/toradex/verdin-am62/verdin-am62.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/board/toradex/verdin-am62/verdin-am62.c b/board/toradex/verdin-am62/verdin-am62.c
index b80b39b6767..a1c471111a0 100644
--- a/board/toradex/verdin-am62/verdin-am62.c
+++ b/board/toradex/verdin-am62/verdin-am62.c
@@ -15,6 +15,7 @@
#include <init.h>
#include <k3-ddrss.h>
#include <spl.h>
+#include <asm/arch/k3-ddr.h>
#include "../common/tdx-cfg-block.h"
@@ -43,6 +44,9 @@ int dram_init_banksize(void)
if (ret)
printf("Error setting up memory banksize. %d\n", ret);
+ /* Use the detected RAM size, we only support 1 bank right now. */
+ gd->bd->bi_dram[0].size = gd->ram_size;
+
return ret;
}
@@ -108,6 +112,13 @@ int board_late_init(void)
#define CORE_VOLTAGE 0x80000000
#define MCU_CTRL_LFXOSC_32K_BYPASS_VAL BIT(4)
+#if IS_ENABLED(CONFIG_XPL_BUILD)
+void spl_perform_fixups(struct spl_image_info *spl_image)
+{
+ fixup_memory_node(spl_image);
+}
+#endif
+
#ifdef CONFIG_SPL_BOARD_INIT
void spl_board_init(void)
{
--
2.45.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v1] board: verdin-am62: fix missing memory fixup call
2025-03-03 18:16 [PATCH v1] board: verdin-am62: fix missing memory fixup call Stefan Eichenberger
@ 2025-03-04 7:09 ` Francesco Dolcini
2025-03-04 16:57 ` Tom Rini
1 sibling, 0 replies; 3+ messages in thread
From: Francesco Dolcini @ 2025-03-04 7:09 UTC (permalink / raw)
To: Stefan Eichenberger
Cc: francesco.dolcini, trini, n-francis, s-k6, w.egorov,
emanuele.ghidoli, u-boot, Stefan Eichenberger
On Mon, Mar 03, 2025 at 07:16:03PM +0100, Stefan Eichenberger wrote:
> From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
>
> The commit bc07851897bd ("board: ti: Pull redundant DDR functions to a
> common location and Fixup DDR size when ECC is enabled") broke DRAM
> support for the Verdin AM62. This was partially fixed with commit
> 3f866c47b582 ("board: verdin-am62: add dram_init_banksize"). However,
> because fixup_memory_node was not called, the Linux kernel was started
> with the wrong memory size on modules with less memory available. This
> resulted in boot failures. Fix this issue by calling fixup_memory_node
> in the board file.
>
> spl_perform_fixups will be called in the SPL and now sets the correct
> memory size in the device tree of U-Boot by calling fixup_memory_node.
> U-Boot will then adjust the memory sizes of Linux during bootm/booti in
> fdt_fixup_memory_banks. This chain ensures that U-Boot and Linux only
> use RAM that is actually available.
>
> Fixes: 3f866c47b582 ("board: verdin-am62: add dram_init_banksize")
> Fixes: bc07851897bd ("board: ti: Pull redundant DDR functions to a common location and Fixup DDR size when ECC is enabled")
> Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
Acked-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Tom: this is needed in master, this fixes a regression, preventing Linux
to boot, in v2025.04.
Thanks
Francesco
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v1] board: verdin-am62: fix missing memory fixup call
2025-03-03 18:16 [PATCH v1] board: verdin-am62: fix missing memory fixup call Stefan Eichenberger
2025-03-04 7:09 ` Francesco Dolcini
@ 2025-03-04 16:57 ` Tom Rini
1 sibling, 0 replies; 3+ messages in thread
From: Tom Rini @ 2025-03-04 16:57 UTC (permalink / raw)
To: francesco.dolcini, n-francis, s-k6, w.egorov, emanuele.ghidoli,
Stefan Eichenberger
Cc: u-boot, Stefan Eichenberger
On Mon, 03 Mar 2025 19:16:03 +0100, Stefan Eichenberger wrote:
> The commit bc07851897bd ("board: ti: Pull redundant DDR functions to a
> common location and Fixup DDR size when ECC is enabled") broke DRAM
> support for the Verdin AM62. This was partially fixed with commit
> 3f866c47b582 ("board: verdin-am62: add dram_init_banksize"). However,
> because fixup_memory_node was not called, the Linux kernel was started
> with the wrong memory size on modules with less memory available. This
> resulted in boot failures. Fix this issue by calling fixup_memory_node
> in the board file.
>
> [...]
Applied to u-boot/master, thanks!
--
Tom
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-03-04 16:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-03 18:16 [PATCH v1] board: verdin-am62: fix missing memory fixup call Stefan Eichenberger
2025-03-04 7:09 ` Francesco Dolcini
2025-03-04 16:57 ` Tom Rini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.