
Hi Heinrich,
On Tue, 19 Nov 2024 at 10:12, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 19.11.24 14:18, Simon Glass wrote:
This series implements read_all() so that it is possible to read all the files relating to a bootflow, make adjustments and then boot.
Unfortunately quite a few things stand in the way, so this series finishes off several pending items: zboot without CONFIG_CMDLINE, required support in pxe_utils and the differing code in the extlinux and PXE bootmeths. There is very little new code, but quite a lot of refactoring.
The bootm, booti and bootz commands have all been refactored previously, so that they can operate without needing CONFIG_CMDLINE to be enabled. At the, time, zboot was left alone, since it is x86-specific and a bit more trouble.
This series adds a programatic API for zboot and uses the forthcoming bootstd 'image list' to collect information from an extlinux file. It is therefore possible to parse the file, load the resulting images and then examine/adjust the resulting bootflow, before booting.
The addition of options to extlinux resulted in the PXE and extlinux bootmeth having slightly different features. This is tidied up in this series, with common functions for both. This allows the same features (loading images as a separate step) to be provided for PXE.
The biggest problem I see currently with PXE in U-Boot is:
eth_bootdev_hunt() invokes dhcp_run() which may lead to actually downloading and booting a file (assuming autostart=yes).
We should only check that a network device exists and can be probed. Maybe check that the medium is attached when probing. But actually reading a file should be left to one of the different boot methods that can make use of the boot device (PXE, HTTP-Boot, ...).
But I cannot see a fix for net/eth_bootdev.c in this series.
No, it doesn't include anything for that.
We could maintain a flag to indicate whether the net dev has had DHCP run on it, then make sure only to do it once.
Regards, Simon