On 4/10/20 1:09 AM, Ard Biesheuvel wrote:
On Thu, 9 Apr 2020 at 23:44, Victor Erminpour
<victor.erminpour@xxxxxxxxxx> wrote:
Enable the __efistub_global define to place variables in the
.data section for both CONFIG_ARM and CONFIG_ARM64.
This places the EFIstub sys_table variable and other EFIstub
static variables in the .data section for both CONFIG_ARM and
CONFIG_ARM64.
What does that achieve?
Hi Ard,
Without placing these global variables in .data, I get the
following errors when booting an ARM64 EFI system:
EFI stub: ERROR: Exit boot services failed.
EFI stub: ERROR: Failed to update FDT and exit boot services
I know that the ARM64 linker script is supposed to put the
.init.bss into the .init.data section, but I don't think this
is happening for all systems.
Having it explicitly enabled for CONFIG_ARM64 worked for me.
Regards,
--Victor
Signed-off-by: Victor Erminpour <victor.erminpour@xxxxxxxxxx>
---
drivers/firmware/efi/libstub/efistub.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
index c244b16..59932d6 100644
--- a/drivers/firmware/efi/libstub/efistub.h
+++ b/drivers/firmware/efi/libstub/efistub.h
@@ -25,7 +25,7 @@
#define EFI_ALLOC_ALIGN EFI_PAGE_SIZE
#endif
-#ifdef CONFIG_ARM
+#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
#define __efistub_global __section(.data)
#else
#define __efistub_global
--
Victor Hugo Erminpour
Principal Member of Technical Staff
Oracle America