[PATCH] lmb: Default to not-LMB_USE_MAX_REGIONS

Philippe Schenker philippe.schenker at toradex.com
Wed Feb 8 15:33:58 CET 2023


Hi Tom,

We currently face an issue on our apalis-imx8 machine, that is not able
to boot with a ramdisk. What happens is that there are all 8 of 8 LMBs
reserved and fdt tries to allocate one more, probably for relocation.

I now stumbled on this recent patch and noticed that in my understanding
this is introducing a regression to all the boards you remove
`CONFIG_LMB_MAX_REGIONS=64` isn't it? Or do I miss something?

For the other question this raises to me is it in general safe to just
increase this limit, let's say to 16?

And since it was quite an effort debugging this issue I thought of
adding a debug print if the MAX cnt in lmb.c is being hit to ease that
pain for other devs, would you be fine with something like this?

Thanks in advance for your answers,
Philippe

On Wed, 2023-01-25 at 18:08 -0500, Tom Rini wrote:
> The LMB code allows for picking a hard limit on the number of regions
> it
> can know of, or to dynamically allocate these regions. The reason for
> this choice is to allow for the compiler to perform a size
> optimization
> in the common case. This optimization however, is very small, ranging
> from 196 bytes to 15 bytes saved, or in some cases, being larger. Now
> that we also have more regions covered by LMB (in order to protect
> various parts of our self at run time), the default of 8 is also much
> easier to hit and leads to non-obvious error messages (which imply
> that
> an area is protected, not that we're out of areas to add to the list).
> 
> Switch to the dynamic use as the default.
> 
> Signed-off-by: Tom Rini <trini at konsulko.com>
> ---
>  configs/a3y17lte_defconfig           | 1 -
>  configs/a5y17lte_defconfig           | 1 -
>  configs/a7y17lte_defconfig           | 1 -
>  configs/dragonboard845c_defconfig    | 1 -
>  configs/mt7981_emmc_rfb_defconfig    | 1 -
>  configs/mt7981_rfb_defconfig         | 1 -
>  configs/mt7981_sd_rfb_defconfig      | 1 -
>  configs/mt7986_rfb_defconfig         | 1 -
>  configs/mt7986a_bpir3_emmc_defconfig | 1 -
>  configs/mt7986a_bpir3_sd_defconfig   | 1 -
>  configs/qcs404evb_defconfig          | 1 -
>  configs/starqltechn_defconfig        | 1 -
>  lib/Kconfig                          | 1 -
>  13 files changed, 13 deletions(-)
> 
> diff --git a/configs/a3y17lte_defconfig b/configs/a3y17lte_defconfig
> index 124fb8d47617..0215c5f234bb 100644
> --- a/configs/a3y17lte_defconfig
> +++ b/configs/a3y17lte_defconfig
> @@ -24,4 +24,3 @@ CONFIG_SYS_BOOTM_LEN=0x2000000
>  CONFIG_CMD_GPIO=y
>  CONFIG_CMD_I2C=y
>  CONFIG_DM_I2C_GPIO=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/a5y17lte_defconfig b/configs/a5y17lte_defconfig
> index ffb0b3f474a6..d1cd97baf512 100644
> --- a/configs/a5y17lte_defconfig
> +++ b/configs/a5y17lte_defconfig
> @@ -24,4 +24,3 @@ CONFIG_SYS_BOOTM_LEN=0x2000000
>  CONFIG_CMD_GPIO=y
>  CONFIG_CMD_I2C=y
>  CONFIG_DM_I2C_GPIO=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/a7y17lte_defconfig b/configs/a7y17lte_defconfig
> index 8c1229d8d5ec..bef2d0945aec 100644
> --- a/configs/a7y17lte_defconfig
> +++ b/configs/a7y17lte_defconfig
> @@ -24,4 +24,3 @@ CONFIG_SYS_BOOTM_LEN=0x2000000
>  CONFIG_CMD_GPIO=y
>  CONFIG_CMD_I2C=y
>  CONFIG_DM_I2C_GPIO=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/dragonboard845c_defconfig
> b/configs/dragonboard845c_defconfig
> index a69d82761a8d..cef82f56108e 100644
> --- a/configs/dragonboard845c_defconfig
> +++ b/configs/dragonboard845c_defconfig
> @@ -26,4 +26,3 @@ CONFIG_DM_PMIC=y
>  CONFIG_PMIC_QCOM=y
>  CONFIG_MSM_GENI_SERIAL=y
>  CONFIG_SPMI_MSM=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/mt7981_emmc_rfb_defconfig
> b/configs/mt7981_emmc_rfb_defconfig
> index b3b37b6e5ed4..4832a2264395 100644
> --- a/configs/mt7981_emmc_rfb_defconfig
> +++ b/configs/mt7981_emmc_rfb_defconfig
> @@ -62,4 +62,3 @@ CONFIG_MTK_SERIAL=y
>  CONFIG_FAT_WRITE=y
>  CONFIG_HEXDUMP=y
>  # CONFIG_EFI_LOADER is not set
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/mt7981_rfb_defconfig
> b/configs/mt7981_rfb_defconfig
> index b7ffb4dfa74d..c3975278871e 100644
> --- a/configs/mt7981_rfb_defconfig
> +++ b/configs/mt7981_rfb_defconfig
> @@ -64,4 +64,3 @@ CONFIG_SPI=y
>  CONFIG_DM_SPI=y
>  CONFIG_MTK_SPIM=y
>  CONFIG_HEXDUMP=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/mt7981_sd_rfb_defconfig
> b/configs/mt7981_sd_rfb_defconfig
> index 85be9bbc5030..17592dc22b9a 100644
> --- a/configs/mt7981_sd_rfb_defconfig
> +++ b/configs/mt7981_sd_rfb_defconfig
> @@ -62,4 +62,3 @@ CONFIG_MTK_SERIAL=y
>  CONFIG_FAT_WRITE=y
>  CONFIG_HEXDUMP=y
>  # CONFIG_EFI_LOADER is not set
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/mt7986_rfb_defconfig
> b/configs/mt7986_rfb_defconfig
> index ac91c93efb42..1363f9dc6d0b 100644
> --- a/configs/mt7986_rfb_defconfig
> +++ b/configs/mt7986_rfb_defconfig
> @@ -64,4 +64,3 @@ CONFIG_SPI=y
>  CONFIG_DM_SPI=y
>  CONFIG_MTK_SPIM=y
>  CONFIG_HEXDUMP=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/mt7986a_bpir3_emmc_defconfig
> b/configs/mt7986a_bpir3_emmc_defconfig
> index 2d4876f299f4..354159df9b2e 100644
> --- a/configs/mt7986a_bpir3_emmc_defconfig
> +++ b/configs/mt7986a_bpir3_emmc_defconfig
> @@ -62,4 +62,3 @@ CONFIG_MTK_SERIAL=y
>  CONFIG_FAT_WRITE=y
>  CONFIG_HEXDUMP=y
>  # CONFIG_EFI_LOADER is not set
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/mt7986a_bpir3_sd_defconfig
> b/configs/mt7986a_bpir3_sd_defconfig
> index 08edfe7ac409..db7ef98d807b 100644
> --- a/configs/mt7986a_bpir3_sd_defconfig
> +++ b/configs/mt7986a_bpir3_sd_defconfig
> @@ -62,4 +62,3 @@ CONFIG_MTK_SERIAL=y
>  CONFIG_FAT_WRITE=y
>  CONFIG_HEXDUMP=y
>  # CONFIG_EFI_LOADER is not set
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/qcs404evb_defconfig b/configs/qcs404evb_defconfig
> index dae155141152..d3608cae9f90 100644
> --- a/configs/qcs404evb_defconfig
> +++ b/configs/qcs404evb_defconfig
> @@ -51,4 +51,3 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_DWC3_GENERIC=y
>  CONFIG_USB_STORAGE=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/configs/starqltechn_defconfig
> b/configs/starqltechn_defconfig
> index 7a64f2a7a088..81fd7b22676e 100644
> --- a/configs/starqltechn_defconfig
> +++ b/configs/starqltechn_defconfig
> @@ -33,4 +33,3 @@ CONFIG_VIDEO=y
>  CONFIG_SYS_WHITE_ON_BLACK=y
>  CONFIG_VIDEO_SIMPLE=y
>  CONFIG_VIDEO_DT_SIMPLEFB=y
> -CONFIG_LMB_MAX_REGIONS=64
> diff --git a/lib/Kconfig b/lib/Kconfig
> index 549bd3577851..59e4304afd1a 100644
> --- a/lib/Kconfig
> +++ b/lib/Kconfig
> @@ -1028,7 +1028,6 @@ config LMB
>  config LMB_USE_MAX_REGIONS
>         bool "Use a common number of memory and reserved regions in
> lmb lib"
>         depends on LMB
> -       default y
>         help
>           Define the number of supported memory regions in the library
> logical
>           memory blocks.



More information about the U-Boot mailing list