On Sat, Apr 11, 2020 at 08:39:00AM +0200, Ard Biesheuvel wrote: > On Sat, 11 Apr 2020 at 00:12, Victor Erminpour > <victor.erminpour@xxxxxxxxxx> wrote: > > > > > > > > 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 > > > > Which boot loader are you using? Does this involve shim? > > Also, does it help if you add 'efi=no_disable_early_pci_dma'? > > > > > > 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. > > > > OK, thanks for the report. However, we will be removing > __efistub_global entirely during the next cycle, so this is not the > right fix. Victor, can you attach your kernel configuration and the output of objdump -t drivers/firmware/efi/libstub/lib.a on the non-working kernel and the working kernel? Also, is this failing with the latest git kernel or some other version? Thanks.