[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