mbox series

[RFC,0/4] qemu: arm64: Add support for uefi firmware management protocol routines

Message ID 20200323071201.5992-1-sughosh.ganu@linaro.org
Headers show
Series qemu: arm64: Add support for uefi firmware management protocol routines | expand

Message

Sughosh Ganu March 23, 2020, 7:11 a.m. UTC
This series is based on the capsule update rfc series sent by Takahiro
Akashi[1].

These routines have been tested on the qemu arm64 platform for
updating the u-boot firmware through the capsule-on-disk functionality
of the uefi spec. A sub-command has been added under the 'efidebug
capsule' category of commands for initiating the firmware update.

The capsule file is placed on the efi system partition(esp), under the
EFI/UpdateCapsule directory. The BootNext and BootXXXX variables are
set accordingly by using the 'efidebug boot add' command.

The capsule update can then be initiated by the following command
'efidebug capsule disk-update'.

The feature can be enabled through the following config options
CONFIG_EFI_CAPSULE_UPDATE=y
CONFIG_EFI_CAPSULE_ON_DISK=y
CONFIG_EFI_CAPSULE_UPDATE_FIRMWARE=y
CONFIG_EFI_FIRMWARE_MANAGEMENT_PROTOCOL=y
CONFIG_CMD_EFIDEBUG=y

The GenerateCapsule.py script in edk2 has been used to generate the
capsule file.

Todo
* Capsule authentication support.
* Implement firmware version support.
* Invoke capsule update functionality during platform boot. This might
  be taken up by Takahiro.

[1] - https://lists.denx.de/pipermail/u-boot/2020-March/403038.html

Sughosh Ganu (4):
  efidebug: capsule: Add a command to update capsule on disk
  semihosting: Change semihosting file operation functions into global
    symbols
  semihosting: Add support for writing to a file
  qemu: arm64: Add support for efi firmware management protocol routines

 arch/arm/lib/semihosting.c              |  48 ++++++-
 board/emulation/qemu-arm/Kconfig        |  12 ++
 board/emulation/qemu-arm/Makefile       |   1 +
 board/emulation/qemu-arm/qemu_efi_fmp.c | 173 ++++++++++++++++++++++++
 cmd/efidebug.c                          |  14 ++
 include/semihosting.h                   |  14 ++
 6 files changed, 257 insertions(+), 5 deletions(-)
 create mode 100644 board/emulation/qemu-arm/qemu_efi_fmp.c
 create mode 100644 include/semihosting.h

Comments

Heinrich Schuchardt March 23, 2020, 12:11 p.m. UTC | #1
On 3/23/20 8:11 AM, Sughosh Ganu wrote:
> This series is based on the capsule update rfc series sent by Takahiro
> Akashi[1].
>
> These routines have been tested on the qemu arm64 platform for
> updating the u-boot firmware through the capsule-on-disk functionality
> of the uefi spec. A sub-command has been added under the 'efidebug
> capsule' category of commands for initiating the firmware update.
>
> The capsule file is placed on the efi system partition(esp), under the
> EFI/UpdateCapsule directory. The BootNext and BootXXXX variables are
> set accordingly by using the 'efidebug boot add' command.
>
> The capsule update can then be initiated by the following command
> 'efidebug capsule disk-update'.

Thanks you for your work on capsule updates.

I am missing here an overview description of the system setup.

I saw a filename bl33.bin. So assume I that you want to use ATF?
In how far is ATF needed for testing the capsule update?

Please, mention the use of semihosting in the overview.

Best regards

Heinrich

