[RFC PATCH 4/5] bootefi: Call the EVT_FT_FIXUP event handler

Heinrich Schuchardt xypron.glpk at gmx.de
Sat Aug 26 12:27:55 CEST 2023


On 8/26/23 11:06, Sughosh Ganu wrote:
> The bootefi command passes the devicetree to the kernel through the
> EFI config table. Call the event handlers for fixing the devicetree
> before jumping into the kernel. This removes any devicetree nodes
> and/or properties that are specific only to U-Boot, and are not to be
> passed to the OS.
>
> Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> ---
>   cmd/bootefi.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
>
> diff --git a/cmd/bootefi.c b/cmd/bootefi.c
> index f73d6eb0e2..c359a46ec4 100644
> --- a/cmd/bootefi.c
> +++ b/cmd/bootefi.c
> @@ -237,6 +237,23 @@ static void *get_config_table(const efi_guid_t *guid)
>   	return NULL;
>   }
>
> +/**
> + * event_notify_dt_fixup() - call ft_fixup event
> + *
> + * @fdt:	address of the device tree to be passed to the kernel
> + *		through the configuration table
> + * Return:	None
> + */
> +static void event_notify_dt_fixup(void *fdt)
> +{
> +	int ret;
> +	struct event_ft_fixup fixup = {0};
> +
> +	fixup.tree.fdt = fdt;
> +	ret = event_notify(EVT_FT_FIXUP, &fixup, sizeof(fixup));
> +	if (ret)
> +		printf("Error: %d: FDT Fixup event failed\n", ret);
> +}
>   #endif /* !CONFIG_IS_ENABLED(GENERATE_ACPI_TABLE) */
>
>   /**
> @@ -318,6 +335,7 @@ efi_status_t efi_install_fdt(void *fdt)
>   	efi_carve_out_dt_rsv(fdt);
>
>   	efi_try_purge_kaslr_seed(fdt);
> +	event_notify_dt_fixup(fdt);

The event is already triggered in image_setup_libfdt(). Don't trigger it
twice.

Best regards

Heinrich

>
>   	if (CONFIG_IS_ENABLED(EFI_TCG2_PROTOCOL_MEASURE_DTB)) {
>   		ret = efi_tcg2_measure_dtb(fdt);



More information about the U-Boot mailing list