Skip to content

Commit

Permalink
efi/fdt: 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: #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 17, 2023
1 parent 44c2273 commit 056fc41
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/efi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -614,7 +614,6 @@ pub extern "efiapi" fn install_configuration_table(guid: *mut Guid, table: *mut

for entry in ct.iter_mut() {
if entry.vendor_guid == unsafe { *guid } {
entry.vendor_table = table;
if table.is_null() {
entry.vendor_guid = INVALID_GUID;
entry.vendor_table = null_mut();
Expand Down Expand Up @@ -1115,6 +1114,8 @@ pub fn efi_exec(
let mut ct_index = 0;

// Populate with FDT table if present
// To boot 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
2 changes: 1 addition & 1 deletion src/fat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1196,6 +1196,6 @@ mod tests {
assert_eq!(crate::common::ascii_strip(&s), "..");
let mut s = [0_u8; 12];
super::name_to_str("ABCDEFGHIJK", &mut s);
assert_eq!(crate::common::ascii_strip(&s), "ABCDEFGHIJK");
assert_eq!(crate::common::ascii_strip(&s), "ABCDEFGH.IJK");
}
}

0 comments on commit 056fc41

Please sign in to comment.