File 0001-arm64-Move-firmware-fdt-search-into-global-function.patch of Package grub2.4793
From d39fb5b7650be9c95144a46b0b80518f1b19e7b0 Mon Sep 17 00:00:00 2001
From: Alexander Graf <agraf@suse.de>
Date: Mon, 4 Jan 2016 22:00:04 +0100
Subject: [PATCH 1/2] arm64: Move firmware fdt search into global function
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 <agraf@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(-)
Index: grub-2.02~beta2/grub-core/kern/efi/init.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/kern/efi/init.c
+++ grub-2.02~beta2/grub-core/kern/efi/init.c
@@ -72,6 +72,28 @@ grub_machine_get_bootlocation (char **de
}
}
+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;
+}
+
void
grub_efi_fini (void)
{
Index: grub-2.02~beta2/include/grub/efi/efi.h
===================================================================
--- grub-2.02~beta2.orig/include/grub/efi/efi.h
+++ grub-2.02~beta2/include/grub/efi/efi.h
@@ -86,6 +86,8 @@ extern void (*EXPORT_VAR(grub_efi_net_co
char **device,
char **path);
+void *EXPORT_FUNC(grub_efi_get_firmware_fdt)(void);
+
grub_addr_t grub_efi_modules_addr (void);
void grub_efi_mm_init (void);