[PATCH v2 2/2] arm64/efi: esrt: add missing call to efi_esrt_init()

Ard Biesheuvel ard.biesheuvel at linaro.org
Wed Feb 17 00:32:51 PST 2016


On 16 February 2016 at 21:25, Baicar, Tyler <tbaicar at codeaurora.org> wrote:
> On 2/15/2016 4:32 AM, Ard Biesheuvel wrote:
>>
>> ESRT support is built by default for all architectures that define
>> CONFIG_EFI. However, this support was not wired up yet for ARM/arm64,
>> since efi_esrt_init() was never called. So add the missing call.
>>
>> Since efi_esrt_init() uses efi_mem_desc_lookup(), which in turn relies
>> on efi.memmap having been assigned and populated completetely, add the
>> missing assignments of efi.memmap and efi.memmap->nr_map.
>>
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
>> ---
>>   drivers/firmware/efi/arm-init.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/firmware/efi/arm-init.c
>> b/drivers/firmware/efi/arm-init.c
>> index 9e15d571b53c..5c5e799bdb50 100644
>> --- a/drivers/firmware/efi/arm-init.c
>> +++ b/drivers/firmware/efi/arm-init.c
>> @@ -197,10 +197,13 @@ void __init efi_init(void)
>>         memmap.map_end = memmap.map + params.mmap_size;
>>         memmap.desc_size = params.desc_size;
>>         memmap.desc_version = params.desc_ver;
>> +       memmap.nr_map = params.mmap_size / params.desc_size;
>> +       efi.memmap = &memmap;
>>         if (uefi_init() < 0)
>>                 return;
>>   +     efi_esrt_init();
>
> This call to efi_esrt_init() is failing because efi.flags does not have
> EFI_MEMMAP set. This flag gets set at the end of reserve_regions(). I tested
> moving the set_bit() call from reserve_regions() to just before
> efi_esrt_init() and also tested moving efi_esrt_init() to just after
> reserve_regions(). Both of these options worked.

Thanks for spotting that. I moved the call around for some reason (I
don't remember why, exactly), but it indeed belongs after the call to
reserve_regions()

I will send out a v2

>>
>>         reserve_regions();
>>         early_memunmap(memmap.map, params.mmap_size);
>>         memblock_mark_nomap(params.mmap & PAGE_MASK,
>
> Thanks,
> Tyler
>
> --
> Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> a Linux Foundation Collaborative Project
>



More information about the linux-arm-kernel mailing list