[U-Boot] [PATCH 2/4] efi_loader: add udevice to EFI device-path mapping

Heinrich Schuchardt
2017-07-25T17:05:10Z

On 07/25/2017 06:46 PM, Alexander Graf wrote:
>
>
> On 25.07.17 15:57, Rob Clark wrote:
>> So the static bootefi_device_obj is making things slightly awkward for
>> efi_load_image() from a file-path. And really it should just go away,
>> and instead we should plug in the appropriate diskobj (or netobj) to
>> the loaded_image_obj at boot time. Also we should nuke
>> bootefi_device_path. And since we need to construct a new
>> loaded_image_obj in efi_load_image(), probably split out a helper to
>> fill that out properly and plug in the correct boot device-path, etc,
>> etc, so we don't have too many different places constructing the same
>> sort of object and forgetting to install some protocols in one place
>> or another.
>>
>> And since there are a lot of places we need to map to device-path and
>> back, I'm starting to thing the sane way to do all this without
>> breaking legacy (!CONFIG_DM) is to introduce a efi_device_path.c and
>> efi_device_path_legacy.c. Move all the hacky stuff of current
>> devicepath construction into efi_device_path_legacy.c. Add some
>> device-path parsing/matching stuff to efi_device_path_util.c (which
>> probably just be efi_device_path_to_text.c renamed and then spiffed
>> out with some more device-path helpers), which would be shared in
>> common in legacy and CONFIG_DM cases.
>>
>> Sound semi-reasonable? I'm not sure if this intersects too badly with
>
> Sounds reasonable to me :).
>
>> other stuff Heinrich is working on?
>
> I don't know - I'll let him comment.
>

OpenProtocol should manage a lock table of type
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY[] per protocol.
I am trying to implement this table which is also
needed by OpenProtocolInformation, CloseProtocol,
ConnectController, and DisconnectConntroller.

Best regards

Heinrich

>>
>> (Also, small logistical question.. anyone know how to do
>> "obj-$(!CONFIG_DM) += efi_boot_device_legacy.o"?)
>
> I would do
>
> ifeq ($(CONFIG_DM),y)
> obj-y += efi_boot_device_dm.o
> else
> obj-y += efi_boot_device_nodm.o
> endif
>
>
> Alex
>