All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.