diff mbox series

[3/3] stm32mp: stm32prog: Add support of FWU_MDATA partition type

Message ID 20230608170941.3.I2c67e801f791e9b397c7a39c6f9ac503930f1203@changeid
State Accepted
Commit dac5b065125cc1b6733097b826cc3cd322a670a0
Delegated to: Patrice Chotard
Headers show
Series [1/3] stm32mp: stm32prog: Add support of ENV partition type | expand

Commit Message

Patrick Delaunay June 8, 2023, 3:09 p.m. UTC
Add support of "FWU_MDATA" partition type in flashlayout to select
the TF-A firmware update metadata partition type guid, associated to
U-Boot "system" partition type guid, FWU_MDATA_GUID introduced by
commit 2eaedc95164f ("FWU: Add FWU metadata structure and driver for
accessing metadata") and used in gpt_get_mdata_partitions() for
commit 554b38f7a532 ("FWU: Add FWU metadata access driver for GPT
partitioned block devices")

See also recommendation in FWU-PSA-A_DEN0118_1.0ALP3.pdf
  4.1.2 Metadata integration with GPT
  When embedded in a GPT, each metadata replica occupies a single
  partition with PartitionTypeGUID = metadata_uuid.
  UUID = 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

 arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c | 11 +++++++++++
 arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h |  1 +
 2 files changed, 12 insertions(+)

Comments

Patrice CHOTARD June 13, 2023, 6:21 a.m. UTC | #1
On 6/8/23 17:09, Patrick Delaunay wrote:
> Add support of "FWU_MDATA" partition type in flashlayout to select
> the TF-A firmware update metadata partition type guid, associated to
> U-Boot "system" partition type guid, FWU_MDATA_GUID introduced by
> commit 2eaedc95164f ("FWU: Add FWU metadata structure and driver for
> accessing metadata") and used in gpt_get_mdata_partitions() for
> commit 554b38f7a532 ("FWU: Add FWU metadata access driver for GPT
> partitioned block devices")
> 
> See also recommendation in FWU-PSA-A_DEN0118_1.0ALP3.pdf
>   4.1.2 Metadata integration with GPT
>   When embedded in a GPT, each metadata replica occupies a single
>   partition with PartitionTypeGUID = metadata_uuid.
>   UUID = 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c | 11 +++++++++++
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h |  1 +
>  2 files changed, 12 insertions(+)
> 
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> index 07369919620e..a2ff5558a519 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> @@ -63,6 +63,12 @@ static const efi_guid_t uuid_mmc[3] = {
>  	ROOTFS_MMC2_UUID
>  };
>  
> +/*
> + * GUID value defined in the FWU specification for identification
> + * of the FWU metadata partition.
> + */
> +#define FWU_MDATA_UUID "8a7a84a0-8387-40f6-ab41-a8b9a5a60d23"
> +
>  /* FIP type partition UUID used by TF-A*/
>  #define FIP_TYPE_UUID "19D5DF83-11B0-457B-BE2C-7559C13142A5"
>  
> @@ -430,6 +436,8 @@ static int parse_type(struct stm32prog_data *data,
>  		}
>  	} else if (!strcmp(p, "FIP")) {
>  		part->part_type = PART_FIP;
> +	} else if (!strcmp(p, "FWU_MDATA")) {
> +		part->part_type = PART_FWU_MDATA;
>  	} else if (!strcmp(p, "ENV")) {
>  		part->part_type = PART_ENV;
>  	} else if (!strcmp(p, "System")) {
> @@ -1140,6 +1148,9 @@ static int create_gpt_partitions(struct stm32prog_data *data)
>  			case PART_FIP:
>  				type_str = FIP_TYPE_UUID;
>  				break;
> +			case PART_FWU_MDATA:
> +				type_str = FWU_MDATA_UUID;
> +				break;
>  			case PART_ESP:
>  				/* EFI System Partition */
>  				type_str = "system";
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> index a6fb9d5e9cc5..02b286be8182 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> @@ -105,6 +105,7 @@ struct stm32_header_v2 {
>  enum stm32prog_part_type {
>  	PART_BINARY,
>  	PART_FIP,
> +	PART_FWU_MDATA,
>  	PART_ENV,
>  	PART_SYSTEM,
>  	PART_FILESYSTEM,
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>

Thanks
Patrice
Patrice CHOTARD June 16, 2023, 11:39 a.m. UTC | #2
On 6/8/23 17:09, Patrick Delaunay wrote:
> Add support of "FWU_MDATA" partition type in flashlayout to select
> the TF-A firmware update metadata partition type guid, associated to
> U-Boot "system" partition type guid, FWU_MDATA_GUID introduced by
> commit 2eaedc95164f ("FWU: Add FWU metadata structure and driver for
> accessing metadata") and used in gpt_get_mdata_partitions() for
> commit 554b38f7a532 ("FWU: Add FWU metadata access driver for GPT
> partitioned block devices")
> 
> See also recommendation in FWU-PSA-A_DEN0118_1.0ALP3.pdf
>   4.1.2 Metadata integration with GPT
>   When embedded in a GPT, each metadata replica occupies a single
>   partition with PartitionTypeGUID = metadata_uuid.
>   UUID = 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c | 11 +++++++++++
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h |  1 +
>  2 files changed, 12 insertions(+)
> 
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> index 07369919620e..a2ff5558a519 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> @@ -63,6 +63,12 @@ static const efi_guid_t uuid_mmc[3] = {
>  	ROOTFS_MMC2_UUID
>  };
>  
> +/*
> + * GUID value defined in the FWU specification for identification
> + * of the FWU metadata partition.
> + */
> +#define FWU_MDATA_UUID "8a7a84a0-8387-40f6-ab41-a8b9a5a60d23"
> +
>  /* FIP type partition UUID used by TF-A*/
>  #define FIP_TYPE_UUID "19D5DF83-11B0-457B-BE2C-7559C13142A5"
>  
> @@ -430,6 +436,8 @@ static int parse_type(struct stm32prog_data *data,
>  		}
>  	} else if (!strcmp(p, "FIP")) {
>  		part->part_type = PART_FIP;
> +	} else if (!strcmp(p, "FWU_MDATA")) {
> +		part->part_type = PART_FWU_MDATA;
>  	} else if (!strcmp(p, "ENV")) {
>  		part->part_type = PART_ENV;
>  	} else if (!strcmp(p, "System")) {
> @@ -1140,6 +1148,9 @@ static int create_gpt_partitions(struct stm32prog_data *data)
>  			case PART_FIP:
>  				type_str = FIP_TYPE_UUID;
>  				break;
> +			case PART_FWU_MDATA:
> +				type_str = FWU_MDATA_UUID;
> +				break;
>  			case PART_ESP:
>  				/* EFI System Partition */
>  				type_str = "system";
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> index a6fb9d5e9cc5..02b286be8182 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> @@ -105,6 +105,7 @@ struct stm32_header_v2 {
>  enum stm32prog_part_type {
>  	PART_BINARY,
>  	PART_FIP,
> +	PART_FWU_MDATA,
>  	PART_ENV,
>  	PART_SYSTEM,
>  	PART_FILESYSTEM,
Applied to u-boot-stm/next

Thanks

Patrice
diff mbox series

Patch

diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
index 07369919620e..a2ff5558a519 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
@@ -63,6 +63,12 @@  static const efi_guid_t uuid_mmc[3] = {
 	ROOTFS_MMC2_UUID
 };
 
+/*
+ * GUID value defined in the FWU specification for identification
+ * of the FWU metadata partition.
+ */
+#define FWU_MDATA_UUID "8a7a84a0-8387-40f6-ab41-a8b9a5a60d23"
+
 /* FIP type partition UUID used by TF-A*/
 #define FIP_TYPE_UUID "19D5DF83-11B0-457B-BE2C-7559C13142A5"
 
@@ -430,6 +436,8 @@  static int parse_type(struct stm32prog_data *data,
 		}
 	} else if (!strcmp(p, "FIP")) {
 		part->part_type = PART_FIP;
+	} else if (!strcmp(p, "FWU_MDATA")) {
+		part->part_type = PART_FWU_MDATA;
 	} else if (!strcmp(p, "ENV")) {
 		part->part_type = PART_ENV;
 	} else if (!strcmp(p, "System")) {
@@ -1140,6 +1148,9 @@  static int create_gpt_partitions(struct stm32prog_data *data)
 			case PART_FIP:
 				type_str = FIP_TYPE_UUID;
 				break;
+			case PART_FWU_MDATA:
+				type_str = FWU_MDATA_UUID;
+				break;
 			case PART_ESP:
 				/* EFI System Partition */
 				type_str = "system";
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
index a6fb9d5e9cc5..02b286be8182 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
@@ -105,6 +105,7 @@  struct stm32_header_v2 {
 enum stm32prog_part_type {
 	PART_BINARY,
 	PART_FIP,
+	PART_FWU_MDATA,
 	PART_ENV,
 	PART_SYSTEM,
 	PART_FILESYSTEM,