Hi,

2021年6月19日(土) 4:22 Heinrich Schuchardt <[email protected]>:
>
> 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

Oops, it's my typo.

>
> Is the problem that two protocols with the same GUID are installed on the 
> same handle?

Actually, the returned handle is ignored in both cases. That "handle"
is the local variable, and the handle is set to NULL before installing
FMP in both cases.

>
>
> >
> >=> 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?

Ah, yes. The description might not be correct. The handle is
initialized right before installing a new protocol with the same GUID
(previous one is discarded at that point).

>
> >
> >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.

Aha, I think that comment is for the 2nd patch in the series.

Thank you,

>
> 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));
> >       }
>


-- 
Masami Hiramatsu

Reply via email to