On Tue, 9 Apr 2024 at 15:55, Caleb Connolly <caleb.conno...@linaro.org> wrote:
>
> GPT partition tables include two bytes worth of vendor defined
> attributes, per partition. ChromeOS and Qualcomm both use these (with
> different encoding!) to handle A/B slot switching with a retry counter.
>
> Expose these via the disk_partition struct so that they can be parsed by
> the relevant board code.
>
> This will be used on Qualcomm boards to determine which slot we're
> booting on so that we can flash capsule updates to the correct one.
>
> Signed-off-by: Caleb Connolly <caleb.conno...@linaro.org>
> ---
>  disk/part_efi.c | 1 +
>  include/part.h  | 1 +
>  2 files changed, 2 insertions(+)
>
> diff --git a/disk/part_efi.c b/disk/part_efi.c
> index 4ce9243ef25c..d3ce4dd01dcd 100644
> --- a/disk/part_efi.c
> +++ b/disk/part_efi.c
> @@ -292,8 +292,9 @@ int part_get_info_efi(struct blk_desc *desc, int part,
>         snprintf((char *)info->name, sizeof(info->name), "%s",
>                  print_efiname(&gpt_pte[part - 1]));
>         strcpy((char *)info->type, "U-Boot");
>         info->bootable = get_bootable(&gpt_pte[part - 1]);
> +       info->type_flags = gpt_pte[part - 
> 1].attributes.fields.type_guid_specific;
>         if (CONFIG_IS_ENABLED(PARTITION_UUIDS)) {
>                 uuid_bin_to_str(gpt_pte[part - 1].unique_partition_guid.b,
>                                 (char *)disk_partition_uuid(info),
>                                 UUID_STR_FORMAT_GUID);
> diff --git a/include/part.h b/include/part.h
> index 32ee40488563..afae51f1b933 100644
> --- a/include/part.h
> +++ b/include/part.h
> @@ -68,8 +68,9 @@ struct disk_partition {
>          * PART_BOOTABLE                the MBR bootable flag is set
>          * PART_EFI_SYSTEM_PARTITION    the partition is an EFI system 
> partition
>          */
>         int     bootable;
> +       u16     type_flags;     /* top 16 bits of GPT partition attributes    
>   */
>  #if CONFIG_IS_ENABLED(PARTITION_UUIDS)
>         char    uuid[UUID_STR_LEN + 1]; /* filesystem UUID as string, if 
> exists */
>  #endif
>  #ifdef CONFIG_PARTITION_TYPE_GUID
>
> --
> 2.44.0
>
I think this would make more sense to be sent along with the capsule
update patches
In any case
Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>

Reply via email to