
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