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>
Showing
- include/efi.h 2 additions, 0 deletionsinclude/efi.h
- include/efi_loader.h 4 additions, 2 deletionsinclude/efi_loader.h
- lib/efi_loader/efi_boottime.c 159 additions, 55 deletionslib/efi_loader/efi_boottime.c
- lib/efi_loader/efi_capsule.c 8 additions, 7 deletionslib/efi_loader/efi_capsule.c
- lib/efi_loader/efi_console.c 8 additions, 6 deletionslib/efi_loader/efi_console.c
- lib/efi_loader/efi_disk.c 6 additions, 4 deletionslib/efi_loader/efi_disk.c
- lib/efi_loader/efi_load_initrd.c 7 additions, 8 deletionslib/efi_loader/efi_load_initrd.c
- lib/efi_loader/efi_root_node.c 24 additions, 24 deletionslib/efi_loader/efi_root_node.c
Loading
Please register or sign in to comment