[PATCH v3 0/4] efi_loader: add EFI_PARTITION_INFO_PROTOCOL support

Javier Martinez Canillas javierm at redhat.com
Thu Jun 19 10:33:58 CEST 2025


This patch series implements support for the EFI_PARTITION_INFO_PROTOCOL,
to provide cached partition information for GPT partition types.

The EFI specification mentions that the protocol can understand legacy MBR
partition types, but that's for backward compatibility and not implemented
by this series. It can be added as a follow-up if needed, to make it fully
compliant with the spec.

Patch #1 moves the logic to get a GPT partition table entry to a helper
part_get_gpt_pte() function.

Patch #2 exposes that helper function to be used by the efi_loader.

Patch #3 implements the actual protocol support using the mentioned helper
to get the GPT partitions table entries.

Patch #4 extends the existing block io EFI selftest to also check for some
cached data provided by the partition info protocol.

This is a v3 of the series, the v2 can be found here:

https://lists.denx.de/pipermail/u-boot/2025-June/592550.html

The EFI_PARTITION_INFO_PROTOCOL implementation is added unconditionally,
because the u-boot-size-test.sh reports the code increase is negligible:

    ./u-boot-size-test.sh qemu_arm64_lwip --all
    ...
    01: Merge patch series "list.h/treewide: get rid of no-op prefetch()"
    02: disk: efi: Move logic to get a GPT entry into a helper function
    03: disk: efi: expose the part_get_gpt_pte() helper function
    04: efi_loader: disk: add EFI_PARTITION_INFO_PROTOCOL support
    05: efi_selftest: Add basic partition info check to block io test
        5    0    0 /5              qemu_arm64_lwip
    Completed: 5 total built, 5 newly), duration 0:01:57, rate 0.04
    /tmp/qemu_arm64_lwip/add-efi-part-info-proto-v3/boards.cfg is up to date. Nothing to do.
    Summary of 5 commits for 1 boards (1 thread, 8 jobs per thread)
    01: Merge patch series "list.h/treewide: get rid of no-op prefetch()"
    02: disk: efi: Move logic to get a GPT entry into a helper function
       aarch64: (for 1/1 boards) all -64.0 text -64.0
                qemu_arm64_lwip: all -64 text -64
                   u-boot: add: 0/0, grow: 0/-1 bytes: 0/-72 (-72)
                     function                                   old     new   delta
                     part_get_info_efi                          468     396     -72
    03: disk: efi: expose the part_get_gpt_pte() helper function
       aarch64: (for 1/1 boards) all +32.0 text +32.0
                qemu_arm64_lwip: all +32 text +32
                   u-boot: add: 1/0, grow: 0/-1 bytes: 200/-164 (36)
                     function                                   old     new   delta
                     part_get_gpt_pte                             -     200    +200
                     part_get_info_efi                          396     232    -164
    04: efi_loader: disk: add EFI_PARTITION_INFO_PROTOCOL support
       aarch64: (for 1/1 boards) all +176.0 rodata +16.0 text +160.0
                qemu_arm64_lwip: all +176 rodata +16 text +160
                   u-boot: add: 0/0, grow: 1/0 bytes: 148/0 (148)
                     function                                   old     new   delta
                     static.efi_disk_add_dev                    636     784    +148
    05: efi_selftest: Add basic partition info check to block io test
       aarch64: (for 1/1 boards) all +531.0 rodata +179.0 text +352.0
                qemu_arm64_lwip: all +531 rodata +179 text +352
                   u-boot: add: 1/0, grow: 1/0 bytes: 384/0 (384)
                     function                                   old     new   delta
                     execute                                  36428   36796    +368
                     partition_info_guid                          -      16     +16
    (no errors to report)


Changes in v3:
- Add ifdef guards for {EFI,DOS}_PARTITION being disabled (Ilias Apalodimas).
- Fix build in -next due missing part_efi.h header include (Ilias Apalodimas).
- Rebase on top of -next (Ilias Apalodimas).

Changes in v2:
- Add a test for the EFI partition information protocol (Tom Rini).

Javier Martinez Canillas (4):
  disk: efi: Move logic to get a GPT entry into a helper function
  disk: efi: expose the part_get_gpt_pte() helper function
  efi_loader: disk: add EFI_PARTITION_INFO_PROTOCOL support
  efi_selftest: Add basic partition info check to block io test

 disk/part_efi.c                              | 67 ++++++++++++--------
 include/part.h                               | 14 ++++
 include/part_efi.h                           | 20 ++++++
 lib/efi_loader/efi_disk.c                    | 39 +++++++++++-
 lib/efi_selftest/efi_selftest_block_device.c | 30 +++++++++
 5 files changed, 141 insertions(+), 29 deletions(-)

-- 
2.49.0

base-commit: ce2a7fcbd565d55b1d3fdc0e68edd50a21eca7d4
branch: add-efi-part-info-proto-v3



More information about the U-Boot mailing list