[PATCH v2] disk: dos: Add all options for EFI System Partitions

Peter Robinson pbrobinson at gmail.com
Sun Feb 25 15:14:55 CET 2024


The EFI spec states that the ESP can be any of FAT12/16/32 but for
compatibility doesn't necssarily require the partition to be the
EFI partition table ID of 0xef. A number of arm devices will not
find their firmware on a FAT partition with an ID of 0xef so also
allow the original FAT12/16/32 partition IDs as they are also
permissable for an ESP.

Signed-off-by: Peter Robinson <pbrobinson at gmail.com>
---

v2:
- Add 0x0c option
- Make hex constants consistent
- Move from if to switch statement

 disk/part_dos.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/disk/part_dos.c b/disk/part_dos.c
index 567ead7511d..ab855adf347 100644
--- a/disk/part_dos.c
+++ b/disk/part_dos.c
@@ -40,10 +40,23 @@ static int get_bootable(dos_partition_t *p)
 {
 	int ret = 0;
 
-	if (p->sys_ind == 0xef)
+	switch (p->sys_ind){
+	case 0x01:
 		ret |= PART_EFI_SYSTEM_PARTITION;
-	if (p->boot_ind == 0x80)
+	case 0x06:
+		ret |= PART_EFI_SYSTEM_PARTITION;
+	case 0x0b:
+		ret |= PART_EFI_SYSTEM_PARTITION;
+	case 0x0c:
+		ret |= PART_EFI_SYSTEM_PARTITION;
+	case 0xef:
+		ret |= PART_EFI_SYSTEM_PARTITION;
+	case 0x80:
 		ret |= PART_BOOTABLE;
+	default:
+		break;
+	}
+
 	return ret;
 }
 
-- 
2.43.2



More information about the U-Boot mailing list