* [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
@ 2026-05-30 5:24 Rudy Andram
0 siblings, 0 replies; 10+ messages in thread
From: Rudy Andram @ 2026-05-30 5:24 UTC (permalink / raw)
To: u-boot
Cc: trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon, dlechner,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli, Rudy Andram
MT7988 detects the full installed DRAM in dram_init(), but after
commit bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
it fell back to the generic dram_init_banksize() implementation.
That generic path populates bd->bi_dram[0].size with
get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
installed.
As a result, U-Boot reports the full DRAM in gd->ram_size but exposes
only the low 3 GiB through bd->bi_dram[]. This truncated map can then
propagate to later stages through memory handoff and DT fixups.
On a Banana Pi R4 Pro 8G (MT7988), bdinfo shows:
Before:
DRAM bank = 0x000000000
-> start = 0x0000000040000000
-> size = 0x00000000c0000000
After:
DRAM bank = 0x000000000
-> start = 0x0000000040000000
-> size = 0x0000000200000000
Restore the MT7988-specific dram_init_banksize() implementation so
bd->bi_dram[0] publishes gd->ram_base and gd->ram_size again.
Version tested
U-Boot 2026.07-rc2-bpi-g6a1580973a11-dirty (May 27 2026 - 14:39:18 +0000)
Fixes: bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
Tested-by: Rudy Andram <rmandrad@gmail.com>
Signed-off-by: Rudy Andram <rmandrad@gmail.com>
---
arch/arm/mach-mediatek/mt7988/init.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/mach-mediatek/mt7988/init.c b/arch/arm/mach-mediatek/mt7988/init.c
index 7f4d934bfe9..08eb73d42b1 100644
--- a/arch/arm/mach-mediatek/mt7988/init.c
+++ b/arch/arm/mach-mediatek/mt7988/init.c
@@ -26,6 +26,15 @@ int dram_init(void)
return 0;
}
+int dram_init_banksize(void)
+{
+ /* Report the full detected DRAM size to later stages. */
+ gd->bd->bi_dram[0].start = gd->ram_base;
+ gd->bd->bi_dram[0].size = gd->ram_size;
+
+ return 0;
+}
+
void reset_cpu(ulong addr)
{
psci_system_reset();
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
@ 2026-05-30 5:37 Rudy Andram
0 siblings, 0 replies; 10+ messages in thread
From: Rudy Andram @ 2026-05-30 5:37 UTC (permalink / raw)
To: u-boot
Cc: trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon, dlechner,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli, Rudy Andram
MT7988 detects the full installed DRAM in dram_init(), but after
commit bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
it fell back to the generic dram_init_banksize() implementation.
That generic path populates bd->bi_dram[0].size with
get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
installed.
As a result, U-Boot reports the full DRAM in gd->ram_size but exposes
only the low 3 GiB through bd->bi_dram[]. This truncated map can then
propagate to later stages through memory handoff and DT fixups.
On a Banana Pi R4 Pro 8G (MT7988), bdinfo shows:
Before:
DRAM bank = 0x000000000
-> start = 0x0000000040000000
-> size = 0x00000000c0000000
After:
DRAM bank = 0x000000000
-> start = 0x0000000040000000
-> size = 0x0000000200000000
Restore the MT7988-specific dram_init_banksize() implementation so
bd->bi_dram[0] publishes gd->ram_base and gd->ram_size again.
Version tested
U-Boot 2026.07-rc2-bpi-g6a1580973a11-dirty (May 27 2026 - 14:39:18 +0000)
Fixes: bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
Tested-by: Rudy Andram <rmandrad@gmail.com>
Signed-off-by: Rudy Andram <rmandrad@gmail.com>
---
arch/arm/mach-mediatek/mt7988/init.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/mach-mediatek/mt7988/init.c b/arch/arm/mach-mediatek/mt7988/init.c
index 7f4d934bfe9..08eb73d42b1 100644
--- a/arch/arm/mach-mediatek/mt7988/init.c
+++ b/arch/arm/mach-mediatek/mt7988/init.c
@@ -26,6 +26,15 @@ int dram_init(void)
return 0;
}
+int dram_init_banksize(void)
+{
+ /* Report the full detected DRAM size to later stages. */
+ gd->bd->bi_dram[0].start = gd->ram_base;
+ gd->bd->bi_dram[0].size = gd->ram_size;
+
+ return 0;
+}
+
void reset_cpu(ulong addr)
{
psci_system_reset();
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
@ 2026-06-02 16:22 Rudy Andram
2026-06-05 12:51 ` David Lechner
0 siblings, 1 reply; 10+ messages in thread
From: Rudy Andram @ 2026-06-02 16:22 UTC (permalink / raw)
To: u-boot
Cc: trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon, dlechner,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli, Rudy Andram
MT7988 detects the full installed DRAM in dram_init(), but after
commit bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
it fell back to the generic dram_init_banksize() implementation.
That generic path populates bd->bi_dram[0].size with
get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
installed.
As a result, U-Boot reports the full DRAM in gd->ram_size but exposes
only the low 3 GiB through bd->bi_dram[]. This truncated map can then
propagate to later stages through memory handoff and DT fixups.
On a Banana Pi R4 Pro 8G (MT7988), bdinfo shows:
Before:
DRAM bank = 0x000000000
-> start = 0x0000000040000000
-> size = 0x00000000c0000000
After:
DRAM bank = 0x000000000
-> start = 0x0000000040000000
-> size = 0x0000000200000000
Restore the MT7988-specific dram_init_banksize() implementation so
bd->bi_dram[0] publishes gd->ram_base and gd->ram_size again.
Version tested
U-Boot 2026.07-rc2-bpi-g6a1580973a11-dirty (May 27 2026 - 14:39:18 +0000)
Fixes: bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
Tested-by: Rudy Andram <rmandrad@gmail.com>
Signed-off-by: Rudy Andram <rmandrad@gmail.com>
---
arch/arm/mach-mediatek/mt7988/init.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/mach-mediatek/mt7988/init.c b/arch/arm/mach-mediatek/mt7988/init.c
index 7f4d934bfe9..08eb73d42b1 100644
--- a/arch/arm/mach-mediatek/mt7988/init.c
+++ b/arch/arm/mach-mediatek/mt7988/init.c
@@ -26,6 +26,15 @@ int dram_init(void)
return 0;
}
+int dram_init_banksize(void)
+{
+ /* Report the full detected DRAM size to later stages. */
+ gd->bd->bi_dram[0].start = gd->ram_base;
+ gd->bd->bi_dram[0].size = gd->ram_size;
+
+ return 0;
+}
+
void reset_cpu(ulong addr)
{
psci_system_reset();
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-02 16:22 [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting Rudy Andram
@ 2026-06-05 12:51 ` David Lechner
2026-06-05 13:08 ` rmandrad
0 siblings, 1 reply; 10+ messages in thread
From: David Lechner @ 2026-06-05 12:51 UTC (permalink / raw)
To: Rudy Andram
Cc: u-boot, trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli
On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <rmandrad@gmail.com> wrote:
>
> MT7988 detects the full installed DRAM in dram_init(), but after
> commit bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
> it fell back to the generic dram_init_banksize() implementation.
>
> That generic path populates bd->bi_dram[0].size with
> get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
> MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
> installed.
Can we just remove the #define CFG_MAX_MEM_MAPPED (and the header file
that contains it)? Or is it used somewhere else?
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-05 12:51 ` David Lechner
@ 2026-06-05 13:08 ` rmandrad
2026-06-05 14:30 ` David Lechner
0 siblings, 1 reply; 10+ messages in thread
From: rmandrad @ 2026-06-05 13:08 UTC (permalink / raw)
To: 'David Lechner'
Cc: u-boot, trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli
Not the header file as TARGET_MT7988 sets SYS_CONFIG_NAME="mt7988" in arch/arm/mach-mediatek/Kconfig
In the mt7988 I don't see CFG_MAX_MEM_MAPPED used elsewhere than just in common/memsize.c where it limits get_effective_memsize()
Unsetting/removing CFG_MAX_MEM_MAPPED would take u-boot above 4gb... Some MediaTek ARM64 ports may keep U-Boot below 4 GiB because peripherals such as MMC need DMA buffers below 4 GiB ... so, it may work on my setup but not others. Also, not an expert on u-boot I would suggest for others to comment/review
-----Original Message-----
From: David Lechner <dlechner@baylibre.com>
Sent: 05 June 2026 13:52
To: Rudy Andram <rmandrad@gmail.com>
Cc: u-boot@lists.denx.de; trini@konsulko.com; ryder.lee@mediatek.com; weijie.gao@mediatek.com; chunfeng.yun@mediatek.com; igor.belwon@mentallysanemainliners.org; jstephan@baylibre.com; GSS_MTK_Uboot_upstream@mediatek.com; emanuele.ghidoli@toradex.com
Subject: Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <rmandrad@gmail.com> wrote:
>
> MT7988 detects the full installed DRAM in dram_init(), but after
> commit bddd6bbef3dc ("arm: mediatek: mt7988: drop
> dram_init_banksize()") it fell back to the generic dram_init_banksize() implementation.
>
> That generic path populates bd->bi_dram[0].size with
> get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
> MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
> installed.
Can we just remove the #define CFG_MAX_MEM_MAPPED (and the header file that contains it)? Or is it used somewhere else?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-05 13:08 ` rmandrad
@ 2026-06-05 14:30 ` David Lechner
2026-06-05 14:48 ` David Lechner
0 siblings, 1 reply; 10+ messages in thread
From: David Lechner @ 2026-06-05 14:30 UTC (permalink / raw)
To: rmandrad
Cc: u-boot, trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli
On Fri, Jun 5, 2026 at 3:07 PM <rmandrad@gmail.com> wrote:
> > On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <rmandrad@gmail.com> wrote:
> > >
> > > MT7988 detects the full installed DRAM in dram_init(), but after
> > > commit bddd6bbef3dc ("arm: mediatek: mt7988: drop
> > > dram_init_banksize()") it fell back to the generic dram_init_banksize() implementation.
> > >
> > > That generic path populates bd->bi_dram[0].size with
> > > get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
> > > MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
> > > installed.
> >
> > Can we just remove the #define CFG_MAX_MEM_MAPPED (and the header file that contains it)? Or is it used somewhere else?
> >
>
> Not the header file as TARGET_MT7988 sets SYS_CONFIG_NAME="mt7988" in arch/arm/mach-mediatek/Kconfig
We could drop that config too since the header will be empty.
>
> In the mt7988 I don't see CFG_MAX_MEM_MAPPED used elsewhere than just in common/memsize.c where it limits get_effective_memsize()
>
> Unsetting/removing CFG_MAX_MEM_MAPPED would take u-boot above 4gb... Some MediaTek ARM64 ports may keep U-Boot below 4 GiB because peripherals such as MMC need DMA buffers below 4 GiB ... so, it may work on my setup but not others. Also, not an expert on u-boot I would suggest for others to comment/review
>
What I've done on the other MediaTek platforms for now is add this to
init.c to take care of the 4GB DMA limit.
phys_size_t get_effective_memsize(void)
{
/*
* Limit gd->ram_top not exceeding SZ_4G. Because some peripherals like
* MMC requires DMA buffer allocated below SZ_4G.
*/
return min(SZ_4G - gd->ram_base, gd->ram_size);
}
There has been some ongoing discussion of a better way to handle this
in general though, the last few weeks. I need to check the mailing
list to see if any progress was made since then.
If there isn't something yet, I would still propose to drop
CFG_MAX_MEM_MAPPED and add this function so that everything is the
same.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-05 14:30 ` David Lechner
@ 2026-06-05 14:48 ` David Lechner
2026-06-05 14:54 ` rmandrad
0 siblings, 1 reply; 10+ messages in thread
From: David Lechner @ 2026-06-05 14:48 UTC (permalink / raw)
To: rmandrad
Cc: u-boot, trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli
On Fri, Jun 5, 2026 at 4:30 PM David Lechner <dlechner@baylibre.com> wrote:
>
> On Fri, Jun 5, 2026 at 3:07 PM <rmandrad@gmail.com> wrote:
> > > On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <rmandrad@gmail.com> wrote:
> > > >
> > > > MT7988 detects the full installed DRAM in dram_init(), but after
> > > > commit bddd6bbef3dc ("arm: mediatek: mt7988: drop
> > > > dram_init_banksize()") it fell back to the generic dram_init_banksize() implementation.
> > > >
> > > > That generic path populates bd->bi_dram[0].size with
> > > > get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED. On
> > > > MT7988 this limits the exported DRAM bank to 3 GiB even when 8 GiB is
> > > > installed.
> > >
> > > Can we just remove the #define CFG_MAX_MEM_MAPPED (and the header file that contains it)? Or is it used somewhere else?
> > >
> >
> > Not the header file as TARGET_MT7988 sets SYS_CONFIG_NAME="mt7988" in arch/arm/mach-mediatek/Kconfig
>
> We could drop that config too since the header will be empty.
>
> >
> > In the mt7988 I don't see CFG_MAX_MEM_MAPPED used elsewhere than just in common/memsize.c where it limits get_effective_memsize()
> >
> > Unsetting/removing CFG_MAX_MEM_MAPPED would take u-boot above 4gb... Some MediaTek ARM64 ports may keep U-Boot below 4 GiB because peripherals such as MMC need DMA buffers below 4 GiB ... so, it may work on my setup but not others. Also, not an expert on u-boot I would suggest for others to comment/review
> >
>
> What I've done on the other MediaTek platforms for now is add this to
> init.c to take care of the 4GB DMA limit.
>
> phys_size_t get_effective_memsize(void)
> {
> /*
> * Limit gd->ram_top not exceeding SZ_4G. Because some peripherals like
> * MMC requires DMA buffer allocated below SZ_4G.
> */
> return min(SZ_4G - gd->ram_base, gd->ram_size);
> }
Meh... I've just realized that this probably doesn't fix the issue as
it does basically the same thing as CFG_MAX_MEM_MAPPED. I will have to
come back to this next week when I have more time.
>
> There has been some ongoing discussion of a better way to handle this
> in general though, the last few weeks. I need to check the mailing
> list to see if any progress was made since then.
>
> If there isn't something yet, I would still propose to drop
> CFG_MAX_MEM_MAPPED and add this function so that everything is the
> same.
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-05 14:48 ` David Lechner
@ 2026-06-05 14:54 ` rmandrad
2026-06-05 15:00 ` David Lechner
0 siblings, 1 reply; 10+ messages in thread
From: rmandrad @ 2026-06-05 14:54 UTC (permalink / raw)
To: 'David Lechner'
Cc: u-boot, trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli
Was just about to reply on that... happy to drop this patch and let you work on a solution just thought to report my findings but would suggest in the meantime to revert
bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
-----Original Message-----
From: David Lechner <dlechner@baylibre.com>
Sent: 05 June 2026 15:48
To: rmandrad@gmail.com
Cc: u-boot@lists.denx.de; trini@konsulko.com; ryder.lee@mediatek.com; weijie.gao@mediatek.com; chunfeng.yun@mediatek.com; igor.belwon@mentallysanemainliners.org; jstephan@baylibre.com; GSS_MTK_Uboot_upstream@mediatek.com; emanuele.ghidoli@toradex.com
Subject: Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
On Fri, Jun 5, 2026 at 4:30 PM David Lechner <dlechner@baylibre.com> wrote:
>
> On Fri, Jun 5, 2026 at 3:07 PM <rmandrad@gmail.com> wrote:
> > > On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <rmandrad@gmail.com> wrote:
> > > >
> > > > MT7988 detects the full installed DRAM in dram_init(), but after
> > > > commit bddd6bbef3dc ("arm: mediatek: mt7988: drop
> > > > dram_init_banksize()") it fell back to the generic dram_init_banksize() implementation.
> > > >
> > > > That generic path populates bd->bi_dram[0].size with
> > > > get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED.
> > > > On
> > > > MT7988 this limits the exported DRAM bank to 3 GiB even when 8
> > > > GiB is installed.
> > >
> > > Can we just remove the #define CFG_MAX_MEM_MAPPED (and the header file that contains it)? Or is it used somewhere else?
> > >
> >
> > Not the header file as TARGET_MT7988 sets SYS_CONFIG_NAME="mt7988" in arch/arm/mach-mediatek/Kconfig
>
> We could drop that config too since the header will be empty.
>
> >
> > In the mt7988 I don't see CFG_MAX_MEM_MAPPED used elsewhere than
> > just in common/memsize.c where it limits get_effective_memsize()
> >
> > Unsetting/removing CFG_MAX_MEM_MAPPED would take u-boot above 4gb...
> > Some MediaTek ARM64 ports may keep U-Boot below 4 GiB because
> > peripherals such as MMC need DMA buffers below 4 GiB ... so, it may
> > work on my setup but not others. Also, not an expert on u-boot I
> > would suggest for others to comment/review
> >
>
> What I've done on the other MediaTek platforms for now is add this to
> init.c to take care of the 4GB DMA limit.
>
> phys_size_t get_effective_memsize(void) {
> /*
> * Limit gd->ram_top not exceeding SZ_4G. Because some peripherals like
> * MMC requires DMA buffer allocated below SZ_4G.
> */
> return min(SZ_4G - gd->ram_base, gd->ram_size); }
Meh... I've just realized that this probably doesn't fix the issue as it does basically the same thing as CFG_MAX_MEM_MAPPED. I will have to come back to this next week when I have more time.
>
> There has been some ongoing discussion of a better way to handle this
> in general though, the last few weeks. I need to check the mailing
> list to see if any progress was made since then.
>
> If there isn't something yet, I would still propose to drop
> CFG_MAX_MEM_MAPPED and add this function so that everything is the
> same.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-05 14:54 ` rmandrad
@ 2026-06-05 15:00 ` David Lechner
2026-06-10 1:05 ` Weijie Gao
0 siblings, 1 reply; 10+ messages in thread
From: David Lechner @ 2026-06-05 15:00 UTC (permalink / raw)
To: rmandrad
Cc: u-boot, trini, ryder.lee, weijie.gao, chunfeng.yun, igor.belwon,
jstephan, GSS_MTK_Uboot_upstream, emanuele.ghidoli
> On Fri, Jun 5, 2026 at 4:30 PM David Lechner <dlechner@baylibre.com> wrote:
> >
> > On Fri, Jun 5, 2026 at 3:07 PM <rmandrad@gmail.com> wrote:
> > > > On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <rmandrad@gmail.com> wrote:
> > > > >
> > > > > MT7988 detects the full installed DRAM in dram_init(), but after
> > > > > commit bddd6bbef3dc ("arm: mediatek: mt7988: drop
> > > > > dram_init_banksize()") it fell back to the generic dram_init_banksize() implementation.
> > > > >
> > > > > That generic path populates bd->bi_dram[0].size with
> > > > > get_effective_memsize(), which is capped by CFG_MAX_MEM_MAPPED.
> > > > > On
> > > > > MT7988 this limits the exported DRAM bank to 3 GiB even when 8
> > > > > GiB is installed.
> > > >
> > > > Can we just remove the #define CFG_MAX_MEM_MAPPED (and the header file that contains it)? Or is it used somewhere else?
> > > >
> > >
> > > Not the header file as TARGET_MT7988 sets SYS_CONFIG_NAME="mt7988" in arch/arm/mach-mediatek/Kconfig
> >
> > We could drop that config too since the header will be empty.
> >
> > >
> > > In the mt7988 I don't see CFG_MAX_MEM_MAPPED used elsewhere than
> > > just in common/memsize.c where it limits get_effective_memsize()
> > >
> > > Unsetting/removing CFG_MAX_MEM_MAPPED would take u-boot above 4gb...
> > > Some MediaTek ARM64 ports may keep U-Boot below 4 GiB because
> > > peripherals such as MMC need DMA buffers below 4 GiB ... so, it may
> > > work on my setup but not others. Also, not an expert on u-boot I
> > > would suggest for others to comment/review
> > >
> >
> > What I've done on the other MediaTek platforms for now is add this to
> > init.c to take care of the 4GB DMA limit.
> >
> > phys_size_t get_effective_memsize(void) {
> > /*
> > * Limit gd->ram_top not exceeding SZ_4G. Because some peripherals like
> > * MMC requires DMA buffer allocated below SZ_4G.
> > */
> > return min(SZ_4G - gd->ram_base, gd->ram_size); }
>
> Meh... I've just realized that this probably doesn't fix the issue as it does basically the same thing as CFG_MAX_MEM_MAPPED. I will have to come back to this next week when I have more time.
>
> >
> > There has been some ongoing discussion of a better way to handle this
> > in general though, the last few weeks. I need to check the mailing
> > list to see if any progress was made since then.
> >
> > If there isn't something yet, I would still propose to drop
> > CFG_MAX_MEM_MAPPED and add this function so that everything is the
> > same.
>
On Fri, Jun 5, 2026 at 4:53 PM <rmandrad@gmail.com> wrote:
>
> Was just about to reply on that... happy to drop this patch and let you work on a solution just thought to report my findings but would suggest in the meantime to revert
> bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
I just saw [1] that has a new config option to address the DMA address
limit and [2] that renames the config option. [1] has already been
applied to master, so perhaps we could still drop CFG_MAX_MEM_MAPPED
and use this new option instead? Otherwise, yes, I will consider the
revert.
[1]: https://lore.kernel.org/u-boot/20260603141814.12672-1-marek.vasut+renesas@mailbox.org/
[2]: https://lore.kernel.org/u-boot/20260604173330.8586-1-marek.vasut+renesas@mailbox.org/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting
2026-06-05 15:00 ` David Lechner
@ 2026-06-10 1:05 ` Weijie Gao
0 siblings, 0 replies; 10+ messages in thread
From: Weijie Gao @ 2026-06-10 1:05 UTC (permalink / raw)
To: David Lechner, rmandrad
Cc: u-boot, trini, ryder.lee, chunfeng.yun, igor.belwon, jstephan,
GSS_MTK_Uboot_upstream, emanuele.ghidoli
On Fri, 2026-06-05 at 17:00 +0200, David Lechner wrote:
> > On Fri, Jun 5, 2026 at 4:30 PM David Lechner <dlechner@baylibre.com
> > > wrote:
> > >
> > > On Fri, Jun 5, 2026 at 3:07 PM <rmandrad@gmail.com> wrote:
> > > > > On Tue, Jun 2, 2026 at 6:24 PM Rudy Andram <
> > > > > rmandrad@gmail.com> wrote:
> > > > > >
> > > > > > MT7988 detects the full installed DRAM in dram_init(), but
> > > > > > after
> > > > > > commit bddd6bbef3dc ("arm: mediatek: mt7988: drop
> > > > > > dram_init_banksize()") it fell back to the generic
> > > > > > dram_init_banksize() implementation.
> > > > > >
> > > > > > That generic path populates bd->bi_dram[0].size with
> > > > > > get_effective_memsize(), which is capped by
> > > > > > CFG_MAX_MEM_MAPPED.
> > > > > > On
> > > > > > MT7988 this limits the exported DRAM bank to 3 GiB even
> > > > > > when 8
> > > > > > GiB is installed.
> > > > >
> > > > > Can we just remove the #define CFG_MAX_MEM_MAPPED (and the
> > > > > header file that contains it)? Or is it used somewhere else?
> > > > >
> > > >
> > > > Not the header file as TARGET_MT7988 sets
> > > > SYS_CONFIG_NAME="mt7988" in arch/arm/mach-mediatek/Kconfig
> > >
> > > We could drop that config too since the header will be empty.
> > >
> > > >
> > > > In the mt7988 I don't see CFG_MAX_MEM_MAPPED used elsewhere
> > > > than
> > > > just in common/memsize.c where it limits
> > > > get_effective_memsize()
> > > >
> > > > Unsetting/removing CFG_MAX_MEM_MAPPED would take u-boot above
> > > > 4gb...
> > > > Some MediaTek ARM64 ports may keep U-Boot below 4 GiB because
> > > > peripherals such as MMC need DMA buffers below 4 GiB ... so, it
> > > > may
> > > > work on my setup but not others. Also, not an expert on u-
> > > > boot I
> > > > would suggest for others to comment/review
> > > >
> > >
> > > What I've done on the other MediaTek platforms for now is add
> > > this to
> > > init.c to take care of the 4GB DMA limit.
> > >
> > > phys_size_t get_effective_memsize(void) {
> > > /*
> > > * Limit gd->ram_top not exceeding SZ_4G. Because some
> > > peripherals like
> > > * MMC requires DMA buffer allocated below SZ_4G.
> > > */
> > > return min(SZ_4G - gd->ram_base, gd->ram_size); }
> >
> > Meh... I've just realized that this probably doesn't fix the issue
> > as it does basically the same thing as CFG_MAX_MEM_MAPPED. I will
> > have to come back to this next week when I have more time.
> >
> > >
> > > There has been some ongoing discussion of a better way to handle
> > > this
> > > in general though, the last few weeks. I need to check the
> > > mailing
> > > list to see if any progress was made since then.
> > >
> > > If there isn't something yet, I would still propose to drop
> > > CFG_MAX_MEM_MAPPED and add this function so that everything is
> > > the
> > > same.
>
>
>
> On Fri, Jun 5, 2026 at 4:53 PM <rmandrad@gmail.com> wrote:
> >
> > Was just about to reply on that... happy to drop this patch and let
> > you work on a solution just thought to report my findings but would
> > suggest in the meantime to revert
> > bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()")
>
> I just saw [1] that has a new config option to address the DMA
> address
> limit and [2] that renames the config option. [1] has already been
> applied to master, so perhaps we could still drop CFG_MAX_MEM_MAPPED
> and use this new option instead? Otherwise, yes, I will consider the
> revert.
The NETSYS DMA of all filogic platform chips can only use DRAM below
4GiB and that's why we added CFG_MAX_MEM_MAPPED to limit the usable
memory in U-Boot.
>
> [1]:
> https://lore.kernel.org/u-boot/20260603141814.12672-1-marek.vasut+renesas@mailbox.org/
>
> [2]:
> https://lore.kernel.org/u-boot/20260604173330.8586-1-marek.vasut+renesas@mailbox.org/
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-06-10 1:05 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-02 16:22 [PATCH] arm: mediatek: mt7988: restore full DRAM bank reporting Rudy Andram
2026-06-05 12:51 ` David Lechner
2026-06-05 13:08 ` rmandrad
2026-06-05 14:30 ` David Lechner
2026-06-05 14:48 ` David Lechner
2026-06-05 14:54 ` rmandrad
2026-06-05 15:00 ` David Lechner
2026-06-10 1:05 ` Weijie Gao
-- strict thread matches above, loose matches on Subject: below --
2026-05-30 5:37 Rudy Andram
2026-05-30 5:24 Rudy Andram
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.