Hi Heinrich, Heinrich Schuchardt <xypron.g...@gmx.de> writes:
> Up to now for MBR and GPT partitions the info field 'bootable' was set to 1 > if either the partition was an EFI system partition or the bootable flag > was set. > > Turn info field 'bootable' into a bit mask with separate bits for bootable > and EFI system partition. > > This will allow us to identify the EFI system partition in the UEFI > sub-system. > > Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de> > --- > disk/part_dos.c | 10 ++++++++-- > disk/part_efi.c | 12 ++++++++---- > include/part.h | 11 ++++++++++- > 3 files changed, 26 insertions(+), 7 deletions(-) > > diff --git a/disk/part_dos.c b/disk/part_dos.c [...] > diff --git a/include/part.h b/include/part.h > index 0b5cf3d5e8..a63d1d0cda 100644 > --- a/include/part.h > +++ b/include/part.h > @@ -51,13 +51,22 @@ struct block_drvr { > #define PART_TYPE_LEN 32 > #define MAX_SEARCH_PARTITIONS 64 > > +#define PART_BOOTABLE 1 > +#define PART_EFI_SYSTEM_PARTITION 2 > + Maybe you missed my comments on the previous version [0]. As the above defines are used as bit positions, please consider using BIT() for clarity. Thanks, Punit [0] https://lists.denx.de/pipermail/u-boot/2020-March/404081.html > typedef struct disk_partition { > lbaint_t start; /* # of first block in partition */ > lbaint_t size; /* number of blocks in partition */ > ulong blksz; /* block size in bytes */ > uchar name[PART_NAME_LEN]; /* partition name > */ > uchar type[PART_TYPE_LEN]; /* string type description > */ > - int bootable; /* Active/Bootable flag is set */ > + /* > + * The bootable is a bitmask with the following fields: > + * > + * PART_BOOTABLE the MBR bootable flag is set > + * PART_EFI_SYSTEM_PARTITION the partition is an EFI system partition > + */ > + int bootable; > #if CONFIG_IS_ENABLED(PARTITION_UUIDS) > char uuid[UUID_STR_LEN + 1]; /* filesystem UUID as string, if exists > */ > #endif > -- > 2.25.1