On Wed, 3 Jun 2026 at 12:12, Marek Vasut <[email protected]> wrote: > > On 6/3/26 1:02 PM, Peter Robinson wrote: > > On Sat, 30 May 2026 at 16:06, Marek Vasut <[email protected]> wrote: > >> > >> On 5/30/26 4:45 PM, Marek Vasut wrote: > >>> Some architectures can not DMA above 4 GiB boundary, > >>> limit available memory to memory below 4 GiB boundary. > >>> > >>> Signed-off-by: Marek Vasut <[email protected]> > >>> --- > >>> Cc: Andrew Goodbody <[email protected]> > >>> Cc: David Lechner <[email protected]> > >>> Cc: Heiko Schocher <[email protected]> > >>> Cc: Heinrich Schuchardt <[email protected]> > >>> Cc: Holger Brunck <[email protected]> > >>> Cc: Ilias Apalodimas <[email protected]> > >>> Cc: Peter Robinson <[email protected]> > >>> Cc: Quentin Schulz <[email protected]> > >>> Cc: Simon Glass <[email protected]> > >>> Cc: Sughosh Ganu <[email protected]> > >>> Cc: Tom Rini <[email protected]> > >>> Cc: [email protected] > >>> --- > >>> lib/Kconfig | 8 ++++++++ > >>> lib/lmb.c | 20 +++++++++++++++++++- > >>> 2 files changed, 27 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/lib/Kconfig b/lib/Kconfig > >>> index 77ebc79e1db..29911068a69 100644 > >>> --- a/lib/Kconfig > >>> +++ b/lib/Kconfig > >>> @@ -1295,6 +1295,14 @@ config SPL_LMB_ARCH_MEM_MAP > >>> memory map. Enable this config in such scenarios which allow > >>> architectures and boards to define their own memory map. > >>> > >>> +config LMB_LIMIT_DMA_BELOW_4G > >>> + bool > >>> + depends on LMB > >>> + default y if ARCH_BCM283X > >>> + help > >>> + Some architectures can not DMA above 4 GiB boundary, > >>> + limit available memory to memory below 4 GiB boundary. > >>> + > >>> config PHANDLE_CHECK_SEQ > >>> bool "Enable phandle check while getting sequence number" > >>> help > >>> diff --git a/lib/lmb.c b/lib/lmb.c > >>> index 8f12c6ad8e5..a8a988eedc0 100644 > >>> --- a/lib/lmb.c > >>> +++ b/lib/lmb.c > >>> @@ -611,6 +611,7 @@ static __maybe_unused void > >>> lmb_reserve_common_spl(void) > >>> static void lmb_add_memory(void) > >>> { > >>> int i; > >>> + phys_addr_t bank_end; > >>> phys_size_t size; > >>> u64 ram_top = gd->ram_top; > >>> struct bd_info *bd = gd->bd; > >>> @@ -625,8 +626,25 @@ static void lmb_add_memory(void) > >>> for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) { > >>> size = bd->bi_dram[i].size; > >>> > >>> - if (size) > >>> + if (size) { > >>> lmb_add(bd->bi_dram[i].start, size); > >>> + if (IS_ENABLED(CONFIG_LMB_LIMIT_DMA_BELOW_4G)) > >> > >> This conditional should be inverted. > >> > >> Peter Robinson , can you test this change on RPi ? > > > > That doesn't fix the problem for me on a RPi4 4GB or a RPi5 8Gb. > Did you invert the if (IS_ENABLED...) conditional ? > > Was CONFIG_LMB_LIMIT_DMA_BELOW_4G enabled in your config (maybe the > Kconfig entry "default y" part needs to be tweaked to cover these devices?) > > If both conditions are met, that should behave like the old code.
I dropped my revert and applied the patch, checked the new config option was in the generated .config (I mean you could test that with a "make rpi_arm64_defconfig" and checking the output). Peter

