Pull request efi-next-20250104

Dear Tom,
The following changes since commit ec9263b4f15c4cf82eb6a211c67baa6385065b8e:
Fix neighbor discovery ethernet address saving (2025-01-01 14:40:04 -0600)
are available in the Git repository at:
https://source.denx.de/u-boot/custodians/u-boot-efi.git tags/efi-next-20250104
for you to fetch changes up to ce190e1b33b8c0e1228f4123759dfa1981c202de:
efi: Correct ECPT table GUID (2025-01-04 02:17:06 +0100)
Gitlab CI reported no issues: https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/24075
---------------------------------------------------------------- Pull request efi-next-20250104
Documentation:
* doc: develop: Fix typos and wording in binman/binman.rst * doc: develop: Fix typos and wording in gdb.rst * doc: sandbox: Fix the "sb" command name * doc/develop/distro.rst: Better document upstream definition of extlinux.conf
UEFI:
With this pull request the UEFI sub-system detects all boot devices even if they have not been probed before. If this adds to much boot delay individual bootmeths and bootdevs can be disabled via the customizing.
* efi_loader: avoid writing message in Exit() boot service * efi_loader: run bootdev_hunt() to find ESP * efi_loader: update EFI specification version * cmd: efidebug: update output of memory attributes * efi_loader: Don't warn if the TCG2 FinalEvents table is not installed * cmd: bootmenu: add parameter -e for UEFI boot options * efi_loader: Update startimage_exit self-test to check error * efi: Correct ECPT table GUID
Others:
Building the API demo application for riscv64 is supported.
* API: unify platform_sys_info() implementations * examples: implement _start and syscall for RISC-V * examples: use architecture specific memset() on RISC-V * examples: use QEMU compatible LOAD_ADDR on RISC-V * test: fix test_extension.py * configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION * CI: xilinx_versal_virt: disable USB_DWC3 * net: eth_bootdev_hunt() should not run DHCP
---------------------------------------------------------------- Adriano Cordova (1): efi_loader: Expose efi_reinstall_protocol_interface in efi_loader.h
Aleksandar Gerasimovski (1): efi_loader: fix pe reloc pointer overrun
Heinrich Schuchardt (13): API: unify platform_sys_info() implementations examples: implement _start and syscall for RISC-V examples: use architecture specific memset() on RISC-V examples: use QEMU compatible LOAD_ADDR on RISC-V efi_loader: avoid writing message in Exit() boot service test: fix test_extension.py configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION CI: xilinx_versal_virt: disable USB_DWC3 net: eth_bootdev_hunt() should not run DHCP cmd: bootmenu: add parameter -e for UEFI boot options efi_loader: run bootdev_hunt() to find ESP efi_loader: update EFI specification version cmd: efidebug: update output of memory attributes
Ilias Apalodimas (1): efi_loader: Don't warn if the TCG2 FinalEvents table is not installed
Lothar Rubusch (2): doc: develop: Fix typos and wording in binman/binman.rst doc: develop: Fix typos and wording in gdb.rst
Olivier L'Heureux (1): doc: sandbox: Fix the "sb" command name
Simon Glass (1): efi_loader: Update startimage_exit self-test to check error
Tom Rini (1): doc/develop/distro.rst: Better document upstream definition of extlinux.conf
Yang Gang (1): efi: Correct ECPT table GUID
.azure-pipelines.yml | 1 + .gitlab-ci.yml | 1 + api/Makefile | 9 +- api/api_platform-arm.c | 35 ---- api/api_platform-mips.c | 29 --- api/api_platform.c | 25 +++ cmd/bootmenu.c | 39 +++- cmd/efidebug.c | 5 +- configs/sandbox_defconfig | 1 - doc/develop/distro.rst | 15 +- doc/develop/gdb.rst | 10 +- doc/usage/cmd/bootmenu.rst | 13 +- doc/usage/cmd/sb.rst | 6 +- examples/api/Makefile | 7 +- examples/api/crt0.S | 32 ++++ include/efi.h | 2 + include/efi_api.h | 8 +- include/efi_loader.h | 5 + lib/efi_loader/efi_boottime.c | 9 +- lib/efi_loader/efi_image_loader.c | 2 +- lib/efi_loader/efi_setup.c | 8 + lib/efi_loader/efi_tcg2.c | 2 +- lib/efi_selftest/efi_selftest_startimage_exit.c | 6 +- net/eth_bootdev.c | 30 +-- test/py/tests/test_extension.py | 4 +- tools/binman/binman.rst | 234 ++++++++++++------------ 26 files changed, 300 insertions(+), 238 deletions(-) delete mode 100644 api/api_platform-arm.c delete mode 100644 api/api_platform-mips.c create mode 100644 api/api_platform.c

