
Am 02.09.2017 um 20:14 schrieb Rob Clark robdclark@gmail.com:
On Thu, Aug 31, 2017 at 10:01 AM, Alexander Graf agraf@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@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.
Sure, of course :)
Alex
BR, -R