From b4414f4a4a8986378a33600046cbe1a917267119 Mon Sep 17 00:00:00 2001 From: Stephen Warren Date: Mon, 8 Oct 2012 08:14:37 +0000 Subject: [PATCH] disk: part_efi: set bootable flag in partition objects A partition is considered bootable if it either has the "legacy BIOS bootable" flag set, or if the partition type UUID matches the standard "system" type. Signed-off-by: Stephen Warren --- disk/part_efi.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/disk/part_efi.c b/disk/part_efi.c index d563509584..7a39d52f8e 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -133,6 +133,15 @@ static void uuid_string(unsigned char *uuid, char *str) } } +static efi_guid_t system_guid = PARTITION_SYSTEM_GUID; + +static inline int is_bootable(gpt_entry *p) +{ + return p->attributes.fields.legacy_bios_bootable || + !memcmp(&(p->partition_type_guid), &system_guid, + sizeof(efi_guid_t)); +} + /* * Public Functions (include/part.h) */ @@ -219,6 +228,7 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, int part, sprintf((char *)info->name, "%s", print_efiname(&gpt_pte[part - 1])); sprintf((char *)info->type, "U-Boot"); + info->bootable = is_bootable(&gpt_pte[part - 1]); #ifdef CONFIG_PARTITION_UUIDS uuid_string(gpt_pte[part - 1].unique_partition_guid.b, info->uuid); #endif -- 2.39.5