Hi Heinrich,
On 2025-01-04 04:19, Heinrich Schuchardt wrote:
Dear Tom,
The following changes since commit ec9263b4f15c4cf82eb6a211c67baa6385065b8e:
Fix neighbor discovery ethernet address saving (2025-01-01 14:40:04 -0600)
are available in the Git repository at:
https://source.denx.de/u-boot/custodians/u-boot-efi.git tags/efi-next-20250104
for you to fetch changes up to ce190e1b33b8c0e1228f4123759dfa1981c202de:
efi: Correct ECPT table GUID (2025-01-04 02:17:06 +0100)
Gitlab CI reported no issues: https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/24075
Pull request efi-next-20250104
Documentation:
- doc: develop: Fix typos and wording in binman/binman.rst
- doc: develop: Fix typos and wording in gdb.rst
- doc: sandbox: Fix the "sb" command name
- doc/develop/distro.rst: Better document upstream definition of
extlinux.conf
UEFI:
With this pull request the UEFI sub-system detects all boot devices even if they have not been probed before. If this adds to much boot delay individual bootmeths and bootdevs can be disabled via the customizing.
- efi_loader: avoid writing message in Exit() boot service
- efi_loader: run bootdev_hunt() to find ESP
This patch still completely changes how standard boot operates, from lazy probing boot devices from fastest to slowest (probe time) as described in the standard boot documentation [1], to probing all boot devices all at once before checking for a bootmeth/bootflow.
This slows down script and extlinux booing on my Rockchip board by several seconds because now pcie and usb is probed before current fast bootflow from mmc devices is tested.
Will you work on a fix for this or do you recommend disabling the efi_mgr bootmeth or similar? E.g. something like the diff below.
Similarly if I understand correctly the priority of efi_mgr bootmeth, first regardless of configured bootmeth order, is the main blocker for sunxi to fully move to standard boot.
diff --git a/boot/Kconfig b/boot/Kconfig index 20935a269c60..81e10be4eef8 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -617,7 +617,7 @@ config BOOTMETH_EFI_BOOTMGR bool "Bootdev support for EFI boot manager" depends on EFI_BOOTMGR select BOOTMETH_GLOBAL - default y + default y if !ARCH_ROCKCHIP help Enable booting via the UEFI boot manager. Based on the EFI variables the EFI binary to be launched is determined. To set the EFI variables
[1] https://docs.u-boot.org/en/latest/develop/bootstd/overview.html#boot-process
Regards, Jonas
- efi_loader: update EFI specification version
- cmd: efidebug: update output of memory attributes
- efi_loader: Don't warn if the TCG2 FinalEvents table is not installed
- cmd: bootmenu: add parameter -e for UEFI boot options
- efi_loader: Update startimage_exit self-test to check error
- efi: Correct ECPT table GUID
Others:
Building the API demo application for riscv64 is supported.
- API: unify platform_sys_info() implementations
- examples: implement _start and syscall for RISC-V
- examples: use architecture specific memset() on RISC-V
- examples: use QEMU compatible LOAD_ADDR on RISC-V
- test: fix test_extension.py
- configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION
- CI: xilinx_versal_virt: disable USB_DWC3
- net: eth_bootdev_hunt() should not run DHCP
Adriano Cordova (1): efi_loader: Expose efi_reinstall_protocol_interface in efi_loader.h
Aleksandar Gerasimovski (1): efi_loader: fix pe reloc pointer overrun
Heinrich Schuchardt (13): API: unify platform_sys_info() implementations examples: implement _start and syscall for RISC-V examples: use architecture specific memset() on RISC-V examples: use QEMU compatible LOAD_ADDR on RISC-V efi_loader: avoid writing message in Exit() boot service test: fix test_extension.py configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION CI: xilinx_versal_virt: disable USB_DWC3 net: eth_bootdev_hunt() should not run DHCP cmd: bootmenu: add parameter -e for UEFI boot options efi_loader: run bootdev_hunt() to find ESP efi_loader: update EFI specification version cmd: efidebug: update output of memory attributes
Ilias Apalodimas (1): efi_loader: Don't warn if the TCG2 FinalEvents table is not installed
Lothar Rubusch (2): doc: develop: Fix typos and wording in binman/binman.rst doc: develop: Fix typos and wording in gdb.rst
Olivier L'Heureux (1): doc: sandbox: Fix the "sb" command name
Simon Glass (1): efi_loader: Update startimage_exit self-test to check error
Tom Rini (1): doc/develop/distro.rst: Better document upstream definition of extlinux.conf
Yang Gang (1): efi: Correct ECPT table GUID
.azure-pipelines.yml | 1 + .gitlab-ci.yml | 1 + api/Makefile | 9 +- api/api_platform-arm.c | 35 ---- api/api_platform-mips.c | 29 --- api/api_platform.c | 25 +++ cmd/bootmenu.c | 39 +++- cmd/efidebug.c | 5 +- configs/sandbox_defconfig | 1 - doc/develop/distro.rst | 15 +- doc/develop/gdb.rst | 10 +- doc/usage/cmd/bootmenu.rst | 13 +- doc/usage/cmd/sb.rst | 6 +- examples/api/Makefile | 7 +- examples/api/crt0.S | 32 ++++ include/efi.h | 2 + include/efi_api.h | 8 +- include/efi_loader.h | 5 + lib/efi_loader/efi_boottime.c | 9 +- lib/efi_loader/efi_image_loader.c | 2 +- lib/efi_loader/efi_setup.c | 8 + lib/efi_loader/efi_tcg2.c | 2 +- lib/efi_selftest/efi_selftest_startimage_exit.c | 6 +- net/eth_bootdev.c | 30 +-- test/py/tests/test_extension.py | 4 +- tools/binman/binman.rst | 234 ++++++++++++------------ 26 files changed, 300 insertions(+), 238 deletions(-) delete mode 100644 api/api_platform-arm.c delete mode 100644 api/api_platform-mips.c create mode 100644 api/api_platform.c

