[RFC PATCH 6/6] mkeficapsule: Remove raw and FIT GUID types

Sughosh Ganu sughosh.ganu at linaro.org
Thu Mar 24 15:51:09 CET 2022


On Thu, 24 Mar 2022 at 19:55, Michal Simek <michal.simek at xilinx.com> wrote:
>
>
>
> On 3/24/22 13:39, Sughosh Ganu wrote:
> > While building a capsule, the GUID value of that specific image is to
> > be passed through the --guid command option to the mkeficapsule
> > tool. This renders the EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID and
> > EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID values superfluous. Remove the
> > --raw and --fit command line options as well.
> >
> > Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> > ---
> >   tools/eficapsule.h   |  8 --------
> >   tools/mkeficapsule.c | 26 +-------------------------
> >   2 files changed, 1 insertion(+), 33 deletions(-)
> >
> > diff --git a/tools/eficapsule.h b/tools/eficapsule.h
> > index 69c9c58c2f..d63b831443 100644
> > --- a/tools/eficapsule.h
> > +++ b/tools/eficapsule.h
> > @@ -37,14 +37,6 @@ typedef struct {
> >       EFI_GUID(0x6dcbd5ed, 0xe82d, 0x4c44, 0xbd, 0xa1, \
> >                0x71, 0x94, 0x19, 0x9a, 0xd9, 0x2a)
> >
> > -#define EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID \
> > -     EFI_GUID(0xae13ff2d, 0x9ad4, 0x4e25, 0x9a, 0xc8, \
> > -              0x6d, 0x80, 0xb3, 0xb2, 0x21, 0x47)
> > -
> > -#define EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID \
> > -     EFI_GUID(0xe2bb9c06, 0x70e9, 0x4b14, 0x97, 0xa3, \
> > -              0x5a, 0x79, 0x13, 0x17, 0x6e, 0x3f)
> > -
> >   #define EFI_CERT_TYPE_PKCS7_GUID \
> >       EFI_GUID(0x4aafd29d, 0x68df, 0x49ee, 0x8a, 0xa9, \
> >                0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7)
> > diff --git a/tools/mkeficapsule.c b/tools/mkeficapsule.c
> > index c118335b93..5f74d23b9e 100644
> > --- a/tools/mkeficapsule.c
> > +++ b/tools/mkeficapsule.c
> > @@ -27,17 +27,11 @@
> >   static const char *tool_name = "mkeficapsule";
> >
> >   efi_guid_t efi_guid_fm_capsule = EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID;
> > -efi_guid_t efi_guid_image_type_uboot_fit =
> > -             EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID;
> > -efi_guid_t efi_guid_image_type_uboot_raw =
> > -             EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID;
> >   efi_guid_t efi_guid_cert_type_pkcs7 = EFI_CERT_TYPE_PKCS7_GUID;
> >
> > -static const char *opts_short = "frg:i:I:v:p:c:m:dh";
> > +static const char *opts_short = "g:i:I:v:p:c:m:dh";
> >
> >   static struct option options[] = {
> > -     {"fit", no_argument, NULL, 'f'},
> > -     {"raw", no_argument, NULL, 'r'},
> >       {"guid", required_argument, NULL, 'g'},
> >       {"index", required_argument, NULL, 'i'},
> >       {"instance", required_argument, NULL, 'I'},
> > @@ -54,8 +48,6 @@ static void print_usage(void)
> >       fprintf(stderr, "Usage: %s [options] <image blob> <output file>\n"
> >               "Options:\n"
> >
> > -             "\t-f, --fit                   FIT image type\n"
> > -             "\t-r, --raw                   raw image type\n"
> >               "\t-g, --guid <guid string>    guid for image blob type\n"
> >               "\t-i, --index <index>         update image index\n"
> >               "\t-I, --instance <instance>   update hardware instance\n"
> > @@ -606,22 +598,6 @@ int main(int argc, char **argv)
> >                       break;
> >
> >               switch (c) {
> > -             case 'f':
> > -                     if (guid) {
> > -                             fprintf(stderr,
> > -                                     "Image type already specified\n");
> > -                             exit(EXIT_FAILURE);
> > -                     }
> > -                     guid = &efi_guid_image_type_uboot_fit;
> > -                     break;
> > -             case 'r':
> > -                     if (guid) {
> > -                             fprintf(stderr,
> > -                                     "Image type already specified\n");
> > -                             exit(EXIT_FAILURE);
> > -                     }
> > -                     guid = &efi_guid_image_type_uboot_raw;
> > -                     break;
> >               case 'g':
> >                       if (guid) {
> >                               fprintf(stderr,
>
> Can you please find a way how to export guid based on what you build?
> I think the best would be when capsules are enable to generated them directly as
> the part of build process with proper guids.

I don't know how that can be done in a generic way. A platform might
have more than one updatable image. So for doing what you are
suggesting, we will need to a) pass the board for which the capsule is
generated, and b) for which image in that board is the capsule
generated. Currently, the mkeficapsule command parameters are on
pretty much similar lines to what we have in the EDK2 GenerateCapsule
tool. Can you not have a script for the xilinx boards which does what
you are suggesting. That script can populate the GUID and image index
values and then call the mkeficapsule tool.

-sughosh


More information about the U-Boot mailing list