Hi Caleb,

Thank you for the patch.

On mar., avril 09, 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>

Reviewed-by: Mattijs Korpershoek <mkorpersh...@baylibre.com>

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

Reply via email to