Hi Andreas,

On Wed, Oct 14, 2026 at 4:46 AM Andreas Henriksson <[email protected]> wrote:
>
> On boards with >3GiB ram, we can end up with transfers above 4GiB
> which is not allowed by SDHC driver.
>
> fsl_esdhc_imx.c: esdhc_setup_dma():
>         if (upper_32_bits(priv->dma_addr))
>                 printf("Cannot use 64 bit addresses with SDMA\n");
>
> Tested on Toradex Verdin i.MX8M Plus SoM, where bootefi would not work
> (with systemd-boot as efi application) and print the above message.
>
> Signed-off-by: Andreas Henriksson <[email protected]>
> ---
>  lib/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/Kconfig b/lib/Kconfig
> index 021a82d4709..a5f2e3e1058 100644
> --- a/lib/Kconfig
> +++ b/lib/Kconfig
> @@ -1371,7 +1371,7 @@ config SPL_LMB_ARCH_MEM_MAP
>  config LMB_LIMIT_DMA_BELOW_RAM_TOP
>         bool
>         depends on LMB
> -       default y if ARCH_BCM283X || ARCH_MVEBU || ARCH_ROCKCHIP || 
> STARFIVE_JH7110
> +       default y if ARCH_BCM283X || ARCH_IMX8M || ARCH_MVEBU || 
> ARCH_ROCKCHIP || STARFIVE_JH7110

I noticed that MMC_MTK already implies LMB_LIMIT_DMA_BELOW_RAM_TOP in
its Kconfig entry.

Would it make sense to do the same for FSL_ESDHC_IMX and restrict it
to ARCH_IMX8M?

Something like:

diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -1,5 +1,6 @@
 config FSL_ESDHC_IMX
        bool "Freescale/NXP i.MX eSDHC controller support"
+       imply LMB_LIMIT_DMA_BELOW_RAM_TOP if ARCH_IMX8M

This keeps the DMA restriction tied to the affected driver rather than
adding another architecture-specific condition to lib/Kconfig.

What do you think?

Thanks,

Fabio Estevam

Reply via email to