58 lines
1.3 KiB
Diff
58 lines
1.3 KiB
Diff
From 86782e882e9542f5f402e00cd87efb36ad0552d3 Mon Sep 17 00:00:00 2001
|
|
From: Peter Robinson <pbrobinson@gmail.com>
|
|
Date: Sat, 2 Mar 2024 11:17:42 +0000
|
|
Subject: [PATCH v4] disk: dos: Add all options for EFI System Partitions
|
|
|
|
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@gmail.com>
|
|
---
|
|
|
|
v2:
|
|
- Add 0x0c option
|
|
- Make hex constants consistent
|
|
- Move from if to switch statement
|
|
v3:
|
|
- Fix switch brain fart
|
|
v4:
|
|
- Drop boot_ind out of switch
|
|
|
|
disk/part_dos.c | 13 ++++++++++++-
|
|
1 file changed, 12 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/disk/part_dos.c b/disk/part_dos.c
|
|
index 567ead7511d..a35181dff4f 100644
|
|
--- a/disk/part_dos.c
|
|
+++ b/disk/part_dos.c
|
|
@@ -40,10 +40,21 @@ static int get_bootable(dos_partition_t *p)
|
|
{
|
|
int ret = 0;
|
|
|
|
- if (p->sys_ind == 0xef)
|
|
+ switch (p->sys_ind) {
|
|
+ case 0x01:
|
|
+ case 0x06:
|
|
+ case 0x0b:
|
|
+ case 0x0c:
|
|
+ case 0xef:
|
|
ret |= PART_EFI_SYSTEM_PARTITION;
|
|
+ break;
|
|
+ default:
|
|
+ break;
|
|
+ }
|
|
+
|
|
if (p->boot_ind == 0x80)
|
|
ret |= PART_BOOTABLE;
|
|
+
|
|
return ret;
|
|
}
|
|
|
|
--
|
|
2.44.0
|
|
|