Skip to content

Commit

Permalink
AArch64: don't expose FDT to kernel
Browse files Browse the repository at this point in the history
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: cloud-hypervisor#261
Signed-off-by: Jianyong Wu <[email protected]>

[1] https://github.com/torvalds/linux/blob/d528014517f2b0531862c02865b9d4c908019dc4/arch/arm64/kernel/acpi.c#L203
[2] https://developer.arm.com/documentation/den0044/latest
  • Loading branch information
jongwu committed Jul 20, 2023
1 parent d551946 commit 3e5cf85
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/efi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down

0 comments on commit 3e5cf85

Please sign in to comment.