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>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
1af680d5bc
commit
05c4c9e21a
@@ -37,12 +37,14 @@
|
||||
#define EFIAPI __attribute__((ms_abi))
|
||||
#define efi_va_list __builtin_ms_va_list
|
||||
#define efi_va_start __builtin_ms_va_start
|
||||
#define efi_va_copy __builtin_ms_va_copy
|
||||
#define efi_va_arg __builtin_va_arg
|
||||
#define efi_va_end __builtin_ms_va_end
|
||||
#else
|
||||
#define EFIAPI asmlinkage
|
||||
#define efi_va_list va_list
|
||||
#define efi_va_start va_start
|
||||
#define efi_va_copy va_copy
|
||||
#define efi_va_arg va_arg
|
||||
#define efi_va_end va_end
|
||||
#endif /* __x86_64__ */
|
||||
|
||||
Reference in New Issue
Block a user