diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2020-03-19 15:16:31 +0100 |
---|---|---|
committer | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2020-04-30 10:25:07 +0200 |
commit | 11078bb262a2a2489cbc5962f2e7faad5b288194 (patch) | |
tree | a2b5e93fc236071d7f6ea16dfe78f1a5962a5ef2 /lib | |
parent | 25801acc1fd64b284d250e8cee7c5ea0c5186f1c (diff) | |
download | u-boot-11078bb262a2a2489cbc5962f2e7faad5b288194.tar.gz u-boot-11078bb262a2a2489cbc5962f2e7faad5b288194.tar.bz2 u-boot-11078bb262a2a2489cbc5962f2e7faad5b288194.zip |
efi_loader: identify EFI system partition
In subsequent patches UEFI variables shalled be stored on the EFI system
partition. Hence we need to identify the EFI system partition.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/efi_loader/efi_disk.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c index fd8fe17567..fd3df80b0b 100644 --- a/lib/efi_loader/efi_disk.c +++ b/lib/efi_loader/efi_disk.c @@ -13,6 +13,8 @@ #include <part.h> #include <malloc.h> +struct efi_system_partition efi_system_partition; + const efi_guid_t efi_block_io_guid = EFI_BLOCK_IO_PROTOCOL_GUID; /** @@ -418,6 +420,24 @@ static efi_status_t efi_disk_add_dev( diskobj->ops.media = &diskobj->media; if (disk) *disk = diskobj; + + /* Store first EFI system partition */ + if (part && !efi_system_partition.if_type) { + int r; + disk_partition_t info; + + r = part_get_info(desc, part, &info); + if (r) + return EFI_DEVICE_ERROR; + if (info.bootable & PART_EFI_SYSTEM_PARTITION) { + efi_system_partition.if_type = desc->if_type; + efi_system_partition.devnum = desc->devnum; + efi_system_partition.part = part; + EFI_PRINT("EFI system partition: %s %d:%d\n", + blk_get_if_type_name(desc->if_type), + desc->devnum, part); + } + } return EFI_SUCCESS; } |