[PATCH v2] disk: dos: Add all options for EFI System Partitions
Mark Kettenis
mark.kettenis at xs4all.nl
Sun Feb 25 15:23:50 CET 2024
> From: Peter Robinson <pbrobinson at gmail.com>
> Date: Sun, 25 Feb 2024 14:14:55 +0000
>
> 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
Erh...
> 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;
> + }
> +
That really didn't go well. The 0x80 check was for a different struct
member and there are missing break statements. And I suppose the
suggestion to use a switch was to bunch up the EFI partition type
cases.
ENOCOFFEE?
> return ret;
> }
>
> --
> 2.43.2
>
>
More information about the U-Boot
mailing list