Patchwork [U-Boot,V3] part: show efi partition name when print out partition info

login
register
mail settings
Submitter Lei Wen
Date Sept. 8, 2011, 4:11 a.m.
Message ID <1315455079-13051-1-git-send-email-leiwen@marvell.com>
Download mbox | patch
Permalink /patch/113867/
State Accepted
Commit 6eecc0307927fee1ff70151980b3a8c02ffeb947
Headers show

Comments

Lei Wen - Sept. 8, 2011, 4:11 a.m.
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 <leiwen@marvell.com>
---
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(-)
Lei Wen - Sept. 29, 2011, 2:14 a.m.
Hi Wolfgang,

On Thu, Sep 8, 2011 at 12:11 PM, Lei Wen <leiwen@marvell.com> 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 <leiwen@marvell.com>
> ---
> 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 <ide.h>
>  #include <malloc.h>
>  #include "part_efi.h"
> +#include <linux/ctype.h>
>
>  #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
Marek Vasut - Sept. 29, 2011, 4:16 p.m.
On Thursday, September 29, 2011 04:14:40 AM Lei Wen wrote:
> Hi Wolfgang,
> 
> On Thu, Sep 8, 2011 at 12:11 PM, Lei Wen <leiwen@marvell.com> wrote:
> > Previous output:

[...]

> 
> How about merge this patch included in 2011.09 release? :)
> 
> Thanks,
> Lei

Hi Lei,

I can't speak for Wolfgang, but I think we're pretty late in rc2 now.
Lei Wen - Sept. 30, 2011, 1:45 a.m.
On Fri, Sep 30, 2011 at 12:16 AM, Marek Vasut <marek.vasut@gmail.com> wrote:
> On Thursday, September 29, 2011 04:14:40 AM Lei Wen wrote:
>> Hi Wolfgang,
>>
>> On Thu, Sep 8, 2011 at 12:11 PM, Lei Wen <leiwen@marvell.com> wrote:
>> > Previous output:
>
> [...]
>
>>
>> How about merge this patch included in 2011.09 release? :)
>>
>> Thanks,
>> Lei
>
> Hi Lei,
>
> I can't speak for Wolfgang, but I think we're pretty late in rc2 now.

Em... I understand...
How about queue this patch for the next v2011.12 release?
I just don't know how the patches is managed in uboot now. The
patchwork also cannot get enough info for this.

Thanks,
Lei
Lei Wen - Oct. 5, 2011, 2:07 a.m.
Hi,

On Fri, Sep 30, 2011 at 9:45 AM, Lei Wen <adrian.wenl@gmail.com> wrote:
> On Fri, Sep 30, 2011 at 12:16 AM, Marek Vasut <marek.vasut@gmail.com> wrote:
>> On Thursday, September 29, 2011 04:14:40 AM Lei Wen wrote:
>>> Hi Wolfgang,
>>>
>>> On Thu, Sep 8, 2011 at 12:11 PM, Lei Wen <leiwen@marvell.com> wrote:
>>> > Previous output:
>>
>> [...]
>>
>>>
>>> How about merge this patch included in 2011.09 release? :)
>>>
>>> Thanks,
>>> Lei
>>
>> Hi Lei,
>>
>> I can't speak for Wolfgang, but I think we're pretty late in rc2 now.
>
> Em... I understand...
> How about queue this patch for the next v2011.12 release?
> I just don't know how the patches is managed in uboot now. The
> patchwork also cannot get enough info for this.
>

Any feedback to this?...

Thanks,
Lei
Wolfgang Denk - Oct. 6, 2011, 6:42 p.m.
Dear Lei Wen,

In message <1315455079-13051-1-git-send-email-leiwen@marvell.com> you 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 <leiwen@marvell.com>
> ---
> 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(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Patch

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 <ide.h>
 #include <malloc.h>
 #include "part_efi.h"
+#include <linux/ctype.h>
 
 #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;