[U-Boot] [PATCH 03/23] efi_loader: support 16 protocols per efi_object

Rob Clark robdclark at gmail.com
Sat Sep 2 18:14:22 UTC 2017


On Thu, Aug 31, 2017 at 10:01 AM, Alexander Graf <agraf at suse.de> wrote:
> On 08/27/2017 12:51 AM, Heinrich Schuchardt wrote:
>>
>> 8 protocols per efi_object is insufficient for iPXE.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>> ---
>>   include/efi_loader.h | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/efi_loader.h b/include/efi_loader.h
>> index 6f71a6202b..e8fb4fbb0a 100644
>> --- a/include/efi_loader.h
>> +++ b/include/efi_loader.h
>> @@ -99,8 +99,8 @@ struct efi_handler {
>>   struct efi_object {
>>         /* Every UEFI object is part of a global object list */
>>         struct list_head link;
>> -       /* We support up to 8 "protocols" an object can be accessed
>> through */
>> -       struct efi_handler protocols[8];
>> +       /* We support up to 16 "protocols" an object can be accessed
>> through */
>> +       struct efi_handler protocols[16];
>
>
> Can you try to convert it into a list instead? Leif tried to make the UEFI
> Shell work and stumbled over the same limitation, so I guess a static array
> won't cut it for long.
>

Can we go w/ fixed 16 protocols length for now?  A list is a
definitely a better option, and it will be easier after "efi_loader:
refactor boot device and loaded_image handling" (which gets rid of the
statically initialized efi_object's).  After that we can drop the
fixed length array and add an 'void append_protocol(efiobj, guid,
handle)'  helper fairly easily.

BR,
-R


More information about the U-Boot mailing list