On Tue, Nov 15, 2016 at 10:07:39PM +0100, Alexander Graf wrote:
>
>
> On 15/11/2016 22:00, Daniel Kiper wrote:
> >On Sat, Nov 12, 2016 at 12:03:33PM +0300, Andrei Borzenkov wrote:
> >>29.02.2016 02:22, Alexander Graf ??????????:
> >>>Searching for a device tree that EFI passes to us via configuration
> >>>tables
> >>>is nothing architecture specific. Move it into generic code.
> >>>
> >>>Signed-off-by: Alexander Graf <ag...@suse.de>
> >>>---
> >>> grub-core/kern/efi/init.c    | 22 ++++++++++++++++++++++
> >>> grub-core/loader/arm64/fdt.c | 24 +-----------------------
> >>> include/grub/efi/efi.h       |  2 ++
> >>> 3 files changed, 25 insertions(+), 23 deletions(-)
> >>>
> >>>diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c
> >>>index e9c85de..fb90ecd 100644
> >>>--- a/grub-core/kern/efi/init.c
> >>>+++ b/grub-core/kern/efi/init.c
> >>>@@ -72,6 +72,28 @@ grub_machine_get_bootlocation (char **device, char
> >>>**path)
> >>>     }
> >>> }
> >>>
> >>>+void *
> >>>+grub_efi_get_firmware_fdt (void)
> >>>+{
> >>>+  grub_efi_configuration_table_t *tables;
> >>>+  grub_efi_guid_t fdt_guid = GRUB_EFI_DEVICE_TREE_GUID;
> >>>+  void *firmware_fdt = NULL;
> >>>+  unsigned int i;
> >>>+
> >>>+  /* Look for FDT in UEFI config tables. */
> >>>+  tables = grub_efi_system_table->configuration_table;
> >>>+
> >>>+  for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
> >>>+    if (grub_memcmp (&tables[i].vendor_guid, &fdt_guid, sizeof
> >>>(fdt_guid)) == 0)
> >>>+      {
> >>>+  firmware_fdt = tables[i].vendor_table;
> >>>+  grub_dprintf ("linux", "found registered FDT @ %p\n", firmware_fdt);
> >>>+  break;
> >>>+      }
> >>>+
> >>>+  return firmware_fdt;
> >>>+}
> >>>+
> >>
> >>Is it relevant for x86? I cannot even find anything related to FDT or
> >>"device tree" in UEFI spec, it falls under vendor extensions. What other
> >>use it has except in Linux loader?
> >>
> >>I really fail to see why it should be moved into core until at least one
> >>more non-trivial caller is present.
> >
> >Hmmm... It looks that I was too fast. TBH, I can agree to some extend.
> >Should we revert this patch or just #ifdef relevant code? Revert seems
> >better for me.
>
> Uh, the point of the function was to share code between 32bit and 64bit
> arm platforms which are completely separate archs.
>
> There's also effort underway to run with device tree on x86:
>
>   https://plus.google.com/+ChristopherFriedt/posts/SfDifuC1xsR

OK but right know we build FDT code for every EFI platform. This
is not nice because not every EFI platform uses/knows FDT (at least
today). So, I think that we should revert that patch and then you
can provide another patch which puts FDT code in separate file, e.g.
grub-core/kern/efi/fdt.c build only on platforms supporting FDT.
Does it make sense?

Daniel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to