On Thu, 9 Dec 2021 at 07:02, AKASHI Takahiro <takahiro.aka...@linaro.org> wrote:
> On Wed, Dec 08, 2021 at 01:10:51PM +0530, Sughosh Ganu wrote: > > hi Patrick, > > > > On Tue, 7 Dec 2021 at 21:05, Patrick DELAUNAY < > patrick.delau...@foss.st.com> > > wrote: > > > > > Hi Sugosh > > > > > > On 11/25/21 8:01 AM, Sughosh Ganu wrote: > > > > > > Add function to get the gpt header and partition entries filled. These > > > > > > would be used subsequently for multi bank firmware update support on > > > > > > devices where the images reside on GPT partitions. > > > > > > > > > > > > Signed-off-by: Sughosh Ganu <sughosh.g...@linaro.org> < > sughosh.g...@linaro.org> > > > > > > --- > > > > > > disk/part_efi.c | 10 ++++++++++ > > > > > > include/part.h | 14 ++++++++++++++ > > > > > > 2 files changed, 24 insertions(+) > > > > > > > > > > > > diff --git a/disk/part_efi.c b/disk/part_efi.c > > > > > > index 0ca7effc32..792b9218a9 100644 > > > > > > --- a/disk/part_efi.c > > > > > > +++ b/disk/part_efi.c > > > > > > @@ -216,6 +216,16 @@ int get_disk_guid(struct blk_desc * dev_desc, > char *guid) > > > > > > return 0; > > > > > > } > > > > > > +int get_gpt_hdr_parts(struct blk_desc *desc, gpt_header *gpt_head, > > > > > > + gpt_entry **gpt_pte) > > > > > > +{ > > > > > > + /* This function validates and fills in the GPT header and PTE's */ > > > > > > + if (find_valid_gpt(desc, gpt_head, gpt_pte) != 1) > > > > > > + return -EINVAL; > > > > > > + > > > > > > + return 0; > > > > > > +} > > > > > > + > > > > > > void part_print_efi(struct blk_desc *dev_desc) > > > > > > { > > > > > > ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, > dev_desc->blksz); > > > > > > diff --git a/include/part.h b/include/part.h > > > > > > index b66b07a1f0..8e86485b97 100644 > > > > > > --- a/include/part.h > > > > > > +++ b/include/part.h > > > > > > @@ -345,6 +345,20 @@ struct part_driver { > > > > > > #if CONFIG_IS_ENABLED(EFI_PARTITION) > > > > > > /* disk/part_efi.c */ > > > > > > + > > > > > > +/** > > > > > > + * get_gpt_hdr_parts() - Get information on the GPT Header and > > > > > > + * Partition Table Entries > > > > > > + * > > > > > > + * @param desc - block device descriptor > > > > > > + * @param gpt_h - pointer to GPT header representation > > > > > > > > > > > > gpt_h need to be allocated / DMA alligned by caller > > > > > > > > Will add this comment to the description. > > > > > > > > > > > > > + * @param gpt_e - pointer to GPT partition table entries > > > > > > > > > > > > gpt_e is allocated in this fucntion need to freed by caller > > > > > > > > Will add this comment to the description. > > > > > > > > > > > + * > > > > > > + * @return - zero on success, otherwise error > > > > > > + */ > > > > > > +int get_gpt_hdr_parts(struct blk_desc *desc, gpt_header *gpt_head, > > > > > > + gpt_entry **gpt_pte); > > > > > > + > > > > > > /** > > > > > > * write_gpt_table() - Write the GUID Partition Table to disk > > > > > > * > > > > > > no need to export the low level function "find_valid_gpt" > > > > > > > > find_valid_gpt is not being exported. It is defined statically in > > part_efi.c. Do i misunderstand your comment? > > > > > > > > > > > > > the same services are already provided by part_get_info() ? > > > > > > ST Restricted > > > > > > 2 information are used in the serie > > > > > > > > > > > > => gpt_head->num_partition_entries > > > > > > => &gpt_pte[i].partition_type_guid > > > > > > > > > > > > > > > > > > type_guid is available in disk_partition, > > > > > > and num_partition_entries is not needed (replaced by > MAX_SEARCH_PARTITIONS) > > > > > > > > > > > > something like: > > > > > > > > > > > > struct disk_partition info; > > > > > > > > > > > > for (p = 1; p < MAX_SEARCH_PARTITIONS; p++) { > > > > > > if (part_get_info(desc, p, &info)) > > > > > > continue; > > > > > > => info.type_guid > > > > > > } > > > > > > > > I had actually explored using part_get_info. But the type_guid field is > > actually a char string. While I need the guid value to compare it using > > guidcmp. Which is the reason I introduced get_gpt_hdr_parts. > > Think of using uuid_str_to_bin() if this is the only reason. > Will check if i can use this function. Thanks. -sughosh > > -Takahiro Akashi > > > > -sughosh > > > > > > > > > > Regards > > > > > > > > > > > > Patrick > > > > > > >