On Mon, Nov 10, 2025 at 09:34:50PM +0100, Marco Felsch wrote:
> Add support to store a FDT within the scratch area. The user needs to
> query the location and size via imx_scratch_get_fdt() which can be used
> afterwards to write the actual FDT into it.
> 
> Signed-off-by: Marco Felsch <[email protected]>
> ---
>  arch/arm/mach-imx/scratch.c | 16 ++++++++++++++++
>  common/Kconfig              | 14 ++++++++++++++
>  include/mach/imx/scratch.h  |  2 ++
>  3 files changed, 32 insertions(+)
> 
> diff --git a/arch/arm/mach-imx/scratch.c b/arch/arm/mach-imx/scratch.c
> index 
> e4e2d25969f061c9fcdfd7c3d87701b715eb2805..9c0f1c09c4e0b863d8c95888db7cf0518f698d53
>  100644
> --- a/arch/arm/mach-imx/scratch.c
> +++ b/arch/arm/mach-imx/scratch.c
> @@ -16,7 +16,10 @@ struct imx_scratch_space {
>       u32 bootrom_log[128];
>       u32 reserved[128];              /* reserve for bootrom log */
>       struct optee_header optee_hdr;
> +     /* FDT needs an 8 byte alignment */
> +     u8 fdt[CONFIG_SCRATCH_FDT_SIZE] __aligned(8);
>  };
> +static_assert(sizeof(struct imx_scratch_space) <= CONFIG_SCRATCH_SIZE);
>  
>  static struct imx_scratch_space *scratch;
>  
> @@ -92,3 +95,16 @@ const struct optee_header *imx_scratch_get_optee_hdr(void)
>  
>       return &scratch->optee_hdr;
>  }
> +
> +void imx_scratch_get_fdt(void **fdt, unsigned int *fdt_sz)
> +{
> +     if (!scratch) {
> +             if (IN_PBL)
> +                     return;
> +             else
> +                     scratch = (void *)arm_mem_scratch_get();
> +     }
> +
> +     *fdt = scratch->fdt;
> +     *fdt_sz = sizeof(scratch->fdt);
> +}
> diff --git a/common/Kconfig b/common/Kconfig
> index 
> eb2fb1da1e0919b6e7d5e868c48ad2e195cd8aa8..3f394416c3c376d1cf842472803a47462bb012ed
>  100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -302,8 +302,22 @@ config MALLOC_SIZE
>  config SCRATCH_SIZE
>       hex
>       default 0x8000
> +     default 0x48000 if PBL_EARLY_FDT_LOAD
>       prompt "Scratch size"

Do I get this right that the scratch space now includes the space for
the early FDT? If yes then this can lead to inconsistencies when the
scratch space is to small. Why not add an extra space?

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

Reply via email to