On 1/4/25 12:49, Jonas Karlman wrote:
Hi Heinrich,
On 2025-01-04 04:19, Heinrich Schuchardt wrote:
Dear Tom,
The following changes since commit ec9263b4f15c4cf82eb6a211c67baa6385065b8e:
Fix neighbor discovery ethernet address saving (2025-01-01 14:40:04
-0600)
are available in the Git repository at:
https://source.denx.de/u-boot/custodians/u-boot-efi.git
tags/efi-next-20250104
for you to fetch changes up to ce190e1b33b8c0e1228f4123759dfa1981c202de:
efi: Correct ECPT table GUID (2025-01-04 02:17:06 +0100)
Gitlab CI reported no issues: https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/24075
Pull request efi-next-20250104
Documentation:
- doc: develop: Fix typos and wording in binman/binman.rst
- doc: develop: Fix typos and wording in gdb.rst
- doc: sandbox: Fix the "sb" command name
- doc/develop/distro.rst: Better document upstream definition of
extlinux.conf
UEFI:
With this pull request the UEFI sub-system detects all boot devices even if they have not been probed before. If this adds to much boot delay individual bootmeths and bootdevs can be disabled via the customizing.
- efi_loader: avoid writing message in Exit() boot service
- efi_loader: run bootdev_hunt() to find ESP
This patch still completely changes how standard boot operates, from lazy probing boot devices from fastest to slowest (probe time) as described in the standard boot documentation [1], to probing all boot devices all at once before checking for a bootmeth/bootflow.
This slows down script and extlinux booing on my Rockchip board by several seconds because now pcie and usb is probed before current fast bootflow from mmc devices is tested.
We need to scan all block devices to be EFI compliant.
As described in the pull request message, if you don't want to boot from PCIe or USB, you can disable these bootdevs.
If you don't want to boot via EFI set CONFIG_EFI_LOADER=n.
Will you work on a fix for this or do you recommend disabling the efi_mgr bootmeth or similar? E.g. something like the diff below.
Similarly if I understand correctly the priority of efi_mgr bootmeth, first regardless of configured bootmeth order, is the main blocker for sunxi to fully move to standard boot.
Allowing to run global boot methods after non-global ones still has to be worked on.
Please, elaborate why Sunxi cannot be migrated like other boards. If some embedded board needs to be trimmed to maximize boot speed you will anyway adjust the configuration to eliminate all unnecessary scanning of devices.
Best regards
Heinrich
diff --git a/boot/Kconfig b/boot/Kconfig index 20935a269c60..81e10be4eef8 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -617,7 +617,7 @@ config BOOTMETH_EFI_BOOTMGR bool "Bootdev support for EFI boot manager" depends on EFI_BOOTMGR select BOOTMETH_GLOBAL
- default y
- default y if !ARCH_ROCKCHIP help Enable booting via the UEFI boot manager. Based on the EFI variables the EFI binary to be launched is determined. To set the EFI variables
[1] https://docs.u-boot.org/en/latest/develop/bootstd/overview.html#boot-process
Regards, Jonas
- efi_loader: update EFI specification version
- cmd: efidebug: update output of memory attributes
- efi_loader: Don't warn if the TCG2 FinalEvents table is not installed
- cmd: bootmenu: add parameter -e for UEFI boot options
- efi_loader: Update startimage_exit self-test to check error
- efi: Correct ECPT table GUID
Others:
Building the API demo application for riscv64 is supported.
- API: unify platform_sys_info() implementations
- examples: implement _start and syscall for RISC-V
- examples: use architecture specific memset() on RISC-V
- examples: use QEMU compatible LOAD_ADDR on RISC-V
- test: fix test_extension.py
- configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION
- CI: xilinx_versal_virt: disable USB_DWC3
- net: eth_bootdev_hunt() should not run DHCP
Adriano Cordova (1): efi_loader: Expose efi_reinstall_protocol_interface in efi_loader.h
Aleksandar Gerasimovski (1): efi_loader: fix pe reloc pointer overrun
Heinrich Schuchardt (13): API: unify platform_sys_info() implementations examples: implement _start and syscall for RISC-V examples: use architecture specific memset() on RISC-V examples: use QEMU compatible LOAD_ADDR on RISC-V efi_loader: avoid writing message in Exit() boot service test: fix test_extension.py configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION CI: xilinx_versal_virt: disable USB_DWC3 net: eth_bootdev_hunt() should not run DHCP cmd: bootmenu: add parameter -e for UEFI boot options efi_loader: run bootdev_hunt() to find ESP efi_loader: update EFI specification version cmd: efidebug: update output of memory attributes
Ilias Apalodimas (1): efi_loader: Don't warn if the TCG2 FinalEvents table is not installed
Lothar Rubusch (2): doc: develop: Fix typos and wording in binman/binman.rst doc: develop: Fix typos and wording in gdb.rst
Olivier L'Heureux (1): doc: sandbox: Fix the "sb" command name
Simon Glass (1): efi_loader: Update startimage_exit self-test to check error
Tom Rini (1): doc/develop/distro.rst: Better document upstream definition of extlinux.conf
Yang Gang (1): efi: Correct ECPT table GUID
.azure-pipelines.yml | 1 + .gitlab-ci.yml | 1 + api/Makefile | 9 +- api/api_platform-arm.c | 35 ---- api/api_platform-mips.c | 29 --- api/api_platform.c | 25 +++ cmd/bootmenu.c | 39 +++- cmd/efidebug.c | 5 +- configs/sandbox_defconfig | 1 - doc/develop/distro.rst | 15 +- doc/develop/gdb.rst | 10 +- doc/usage/cmd/bootmenu.rst | 13 +- doc/usage/cmd/sb.rst | 6 +- examples/api/Makefile | 7 +- examples/api/crt0.S | 32 ++++ include/efi.h | 2 + include/efi_api.h | 8 +- include/efi_loader.h | 5 + lib/efi_loader/efi_boottime.c | 9 +- lib/efi_loader/efi_image_loader.c | 2 +- lib/efi_loader/efi_setup.c | 8 + lib/efi_loader/efi_tcg2.c | 2 +- lib/efi_selftest/efi_selftest_startimage_exit.c | 6 +- net/eth_bootdev.c | 30 +-- test/py/tests/test_extension.py | 4 +- tools/binman/binman.rst | 234 ++++++++++++------------ 26 files changed, 300 insertions(+), 238 deletions(-) delete mode 100644 api/api_platform-arm.c delete mode 100644 api/api_platform-mips.c create mode 100644 api/api_platform.c

