On Wed, 19 Mar 2025 at 14:07, Adriano Córdova <adria...@gmail.com> wrote:
>
> Hi Ilias,
>
> El mié, 19 mar 2025 a las 6:32, Ilias Apalodimas 
> (<ilias.apalodi...@linaro.org>) escribió:
>>
>> Hi Adriano,
>>
>> [...]
>>
>> >   */
>> >  static efi_status_t efi_binary_run_dp(void *image, size_t size, void *fdt,
>> > +                                     void *initrd, size_t initd_sz,
>> >                                       struct efi_device_path *dp_dev,
>> >                                       struct efi_device_path *dp_img)
>> >  {
>> >         efi_status_t ret;
>> > +       struct efi_device_path *dp_initrd;
>> >
>> >         /* Initialize EFI drivers */
>> >         ret = efi_init_obj_list();
>> > @@ -230,6 +234,14 @@ static efi_status_t efi_binary_run_dp(void *image, 
>> > size_t size, void *fdt,
>> >         if (ret != EFI_SUCCESS)
>> >                 return ret;
>> >
>> > +       dp_initrd = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE, 
>> > (uintptr_t)initrd, initd_sz);
>>
>> Why do we need reserved memory? What the EFI stub does, is allocate a
>> new memory buffer which you later copy the initrd to.
>> I think Boot Services Data is enough.

I meant to write loader data*

>
>
> dp_initrd is freed when the efi application returns in efi_initrd_deregister. 
> Do you suggest to change it to
> Boot Sevices Data and when the efi application returns just assume that it is 
> freed?

You will still have to free it on failures which is what
efi_initrd_deregister() will do once we return from efi boot manager.
But if you define it as reserved memory, it won't be usable by the OS.
Since linux will eventually copy that memory in a buffer it allocated,
you don't have to preserve it. So you can just define it as
EFI_LOADER_DATA

>  I took the usage from:
> https://github.com/u-boot/u-boot/blob/8bc3542384e3a1219e5ffb62b79d16dddc1b1fb9/lib/efi_loader/efi_bootmgr.c#L514

This is a different use-case. In this we download and run an EFI
application from memory and I guess the assumption is that the EFI
application will return so the type doesn't matter that much as it
will eventually be freed. This obviously is not the case if the EFI
application is a kernel.
That being said, I think we can switch this to LOADER_CODE as well.
Heinrich any ideas?

Thanks
/Ilias

>
>>
>>
>> [...]
>>
>> Thanks
>> /Ilias

Reply via email to