Am 18. Juni 2021 12:51:12 MESZ schrieb Ilias Apalodimas <[email protected]>: >From: Masami Hiramatsu <[email protected]> > >When running the efidebug capsule disk-update command, the efi_fmp_raw >protocol installation is failed with 2 (EFI_INVALID_PARAMETER) as >below. This is because the code passes efi_root instaed of handle.
instead Is the problem that two protocols with the same GUID are installed on the same handle? > >=> efidebug capsule disk-update >EFI: Call: efi_install_multiple_protocol_interfaces( &handle, >&efi_guid_firmware_management_protocol, &efi_fmp_fit, NULL) > EFI: Entry efi_install_multiple_protocol_interfaces(00000000fbaf5988) >EFI: Call: efi_install_protocol_interface( handle, protocol, >EFI_NATIVE_INTERFACE, protocol_interface) >EFI: Entry efi_install_protocol_interface(00000000fbaf5988, >86c77a67-0b97-4633-a187-49104d0685c7, 0, 00000000fbfa6ee8) > EFI: new handle 00000000fbb37520 > EFI: Exit: efi_install_protocol_interface: 0 >EFI: 0 returned by efi_install_protocol_interface( handle, protocol, >EFI_NATIVE_INTERFACE, protocol_interface) > EFI: Exit: efi_install_multiple_protocol_interfaces: 0 >EFI: 0 returned by efi_install_multiple_protocol_interfaces( &handle, >&efi_guid_firmware_management_protocol, &efi_fmp_fit, NULL) >EFI: Call: efi_install_multiple_protocol_interfaces( &efi_root, >&efi_guid_firmware_management_protocol, &efi_fmp_raw, NULL) > EFI: Entry efi_install_multiple_protocol_interfaces(00000000fbfec648) >EFI: Call: efi_install_protocol_interface( handle, protocol, >EFI_NATIVE_INTERFACE, protocol_interface) >EFI: Entry efi_install_protocol_interface(00000000fbfec648, >86c77a67-0b97-4633-a187-49104d0685c7, 0, 00000000fbfa6f18) > EFI: handle 00000000fbaf8520 > EFI: Exit: efi_install_protocol_interface: 2 >EFI: 2 returned by efi_install_protocol_interface( handle, protocol, >EFI_NATIVE_INTERFACE, protocol_interface) > EFI: Exit: efi_install_multiple_protocol_interfaces: 2 >EFI: 2 returned by efi_install_multiple_protocol_interfaces( &efi_root, >&efi_guid_firmware_management_protocol, &efi_fmp_raw, NULL) >Command failed, result=1 > >To fix this issue, pass the handle variable as same as the efi_fmp_fit >installation. You can not install twice protocols with the same GUID one one handle What do you mean by same variable? > >Signed-off-by: Masami Hiramatsu <[email protected]> >Signed-off-by: Ilias Apalodimas <[email protected]> >--- >v1 is at https://lists.denx.de/pipermail/u-boot/2021-June/452097.html >changes since v1: >- split patches >- pick up Masami's patch fixing the efi_root issue >- Don't use 'choice' on Kconfig sicne we need both of the FMPs >installed for sandbox testing > instead just make them mutually exclusive with 'depends on' I can't see ''depends on" in this patch. Best regards Heinrich >- Only install the FMPs if CONFIG_EFI_HAVE_CAPSULE_SUPPORT is selected > lib/efi_loader/efi_capsule.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/lib/efi_loader/efi_capsule.c >b/lib/efi_loader/efi_capsule.c >index 9ead0d2c7816..71d3d1e523ce 100644 >--- a/lib/efi_loader/efi_capsule.c >+++ b/lib/efi_loader/efi_capsule.c >@@ -939,7 +939,7 @@ efi_status_t __weak >arch_efi_load_capsule_drivers(void) > if (IS_ENABLED(CONFIG_EFI_CAPSULE_FIRMWARE_RAW)) { > handle = NULL; > ret = EFI_CALL(efi_install_multiple_protocol_interfaces( >- &efi_root, >+ &handle, > &efi_guid_firmware_management_protocol, > &efi_fmp_raw, NULL)); > }

