From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lei Wen Date: Thu, 29 Sep 2011 10:14:40 +0800 Subject: [U-Boot] [PATCH V3] part: show efi partition name when print out partition info In-Reply-To: <1315455079-13051-1-git-send-email-leiwen@marvell.com> References: <20110907192154.6C99E140875D@gemini.denx.de> <1315455079-13051-1-git-send-email-leiwen@marvell.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Wolfgang, On Thu, Sep 8, 2011 at 12:11 PM, Lei Wen wrote: > Previous output: > Marvell>> ?mmc part > > Partition Map for MMC device 1 ?-- ? Partition Type: EFI > > Part ?Start LBA ?End LBA > gpt1 ?0x8C00 ? ?0xCBFF > gpt2 ?0xCC00 ? ?0x57BFF > gpt3 ?0x57C00 ? ?0xA2BFF > gpt4 ?0xA2C00 ? ?0xECBFDE > > With the patch, the output becomes: > Marvell>> mmc part > > Partition Map for MMC device 1 ?-- ? Partition Type: EFI > > Part ? ?Name ? ? ? ? ? ? ? ? ? ?Start LBA ? ? ? End LBA > ?1 ? ? ramdisk ? ? ? ? ? ? ? ? 0x00008C00 ? ? ?0x0000CBFF > ?2 ? ? system ? ? ? ? ? ? ? ? ?0x0000CC00 ? ? ?0x00057BFF > ?3 ? ? userdata ? ? ? ? ? ? ? ?0x00057C00 ? ? ?0x000A2BFF > ?4 ? ? remaining ? ? ? ? ? ? ? 0x000A2C00 ? ? ?0x00ECBFDE > > Signed-off-by: Lei Wen > --- > Changelog: > V1: align the efi part name output to the left > V2: correct patch description for this new alignment > V3: Remove the magic number definition, and reuse the same > ? ?number used by partition_name. Fix loop overflow issue. > > ?disk/part_efi.c | ? 24 ++++++++++++++++++++---- > ?disk/part_efi.h | ? ?3 ++- > ?2 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/disk/part_efi.c b/disk/part_efi.c > index 1b04c27..0a513c6 100644 > --- a/disk/part_efi.c > +++ b/disk/part_efi.c > @@ -35,6 +35,7 @@ > ?#include > ?#include > ?#include "part_efi.h" > +#include > > ?#if defined(CONFIG_CMD_IDE) || \ > ? ? defined(CONFIG_CMD_MG_DISK) || \ > @@ -99,6 +100,20 @@ static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t * dev_desc, > > ?static int is_pte_valid(gpt_entry * pte); > > +static char *print_efiname(gpt_entry *pte) > +{ > + ? ? ? static char name[PARTNAME_SZ + 1]; > + ? ? ? int i; > + ? ? ? for (i = 0; i < PARTNAME_SZ; i++) { > + ? ? ? ? ? ? ? u8 c; > + ? ? ? ? ? ? ? c = pte->partition_name[i] & 0xff; > + ? ? ? ? ? ? ? c = (c && !isprint(c)) ? '.' : c; > + ? ? ? ? ? ? ? name[i] = c; > + ? ? ? } > + ? ? ? name[PARTNAME_SZ] = 0; > + ? ? ? return name; > +} > + > ?/* > ?* Public Functions (include/part.h) > ?*/ > @@ -122,12 +137,12 @@ void print_part_efi(block_dev_desc_t * dev_desc) > > ? ? ? ?debug("%s: gpt-entry at 0x%08X\n", __FUNCTION__, (unsigned int)*pgpt_pte); > > - ? ? ? printf("Part ?Start LBA ?End LBA\n"); > + ? ? ? printf("Part\tName\t\t\tStart LBA\tEnd LBA\n"); > ? ? ? ?for (i = 0; i < le32_to_int(gpt_head.num_partition_entries); i++) { > > ? ? ? ? ? ? ? ?if (is_pte_valid(&(*pgpt_pte)[i])) { > - ? ? ? ? ? ? ? ? ? ? ? printf("%s%d ?0x%llX ? ?0x%llX\n", GPT_ENTRY_NAME, > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (i + 1), > + ? ? ? ? ? ? ? ? ? ? ? printf("%3d\t%-18s\t0x%08llX\t0x%08llX\n", (i + 1), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print_efiname(&(*pgpt_pte)[i]), > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?le64_to_int((*pgpt_pte)[i].starting_lba), > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?le64_to_int((*pgpt_pte)[i].ending_lba)); > ? ? ? ? ? ? ? ?} else { > @@ -169,7 +184,8 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, int part, > ? ? ? ? ? ? ? ? ? ? - info->start; > ? ? ? ?info->blksz = GPT_BLOCK_SIZE; > > - ? ? ? sprintf((char *)info->name, "%s%d", GPT_ENTRY_NAME, part); > + ? ? ? sprintf((char *)info->name, "%s", > + ? ? ? ? ? ? ? ? ? ? ? print_efiname(&(*pgpt_pte)[part - 1])); > ? ? ? ?sprintf((char *)info->type, "U-Boot"); > > ? ? ? ?debug("%s: start 0x%lX, size 0x%lX, name %s", __FUNCTION__, > diff --git a/disk/part_efi.h b/disk/part_efi.h > index 6bbb06b..5903e7c 100644 > --- a/disk/part_efi.h > +++ b/disk/part_efi.h > @@ -117,13 +117,14 @@ typedef struct _gpt_entry_attributes { > ? ? ? ?unsigned long long type_guid_specific:16; > ?} __attribute__ ((packed)) gpt_entry_attributes; > > +#define PARTNAME_SZ ? ?(72 / sizeof(efi_char16_t)) > ?typedef struct _gpt_entry { > ? ? ? ?efi_guid_t partition_type_guid; > ? ? ? ?efi_guid_t unique_partition_guid; > ? ? ? ?unsigned char starting_lba[8]; > ? ? ? ?unsigned char ending_lba[8]; > ? ? ? ?gpt_entry_attributes attributes; > - ? ? ? efi_char16_t partition_name[72 / sizeof(efi_char16_t)]; > + ? ? ? efi_char16_t partition_name[PARTNAME_SZ]; > ?} > ?__attribute__ ((packed)) gpt_entry; > > -- > 1.7.0.4 > How about merge this patch included in 2011.09 release? :) Thanks, Lei