Messages in this thread | | | Subject | Re: [PATCH] efi/libstub/arm64: Enable __efistub_global define in .data section | From | Victor Erminpour <> | Date | Fri, 10 Apr 2020 15:12:13 -0700 |
| |
On 4/10/20 1:09 AM, Ard Biesheuvel wrote: > On Thu, 9 Apr 2020 at 23:44, Victor Erminpour > <victor.erminpour@oracle.com> 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@oracle.com> >> --- >> 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
| |