| From 829e5d3a505452fbdb420432dc885903332a8cdc Mon Sep 17 00:00:00 2001 |
| From: Sughosh Ganu <sughosh.ganu@linaro.org> |
| Date: Thu, 21 Sep 2023 14:15:13 +0100 |
| Subject: [PATCH 34/38] bootefi: Call the EVT_FT_FIXUP event handler |
| |
| 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@linaro.org> |
| Upstream-Status: Submitted [RFC: https://lore.kernel.org/u-boot/aca7e6fa-2dec-a7c5-e47e-84c5ffa6f9b7@gmx.de/T/#m16d14ee960427cc88066bdcdd76f0a26738bb66d] |
| --- |
| cmd/bootefi.c | 18 ++++++++++++++++++ |
| 1 file changed, 18 insertions(+) |
| |
| diff --git a/cmd/bootefi.c b/cmd/bootefi.c |
| index 5c0afec154..f9588b66c7 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); |
| |
| if (CONFIG_IS_ENABLED(EFI_TCG2_PROTOCOL_MEASURE_DTB)) { |
| ret = efi_tcg2_measure_dtb(fdt); |
| -- |
| 2.25.1 |
| |