From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1oWHcc-0008BS-5G for mharc-grub-devel@gnu.org; Thu, 08 Sep 2022 09:31:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56134) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oWHcW-00081v-1t for grub-devel@gnu.org; Thu, 08 Sep 2022 09:31:04 -0400 Received: from ams.source.kernel.org ([145.40.68.75]:60448) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oWHcT-000397-Vu for grub-devel@gnu.org; Thu, 08 Sep 2022 09:31:03 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 34451B820F5; Thu, 8 Sep 2022 13:31:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5586C433C1; Thu, 8 Sep 2022 13:30:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1662643859; bh=UzNRQ3yb962e2Lr4WKWCEGfo3DeAcSgsKACH3aF79i4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cWIANdGsR4J7g/6gviN0ItYdZzr7BsmTIEjGqEs0aAZvr282M7eQicyineMNTpou7 7aKToHuD+AcuM795Hp/Mm+krWY0xh1WuOG1Wsg7S4UkWyouEJYghtSqhqNnFDAoA5K ANd2fi+96ZGAIau2d+UdD58aVaRSaKrHGCsMw9U1lRwgZTRmvVqlvI8B9PTWrYFtq8 +Scjwevis4glIR99Y2m73LVDkcinEtqXEsSEOW12Gj0diBTPbS1uFlvXD6bQiR2j5n ZMRf+OnHrQdBquxH6GioqK+pmpiyXMdzMs/XTrTF/BaGg+ouLjFx2+2cLqcjk9xBql boMkez7mqnWKw== From: Ard Biesheuvel To: grub-devel@gnu.org Cc: Ard Biesheuvel , Daniel Kiper , Leif Lindholm , Nikita Ermakov , Atish Patra , Huacai Chen , Heinrich Schuchardt , dann frazier , Julian Andres Klode , Ilias Apalodimas Subject: [PATCH v4 6/6] linux: ignore FDT unless we need to modify it Date: Thu, 8 Sep 2022 15:30:17 +0200 Message-Id: <20220908133017.1464494-7-ardb@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220908133017.1464494-1-ardb@kernel.org> References: <20220908133017.1464494-1-ardb@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2707; i=ardb@kernel.org; h=from:subject; bh=UzNRQ3yb962e2Lr4WKWCEGfo3DeAcSgsKACH3aF79i4=; b=owEB7QES/pANAwAKAcNPIjmS2Y8kAcsmYgBjGe5oUb4JJCfzLAZfeCCCWETYwBeKx6/JG+O9gA96 mZTDW2KJAbMEAAEKAB0WIQT72WJ8QGnJQhU3VynDTyI5ktmPJAUCYxnuaAAKCRDDTyI5ktmPJOT7DA ChFrWFROyArT4trIdP6sXXiV4rJXJCP8JEHJmiTgILP2GpkiEm28N3emUxXDN4oBCDn5P4pYIa5RYX WqI+LYpRMlPh4TWNklDP9jWfP9ngCSqlgJqDlnNnNVvryEoBTQi4ydEWCwBoTKRoBBdYPyDs4UWyDX bXktXM2RVAMFt3HxbrInMBZpIsX05HeD7j/mw5qcOyWNqMU7r2UoPkzGr3Vm0CnTWBQQUhLDggsNF3 /F0Y/H9tO+CXSv94EqqlKpL6WwUKT8JbZtaLfBUsxfNC5voIuyXYkffgAQTCG8rleJqbToHQXdh0Ml CXnCWnAGBJdjYIclbYjMQ3ZECgF4VJQ4C0/8Z8US/JWNHvufeGzAWap00ORXyubrSyDqCdKnMs8KXt 4sBUY7Hh3A3D3mJgKrVqCDC0W5i0zWAqeDP8SEm8JKjj3iLtr6biqk/me9mSRG+56zGGypNud23KpV D/ONhN6zp4U4hYOSpbh8Lc5OBnGbY0nQVIYES7HHkUPzo= X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=145.40.68.75; envelope-from=ardb@kernel.org; helo=ams.source.kernel.org X-Spam_score_int: -70 X-Spam_score: -7.1 X-Spam_bar: ------- X-Spam_report: (-7.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Sep 2022 13:31:04 -0000 Now that we implemented support for the LoadFile2 protocol for initrd loading, there is no longer a need to pass the initrd parameters via the device tree. This means that when the LoadFile2 protocol is being used, there is no reason to update the device tree in the first place, and so we can ignore it entirely. The only remaining reason to deal with the devicetree is if we are using the 'devicetree' command to load one from disk, so tweak the logic in grub_fdt_install() to take that into account. Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm --- grub-core/loader/arm64/linux.c | 22 ++++++++++---------- grub-core/loader/efi/fdt.c | 7 +++++-- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c index 8b7fbb35fb72..36396e9f7ff5 100644 --- a/grub-core/loader/arm64/linux.c +++ b/grub-core/loader/arm64/linux.c @@ -133,21 +133,21 @@ finalize_params_linux (void) void *fdt; - fdt = grub_fdt_load (GRUB_EFI_LINUX_FDT_EXTRA_SPACE); + /* Set initrd info */ + if (initrd_start && initrd_end > initrd_start) + { + fdt = grub_fdt_load (GRUB_EFI_LINUX_FDT_EXTRA_SPACE); - if (!fdt) - goto failure; + if (!fdt) + goto failure; - node = grub_fdt_find_subnode (fdt, 0, "chosen"); - if (node < 0) - node = grub_fdt_add_subnode (fdt, 0, "chosen"); + node = grub_fdt_find_subnode (fdt, 0, "chosen"); + if (node < 0) + node = grub_fdt_add_subnode (fdt, 0, "chosen"); - if (node < 1) - goto failure; + if (node < 1) + goto failure; - /* Set initrd info */ - if (initrd_start && initrd_end > initrd_start) - { grub_dprintf ("linux", "Initrd @ %p-%p\n", (void *) initrd_start, (void *) initrd_end); diff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c index 80d70887474a..fd8093ac83c9 100644 --- a/grub-core/loader/efi/fdt.c +++ b/grub-core/loader/efi/fdt.c @@ -89,13 +89,16 @@ grub_fdt_install (void) static grub_efi_guid_t fdt_guid = GRUB_EFI_DEVICE_TREE_GUID; grub_efi_status_t status; + if (!fdt && !loaded_fdt) + return GRUB_ERR_NONE; + b = grub_efi_system_table->boot_services; - status = b->install_configuration_table (&fdt_guid, fdt); + status = b->install_configuration_table (&fdt_guid, fdt ?: loaded_fdt); if (status != GRUB_EFI_SUCCESS) return grub_error (GRUB_ERR_IO, "failed to install FDT"); grub_dprintf ("fdt", "Installed/updated FDT configuration table @ %p\n", - fdt); + fdt ?: loaded_fdt); return GRUB_ERR_NONE; } -- 2.35.1