Re: [PATCH] efi/libstub/arm64: Enable __efistub_global define in .data section

From: Arvind Sankar
Date: Mon Apr 13 2020 - 09:47:22 EST


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.