From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: u-boot@lists.denx.de
Subject: [PATCH v2 11/17] efi_loader: add firmware management protocol for FIT image
Date: Mon, 22 Jun 2020 10:09:27 +0900 [thread overview]
Message-ID: <20200622010927.GB8935@laputa> (raw)
In-Reply-To: <CADg8p95edN5E_Exj+Kpm9hZhpDw9ugceRWbuE+fGTCGGpBKV9Q@mail.gmail.com>
On Sun, Jun 21, 2020 at 12:19:17AM +0530, Sughosh Ganu wrote:
> On Wed, 17 Jun 2020 at 08:26, AKASHI Takahiro <takahiro.akashi@linaro.org>
> wrote:
>
> > In this commit, a very simple firmware management protocol driver
> > is implemented. It will take a common FIT image firmware in a capsule
> > file and apply the data using dfu backend storage drivers via
> > update_fit() interface.
> >
> > So "dfu_alt_info" variable should be properly set to specify a device
> > and location to be updated. Please read README.dfu.
> >
> > Fit image is a common file format for firmware update on U-Boot, and
> > this protocol works neatly just as a wrapper for one.
> >
> > Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> > ---
> > include/efi_api.h | 4 +
> > include/efi_loader.h | 2 +
> > lib/efi_loader/Kconfig | 11 ++
> > lib/efi_loader/Makefile | 1 +
> > lib/efi_loader/efi_capsule.c | 12 +-
> > lib/efi_loader/efi_firmware.c | 253 ++++++++++++++++++++++++++++++++++
> > 6 files changed, 282 insertions(+), 1 deletion(-)
> > create mode 100644 lib/efi_loader/efi_firmware.c
> >
> > diff --git a/include/efi_api.h b/include/efi_api.h
> > index b062720e8220..c3fc4edbedc4 100644
> > --- a/include/efi_api.h
> > +++ b/include/efi_api.h
> > @@ -1843,6 +1843,10 @@ struct efi_signature_list {
> > EFI_GUID(0x86c77a67, 0x0b97, 0x4633, 0xa1, 0x87, \
> > 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7)
> >
> > +#define EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID \
> > + EFI_GUID(0xae13ff2d, 0x9ad4, 0x4e25, 0x9a, 0xc8, \
> > + 0x6d, 0x80, 0xb3, 0xb2, 0x21, 0x47)
> > +
> > #define EFI_IMAGE_ATTRIBUTE_IMAGE_UPDATABLE 0x1
> > #define EFI_IMAGE_ATTRIBUTE_RESET_REQUIRED 0x2
> > #define EFI_IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED 0x4
> > diff --git a/include/efi_loader.h b/include/efi_loader.h
> > index bc58c7e3c1d7..5f574533e732 100644
> > --- a/include/efi_loader.h
> > +++ b/include/efi_loader.h
> > @@ -787,6 +787,8 @@ bool efi_secure_boot_enabled(void);
> > bool efi_image_parse(void *efi, size_t len, struct efi_image_regions
> > **regp,
> > WIN_CERTIFICATE **auth, size_t *auth_len);
> >
> > +extern const struct efi_firmware_management_protocol efi_fmp_fit;
> > +
> > /* Capsule update */
> > efi_status_t EFIAPI efi_update_capsule(
> > struct efi_capsule_header **capsule_header_array,
> > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > index e1413c35e33c..305751f4b15c 100644
> > --- a/lib/efi_loader/Kconfig
> > +++ b/lib/efi_loader/Kconfig
> > @@ -86,6 +86,17 @@ config EFI_CAPSULE_FIRMWARE_MANAGEMENT
> > Select this option if you want to enable capsule-based
> > firmware update using Firmware Management Protocol.
> >
> > +config EFI_CAPSULE_FIRMWARE_FIT
> > + bool "FMP driver for FIT image"
> > + depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
> > + depends on FIT
> > + select UPDATE_FIT
> > + select DFU
> > + default n
> > + help
> > + Select this option if you want to enable firmware management
> > protocol
> > + driver for FIT image
> > +
> > config EFI_DEVICE_PATH_TO_TEXT
> > bool "Device path to text protocol"
> > default y
> > diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
> > index 67bc5c9c0907..ea1fbc4a9deb 100644
> > --- a/lib/efi_loader/Makefile
> > +++ b/lib/efi_loader/Makefile
> > @@ -24,6 +24,7 @@ obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o
> > obj-y += efi_bootmgr.o
> > obj-y += efi_boottime.o
> > obj-$(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) += efi_capsule.o
> > +obj-$(CONFIG_EFI_CAPSULE_FIRMWARE_FIT) += efi_firmware.o
> >
>
> Why can we not build this file based on
> CONFIG_EFI_CAPSULE_FIRMWARE_MANAGEMENT. That way, we do not have to declare
> the CONFIG_EFI_CAPSULE_FIRMWARE symbol on which this file is being built in
> a subsequent patch.
That is because, in some cases, efi_firmware.c won't be compiled in
as a specific platform may want to have its own protocol.
-Takahiro Akashi
> -sughosh
next prev parent reply other threads:[~2020-06-22 1:09 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-17 2:54 [PATCH v2 00/17] efi_loader: add capsule update support AKASHI Takahiro
2020-06-17 2:54 ` [PATCH v2 01/17] common: update_tftp: remove unnecessary build check AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 02/17] dfu: add a hidden reverse-dependency on UPDATE_TFTP AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 03/17] dfu: rename dfu_tftp_write() to dfu_write_by_name() AKASHI Takahiro
2020-06-20 18:35 ` Sughosh Ganu
2020-06-21 7:38 ` Lukasz Majewski
2020-06-22 0:41 ` AKASHI Takahiro
2020-06-22 7:19 ` Lukasz Majewski
2020-06-22 0:58 ` AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 04/17] common: update: add a generic interface for FIT image AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 05/17] dfu: export dfu_list AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 06/17] efi_loader: add option to initialise EFI subsystem early AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 07/17] efi_loader: define UpdateCapsule api AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 08/17] efi_loader: capsule: add capsule_on_disk support AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 09/17] efi_loader: capsule: add memory range capsule definitions AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 10/17] efi_loader: capsule: support firmware update AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 11/17] efi_loader: add firmware management protocol for FIT image AKASHI Takahiro
2020-06-20 18:39 ` Sughosh Ganu
2020-06-22 1:03 ` AKASHI Takahiro
2020-06-20 18:49 ` Sughosh Ganu
2020-06-22 1:09 ` AKASHI Takahiro [this message]
2020-06-22 7:58 ` Sughosh Ganu
2020-06-22 8:06 ` AKASHI Takahiro
2020-06-22 8:38 ` Sughosh Ganu
2020-06-17 2:55 ` [PATCH v2 12/17] dfu: add dfu_write_by_alt() AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 13/17] efi_loader: add firmware management protocol for raw image AKASHI Takahiro
2020-06-20 18:57 ` Sughosh Ganu
2020-06-22 1:21 ` AKASHI Takahiro
2020-06-22 7:53 ` Sughosh Ganu
2020-06-17 2:55 ` [PATCH v2 14/17] cmd: add "efidebug capsule" command AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 15/17] tools: add mkeficapsule command for UEFI capsule update AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 16/17] test/py: add a test for efi firmware update capsule of FIT image AKASHI Takahiro
2020-06-17 2:55 ` [PATCH v2 17/17] test/py: add a test for uefi firmware update capsule of raw image AKASHI Takahiro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200622010927.GB8935@laputa \
--to=takahiro.akashi@linaro.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox