
When initializing the EFI sub-system we need all block devices and the NIC to be probed. Extensions should have been applied to the device-tree.
Our current implementation only guarantees that bound block devices are probed. But this misses out devices where binding requires specific routines to be executed, e.g. NVMe (nvme scan), SCSI (scsi start).
Invoking bootdev_hunt() allows to find all block devices, probe the network nic, and enable extensions.
Reviewers complained that PXE boot was executed unexpectedly with a patch that only added the bootdev_hunt() call to the EFI sub-system initialization.
The EFI sub-system does not require the IP address to be set up. We can reduce the boottime by not executing dchp_run() in eth_bootdev_hunt().
Furthermore on the legacy network stack with autostart=yes dhcp_run() tries to download the boot file via TFTP and execute it which seems to be a problem with non-observance of autoload=no.
To fix Gitlab CI issues the following changes are necessary:
In test_extension.py do not assume that extensions have not been loaded by bootdev hunter in a previous test.
Remove CONFIG_AMIGA_PARTITION from sandbox_deconfig to avoid a timeout.
Remove CONFIG_USB_DWC3 on the CI from xilinx_versal_virt_defconfig to avoid a boot failure.
Add a parameter '-e' to select if UEFI boot options shall be shown by the bootmenu command.
v2: disable USB_DWC3 only in CI update commit message for eth_bootdev_hunt() change
Heinrich Schuchardt (6): test: fix test_extension.py configs: sandbox_deconfig: remove CONFIG_AMIGA_PARTITION CI: xilinx_versal_virt: disable USB_DWC3 net: eth_bootdev_hunt() must not try to boot cmd: bootmenu: add parameter -e for UEFI boot options efi_loader: run bootdev_hunt() to find ESP
.azure-pipelines.yml | 1 + .gitlab-ci.yml | 1 + cmd/bootmenu.c | 39 +++++++++++++++++++++++++-------- configs/sandbox_defconfig | 1 - doc/usage/cmd/bootmenu.rst | 13 ++++++++--- lib/efi_loader/efi_setup.c | 8 +++++++ net/eth_bootdev.c | 30 +++++++++++++++---------- test/py/tests/test_extension.py | 4 +++- 8 files changed, 71 insertions(+), 26 deletions(-)