]> git.baikalelectronics.ru Git - uboot.git/commit
efi_loader: define internal implementations of install/uninstallmultiple
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Thu, 6 Oct 2022 13:08:46 +0000 (16:08 +0300)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Thu, 6 Oct 2022 20:54:58 +0000 (22:54 +0200)
commita6a2b32dc147505e3ccfdaf5b5ce2cc0cc5bc547
tree8087cfd25c3ea958447dde7f96a0d8ac96460140
parent54f5d76b02145ba4041a4152abf6603adb4fc27d
efi_loader: define internal implementations of install/uninstallmultiple

A following patch is cleaning up the core EFI code trying to remove
sequences of efi_create_handle, efi_add_protocol.

Although this works fine there's a problem with the latter since it is
usually combined with efi_delete_handle() which blindly removes all
protocols on a handle and deletes the handle.  We should try to adhere to
the EFI spec which only deletes a handle if the last instance of a protocol
has been removed.  Another problem is that efi_delete_handle() never checks
for opened protocols,  but the EFI spec defines that the caller is
responsible for ensuring that there are no references to a protocol
interface that is going to be removed.

So let's fix this by replacing all callsites of
efi_create_handle(), efi_add_protocol() , efi_delete_handle() with
Install/UninstallMultipleProtocol.

In order to do that redefine functions that can be used by the U-Boot
proper internally and add '_ext' variants that will be used from the
EFI API

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
include/efi.h
include/efi_loader.h
lib/efi_loader/efi_boottime.c
lib/efi_loader/efi_capsule.c
lib/efi_loader/efi_console.c
lib/efi_loader/efi_disk.c
lib/efi_loader/efi_load_initrd.c
lib/efi_loader/efi_root_node.c