diff options
Diffstat (limited to 'meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0034-bootefi-Call-the-EVT_FT_FIXUP-event-handler.patch')
-rw-r--r-- | meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0034-bootefi-Call-the-EVT_FT_FIXUP-event-handler.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0034-bootefi-Call-the-EVT_FT_FIXUP-event-handler.patch b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0034-bootefi-Call-the-EVT_FT_FIXUP-event-handler.patch new file mode 100644 index 0000000000..c44b6e33c4 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0034-bootefi-Call-the-EVT_FT_FIXUP-event-handler.patch @@ -0,0 +1,56 @@ +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 + |