>
> The feature can be enabled through the following config options
> CONFIG_EFI_CAPSULE_UPDATE=y
> CONFIG_EFI_CAPSULE_ON_DISK=y
> CONFIG_EFI_CAPSULE_UPDATE_FIRMWARE=y
> CONFIG_EFI_FIRMWARE_MANAGEMENT_PROTOCOL=y
> CONFIG_CMD_EFIDEBUG=y
>
> The GenerateCapsule.py script in edk2 has been used to generate the
> capsule file.
>
> Todo
> * Capsule authentication support.
> * Implement firmware version support.
> * Invoke capsule update functionality during platform boot. This might
>   be taken up by Takahiro.
>
> [1] - https://lists.denx.de/pipermail/u-boot/2020-March/403038.html
>
> Sughosh Ganu (4):
>   efidebug: capsule: Add a command to update capsule on disk
>   semihosting: Change semihosting file operation functions into global
>     symbols
>   semihosting: Add support for writing to a file
>   qemu: arm64: Add support for efi firmware management protocol routines
>
>  arch/arm/lib/semihosting.c              |  48 ++++++-
>  board/emulation/qemu-arm/Kconfig        |  12 ++
>  board/emulation/qemu-arm/Makefile       |   1 +
>  board/emulation/qemu-arm/qemu_efi_fmp.c | 173 ++++++++++++++++++++++++
>  cmd/efidebug.c                          |  14 ++
>  include/semihosting.h                   |  14 ++
>  6 files changed, 257 insertions(+), 5 deletions(-)
>  create mode 100644 board/emulation/qemu-arm/qemu_efi_fmp.c
>  create mode 100644 include/semihosting.h
>
Sughosh Ganu March 24, 2020, 3:55 a.m. UTC | #2
On Mon, 23 Mar 2020 at 17:41, Heinrich Schuchardt <xypron.glpk at gmx.de>
wrote:

> On 3/23/20 8:11 AM, Sughosh Ganu wrote:
> > This series is based on the capsule update rfc series sent by Takahiro
> > Akashi[1].
> >
> > These routines have been tested on the qemu arm64 platform for
> > updating the u-boot firmware through the capsule-on-disk functionality
> > of the uefi spec. A sub-command has been added under the 'efidebug
> > capsule' category of commands for initiating the firmware update.
> >
> > The capsule file is placed on the efi system partition(esp), under the
> > EFI/UpdateCapsule directory. The BootNext and BootXXXX variables are
> > set accordingly by using the 'efidebug boot add' command.
> >
> > The capsule update can then be initiated by the following command
> > 'efidebug capsule disk-update'.
>
> Thanks you for your work on capsule updates.
>
> I am missing here an overview description of the system setup.
>
> I saw a filename bl33.bin. So assume I that you want to use ATF?
> In how far is ATF needed for testing the capsule update?
>
> Please, mention the use of semihosting in the overview.
>

Thanks for looking into this. I will add description of my system setup in
the next version. I think i will wait for Takahiro to send his next version
of capsule update changes. Will base my next version on top of that.
Meanwhile, it would be great if you can review all the patches in the
series, so that I can incorporate any review comments in my next version.

-sughosh


>
> Best regards
>
> Heinrich
>
> >
> > The feature can be enabled through the following config options
> > CONFIG_EFI_CAPSULE_UPDATE=y
> > CONFIG_EFI_CAPSULE_ON_DISK=y
> > CONFIG_EFI_CAPSULE_UPDATE_FIRMWARE=y
> > CONFIG_EFI_FIRMWARE_MANAGEMENT_PROTOCOL=y
> > CONFIG_CMD_EFIDEBUG=y
> >
> > The GenerateCapsule.py script in edk2 has been used to generate the
> > capsule file.
> >
> > Todo
> > * Capsule authentication support.
> > * Implement firmware version support.
> > * Invoke capsule update functionality during platform boot. This might
> >   be taken up by Takahiro.
> >
> > [1] - https://lists.denx.de/pipermail/u-boot/2020-March/403038.html
> >
> > Sughosh Ganu (4):
> >   efidebug: capsule: Add a command to update capsule on disk
> >   semihosting: Change semihosting file operation functions into global
> >     symbols
> >   semihosting: Add support for writing to a file
> >   qemu: arm64: Add support for efi firmware management protocol routines
> >
> >  arch/arm/lib/semihosting.c              |  48 ++++++-
> >  board/emulation/qemu-arm/Kconfig        |  12 ++
> >  board/emulation/qemu-arm/Makefile       |   1 +
> >  board/emulation/qemu-arm/qemu_efi_fmp.c | 173 ++++++++++++++++++++++++
> >  cmd/efidebug.c                          |  14 ++
> >  include/semihosting.h                   |  14 ++
> >  6 files changed, 257 insertions(+), 5 deletions(-)
> >  create mode 100644 board/emulation/qemu-arm/qemu_efi_fmp.c
> >  create mode 100644 include/semihosting.h
> >
>
>