From 90391a7b8adaf7ebb446fec898110c06549ea975 Mon Sep 17 00:00:00 2001 From: Jianyong Wu Date: Wed, 5 Jul 2023 10:14:16 +0000 Subject: [PATCH] AArch64: don't expose FDT to kernel There is a check that if FDT is stub when ACPI table initialized in linux kernel [1]. So, if full FDT is given, FDT will be used instead of ACPI. It is aginst our primary goal to use UEFI. So, full FDT can't be given here. For simplicity, just neglict it here. Remember that this is just a workaround as we are required to pass a FDT to kernel/grub to meet Arm Base Boot Requirement 7.4.3 [2]. It can be improved by making a stub FDT and pass it through configuration table. Maybe later. Fixes: #261 Signed-off-by: Jianyong Wu [1] https://github.com/torvalds/linux/blob/d528014517f2b0531862c02865b9d4c908019dc4/arch/arm64/kernel/acpi.c#L203 [2] https://developer.arm.com/documentation/den0044/latest --- src/efi/mod.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/efi/mod.rs b/src/efi/mod.rs index 607f96bf..c8f69b97 100644 --- a/src/efi/mod.rs +++ b/src/efi/mod.rs @@ -1115,6 +1115,10 @@ pub fn efi_exec( let mut ct_index = 0; // Populate with FDT table if present + // To boot linux kernel with ACPI, we can't offer full fdt. Simply, neglect + // it. See + // https://github.com/torvalds/linux/blob/d528014517f2b0531862c02865b9d4c908019dc4/arch/arm64/kernel/acpi.c#L203 + #[cfg(not(target_arch = "aarch64"))] if let Some(fdt_entry) = info.fdt_reservation() { ct[ct_index] = efi::ConfigurationTable { vendor_guid: Guid::from_fields(