On Sat, Jan 04, 2025 at 01:08:00PM +0100, Heinrich Schuchardt wrote:
On 1/4/25 12:49, Jonas Karlman wrote:
Hi Heinrich,
On 2025-01-04 04:19, Heinrich Schuchardt wrote:
Dear Tom,
The following changes since commit ec9263b4f15c4cf82eb6a211c67baa6385065b8e:
Fix neighbor discovery ethernet address saving (2025-01-01 14:40:04
-0600)
are available in the Git repository at:
https://source.denx.de/u-boot/custodians/u-boot-efi.git
tags/efi-next-20250104
for you to fetch changes up to ce190e1b33b8c0e1228f4123759dfa1981c202de:
efi: Correct ECPT table GUID (2025-01-04 02:17:06 +0100)
Gitlab CI reported no issues: https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/24075
Pull request efi-next-20250104
Documentation:
- doc: develop: Fix typos and wording in binman/binman.rst
- doc: develop: Fix typos and wording in gdb.rst
- doc: sandbox: Fix the "sb" command name
- doc/develop/distro.rst: Better document upstream definition of
extlinux.conf
UEFI:
With this pull request the UEFI sub-system detects all boot devices even if they have not been probed before. If this adds to much boot delay individual bootmeths and bootdevs can be disabled via the customizing.
- efi_loader: avoid writing message in Exit() boot service
- efi_loader: run bootdev_hunt() to find ESP
This patch still completely changes how standard boot operates, from lazy probing boot devices from fastest to slowest (probe time) as described in the standard boot documentation [1], to probing all boot devices all at once before checking for a bootmeth/bootflow.
This slows down script and extlinux booing on my Rockchip board by several seconds because now pcie and usb is probed before current fast bootflow from mmc devices is tested.
I think there was some further discussion on IRC after these emails.
We need to scan all block devices to be EFI compliant.
In "efi bootmanager" mode, yes?
As described in the pull request message, if you don't want to boot from PCIe or USB, you can disable these bootdevs.
But that will still cause them to be probed in the efi boot manager instance yes?
If you don't want to boot via EFI set CONFIG_EFI_LOADER=n.
But that's precisely what we're trying to avoid in the general case. We want EFI_LOADER=y so that all the assorted modern SoCs can Just Work with all of the assorted off the shelf FOSS OS images.
Will you work on a fix for this or do you recommend disabling the efi_mgr bootmeth or similar? E.g. something like the diff below.
Similarly if I understand correctly the priority of efi_mgr bootmeth, first regardless of configured bootmeth order, is the main blocker for sunxi to fully move to standard boot.
Allowing to run global boot methods after non-global ones still has to be worked on.
Yes, this needs to be done first, then we can do things which will slow down the boot process in the case of an un-optimized configuration.
Please, elaborate why Sunxi cannot be migrated like other boards. If some embedded board needs to be trimmed to maximize boot speed you will anyway adjust the configuration to eliminate all unnecessary scanning of devices.
The problem with SUNXI was described well enough in the thread about migration and I believe re-summarized in the past few weeks. But no one wants their device to boot any slower than required. Which in turn means getting things setup such that we can boot the specific case before the global case.
participants (3)
-
Heinrich Schuchardt
-
Jonas Karlman
-
Tom Rini