[U-Boot] [PATCH 1/2] spl: atf: add SPL_ATF_NO_PLATFORM_PARAM option
Kever Yang
kever.yang at rock-chips.com
Wed Jan 3 02:29:38 UTC 2018
On 01/03/2018 04:16 AM, Philipp Tomsich wrote:
> While we expect to call a pointer to a valid FDT (or NULL) as the
> platform parameter to an ATF, some ATF versions are not U-Boot aware
> and have an insufficiently robust (or an overzealour) parameter
> validation: either way, this may cause a hard-stop with uncooperative
> ATF versions.
>
> This change adds the option to suppress passing a platform parameter
> and will always pass NULL.
>
> Debug output from ATF w/ this option disabled (i.e. default):
> INFO: plat_param_from_bl2: 0x291450
> Debug output from ATF w/ this option enabled:
> INFO: plat_param_from_bl2: 0
>
> Signed-off-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>
> Tested-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>
> ---
>
> common/spl/Kconfig | 18 ++++++++++++++++--
> common/spl/spl_atf.c | 12 +++++++++++-
> 2 files changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index aef0034..9d35f41 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -721,10 +721,24 @@ config SPL_ATF
> bool "Support ARM Trusted Firmware"
> depends on ARM64
> help
> - ATF(ARM Trusted Firmware) is a component for ARM arch64 which
> - is loaded by SPL(which is considered as BL2 in ATF terminology).
> + ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
> + is loaded by SPL (which is considered as BL2 in ATF terminology).
> More detail at: https://github.com/ARM-software/arm-trusted-firmware
>
> +config SPL_ATF_NO_PLATFORM_PARAM
> + bool "Pass no platform parameter"
> + depends on SPL_ATF
> + help
> + While we expect to call a pointer to a valid FDT (or NULL)
> + as the platform parameter to an ATF, some ATF versions are
> + not U-Boot aware and have an insufficiently robust parameter
> + validation to gracefully reject a FDT being passed.
> +
> + If this option is enabled, the spl_atf os-type handler will
> + always pass NULL for the platform parameter.
> +
> + If your ATF is affected, say Y.
> +
> config TPL
> bool
> depends on SUPPORT_TPL
> diff --git a/common/spl/spl_atf.c b/common/spl/spl_atf.c
> index 63557c0..a942de9 100644
> --- a/common/spl/spl_atf.c
> +++ b/common/spl/spl_atf.c
> @@ -144,6 +144,7 @@ void spl_invoke_atf(struct spl_image_info *spl_image)
> {
> uintptr_t bl33_entry = CONFIG_SYS_TEXT_BASE;
> void *blob = spl_image->fdt_addr;
> + uintptr_t platform_param = (uintptr_t)blob;
> int node;
>
> /*
> @@ -158,8 +159,17 @@ void spl_invoke_atf(struct spl_image_info *spl_image)
> bl33_entry = spl_fit_images_get_entry(blob, node);
>
> /*
> + * If ATF_NO_PLATFORM_PARAM is set, we override the platform
> + * parameter and always pass 0. This is a workaround for
> + * older ATF versions that have insufficiently robust (or
> + * overzealous) argument validation.
> + */
> + if (CONFIG_IS_ENABLED(ATF_NO_PLATFORM_PARAM))
> + platform_param = 0;
> +
> + /*
> * We don't provide a BL3-2 entry yet, but this will be possible
> * using similar logic.
> */
> - bl31_entry(spl_image->entry_point, bl33_entry, (uintptr_t)blob);
> + bl31_entry(spl_image->entry_point, bl33_entry, platform_param);
> }
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
More information about the U-Boot
mailing list