[PATCH 2/5] filetype: add GPT support

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Fri Feb 15 12:36:55 EST 2013


On 18:32 Fri 15 Feb     , Sascha Hauer wrote:
> On Fri, Feb 15, 2013 at 02:35:14PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > GPT need to be check before MBR
> > 
> > Cc: Rob Herring <rob.herring at calxeda.com>
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> > ---
> >  common/filetype.c  |   47 +++++++++++++++++++++++++++++++++++++++++++++++
> >  include/filetype.h |    1 +
> >  2 files changed, 48 insertions(+)
> > 
> > diff --git a/common/filetype.c b/common/filetype.c
> > index 22fc621..06fa803 100644
> > --- a/common/filetype.c
> > +++ b/common/filetype.c
> > @@ -48,6 +48,7 @@ static const struct filetype_str filetype_str[] = {
> >  	[filetype_bmp] = { "BMP image", "bmp" },
> >  	[filetype_png] = { "PNG image", "png" },
> >  	[filetype_ext] = { "ext filesystem", "ext" },
> > +	[filetype_gpt] = { "GUID Partition Table", "gpt" },
> >  };
> >  
> >  const char *file_type_to_string(enum filetype f)
> > @@ -69,9 +70,52 @@ const char *file_type_to_short_string(enum filetype f)
> >  #define MBR_StartSector		8	/* MBR: Offset of Starting Sector in Partition Table Entry */
> >  #define BS_55AA			510	/* Boot sector signature (2) */
> >  #define MBR_Table		446	/* MBR: Partition table offset (2) */
> > +#define MBR_partition_size	16	/* MBR: Partition table offset (2) */
> >  #define BS_FilSysType32		82	/* File system type (1) */
> >  #define BS_FilSysType		54	/* File system type (1) */
> >  
> > +#define MBR_PART_sys_ind	4
> > +#define MBR_PART_start_sect	8
> > +#define MBR_OSTYPE_EFI_GPT	0xee
> > +
> > +static inline int pmbr_part_valid(const uint8_t *buf)
> > +{
> > +	if (buf[MBR_PART_sys_ind] == MBR_OSTYPE_EFI_GPT &&
> > +		get_unaligned_le32(&buf[MBR_PART_start_sect]) == 1UL) {
> > +		return 1;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +/**
> > + * is_gpt_valid(): test Protective MBR for validity and EFI PART
> > + * @mbr: pointer to a legacy mbr structure
> > + *
> > + * Description: Returns 1 if PMBR is valid, 0 otherwise.
> > + * Validity depends on two things:
> > + *  1) MSDOS signature is in the last two bytes of the MBR
> > + *  2) One partition of type 0xEE is found
> 
> Still wrong. This describes is_pmbr_valid, but the function is named and
> implements is_gpt_valid. I suggest implemting a real is_pmbr_valid
> function and call it from is_gpt_valid which additionally checks for the
> gpt header.

we test both pmr and EFI PART fo this is right

test Protective MBR for validity and EFI PART

so the comment is correct

Best Regards,
J.



More information about the barebox mailing list