Bootloader may need to fixup the device tree before OS can use it. e.g. a UEFI/DXE driver that has initialized a controller can add controller's clock frequency in controller node. This way OS need not to call get/set clock for that controller. Therefore, install fdt used by OS in configuration tables and associate it with device tree guid. UEFI/DXE drivers can fixup this device tree in their respective ExitBootServices events. Cc: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> Cc: linux-efi@xxxxxxxxxxxxxxx Signed-off-by: Pankaj Bansal <pankaj.bansal@xxxxxxx> --- drivers/firmware/efi/libstub/fdt.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/firmware/efi/libstub/fdt.c b/drivers/firmware/efi/libstub/fdt.c index 177654e..df862e6 100644 --- a/drivers/firmware/efi/libstub/fdt.c +++ b/drivers/firmware/efi/libstub/fdt.c @@ -265,6 +265,7 @@ efi_status_t allocate_new_fdt_and_exit_boot(efi_system_table_t *sys_table_arg, int runtime_entry_count = 0; struct efi_boot_memmap map; struct exit_boot_struct priv; + efi_guid_t fdt_guid = DEVICE_TREE_GUID; map.map = &runtime_map; map.map_size = &map_size; @@ -314,6 +315,13 @@ efi_status_t allocate_new_fdt_and_exit_boot(efi_system_table_t *sys_table_arg, goto fail_free_new_fdt; } + status = efi_call_early(install_configuration_table, &fdt_guid, + (void *)*new_fdt_addr); + if (status != EFI_SUCCESS) { + pr_efi_err(sys_table_arg, "Unable to install new device tree.\n"); + goto fail_free_new_fdt; + } + priv.runtime_map = runtime_map; priv.runtime_entry_count = &runtime_entry_count; priv.new_fdt_addr = (void *)*new_fdt_addr; -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html