summaryrefslogtreecommitdiff
path: root/boot
AgeCommit message (Collapse)Author
2023-11-17bootstd: Avoid freeing a non-allocated bufferSimon Glass
EFI applications can be very large and thus used to cause boot failures when malloc() space was exhausted. A recent changed fixed this by using the kernel_addr_r environment var as the address of the buffer. However, it still frees the buffer when the bootflow is discarded. Fix this by introducing a flag to indicate whether the buffer was allocated, or not. Note that kernel_addr_r is not the last word here. It might be better to use lmb to place images. But there is a lot of refactoring to do before we can remove the environment variables. The distro scripts rely on them so it is safe for bootstd to do so too. Fixes: 6a8c2f9781c bootstd: Avoid allocating memory for the EFI file Signed-off-by: Simon Glass <[email protected]> Reported by: Simon Glass <[email protected]> Reported by: Shantur Rathore <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]> Tested-by: Shantur Rathore <[email protected]>
2023-11-14expo: Correct background colourSimon Glass
Use the correct background colour when using white-on-black. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2023-11-10boot: Fix syntax in fdt_overlay_apply_verbose() error messageHugo Villeneuve
Remove superfluous "did". Signed-off-by: Hugo Villeneuve <[email protected]>
2023-11-10bootstd: Skip over bad device during bootflows scanningTony Dinh
During bootstd scanning for bootdevs, if bootdev_hunt_drv() encounters a device not found error (e.g. ENOENT), let it return a successful status so that bootstd will continue scanning the next devices, not stopping prematurely. Background: During scanning for bootflows, it's possible for bootstd to encounter a faulty device controller. Also when the same u-boot is used for another variant of the same board, some device controller such as SATA might not exist. I've found this issue while converting the Marvell Sheevaplug board to use bootstd. This board has 2 variants, the original Sheevaplug has MMC and USB only, but the later variant comes with USB, MMC, and eSATA ports. We have been using the same u-boot (starting with CONFIG_IDE and later with DM CONFIG_SATA) for both variants. This worked well with the old envs-scripting booting scheme. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-11-01bootstd: cros: Correct condition for read methodSimon Glass
This has a typo which makes the method inoperable. Correct it so that 'bootflow read' works correctly for ChromeOS. Signed-off-by: Simon Glass <[email protected]>
2023-11-01bootstd: Handle a few special cases in cmdline_set_arg()Simon Glass
Two bugs have appeared: - arguments can have an equals sign embedded in them, which must be considered part of the value - arguments must fully match the name; partial matches should be ignored Fix these and add a test to cover both. Signed-off-by: Simon Glass <[email protected]>
2023-11-01bootstd: Make efi_mgr bootmeth work for non-sandbox setupsMark Kettenis
Enable the bootflow based on this bootmeth if the BootOrder EFI variable is set. Signed-off-by: Mark Kettenis <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-10-27Merge tag 'tpm-next-27102023' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-tpm bootX measurements and measurement API moved to u-boot core: Up to now, U-Boot could perform measurements and EventLog creation as described by the TCG spec when booting via EFI. The EFI code was residing in lib/efi_loader/efi_tcg2.c and contained both EFI specific code + the API needed to access the TPM, extend PCRs and create an EventLog. The non-EFI part proved modular enough and moving it around to the TPM subsystem was straightforward. With that in place we can have a common API for measuring binaries regardless of the boot command, EFI or boot(m|i|z), and contructing an EventLog. I've tested all of the EFI cases -- booting with an empty EventLog and booting with a previous stage loader providing one and found no regressions. Eddie tested the bootX part. Eddie also fixed the sandbox TPM which couldn't be used for the EFI code and it now supports all the required capabilities. This had a slight sideeffect in our testing since the EFI subsystem initializes the TPM early and 'tpm2 init' failed during some python tests. That code only opens the device though, so we can replace it with 'tpm2 autostart' which doesn't error out and still allows you to perfom the rest of the tests but doesn't report an error if the device is already opened. There's a few minor issues with this PR as well but since testing and verifying the changes takes a considerable amount of time, I prefer merging it now. Heinrich has already sent a PR for -master containing "efi_loader: fix EFI_ENTRY point on get_active_pcr_banks" and I am not sure if that will cause any conflicts, but in any case they should be trivial to resolve. Both the EFI and non-EFI code have a Kconfig for measuring the loaded Device Tree. The reason this is optional is that we can't reason when/if devices add random info like kaslr-seed, mac addresses etc in the DT. In that case measurements are random, board specific and eventually useless. The reason it was difficult to fix it prior to this patchset is because the EFI subsystem and thus measurements was brought up late and DT fixups might have already been applied. With this patchset we can measure the DT really early in the future. Heinrich also pointed out that the two Kconfigs for the DTB measurements can be squashed in a single one and that the documentation only explains the non-EFI case. I agree on both but as I said this is a sane working version, so let's pull this first it's aleady big enough and painful to test.
2023-10-27bootm: Support boot measurementEddie James
Add a configuration option to measure the boot through the bootm function. Add the measurement state to the booti and bootz paths as well. Signed-off-by: Eddie James <[email protected]> Reviewed-by: Simon Glass <[email protected]> Ilias: Added some info on Kconfig explaining this is when booting !EFI Signed-off-by: Ilias Apalodimas <[email protected]>
2023-10-23bootstd: sata: Add bootstd support for ahci sataTony Dinh
Add ahci sata bootdev and corresponding hunting function. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2023-10-23bootstd: Scan all bootdevs in a boot_targets entry (take 2)Simon Glass
When the boot_targets environment variable is used with the distro-boot scripts, each device is included individually. For example, if there are three mmc devices, then we will have something like: boot_targets="mmc0 mmc1 mmc2" In contrast, standard boot supports specifying just the uclass, i.e.: boot_targets="mmc" The intention is that this should scan all MMC devices, but in fact it currently only scans the first. Update the logic to handle this case, without required BOOTSTD_FULL to be enabled. Signed-off-by: Simon Glass <[email protected]> Reported-by: Date Huang <[email protected]> Reported-by: Vincent Stehlé <[email protected]> Reported-by: Ivan Ivanov <[email protected]> Tested-by: Ivan T.Ivanov <[email protected]>
2023-10-23bootstd: Correct logic for single uclassSimon Glass
The current logic for "bootflow mmc" is flawed since it checks the uclass of the bootdev instead of its parent, the media device. Correct this and add a test that covers this scenario. Signed-off-by: Simon Glass <[email protected]> Tested-by: Ivan T.Ivanov <[email protected]>
2023-10-23Revert "bootstd: Scan all bootdevs in a boot_targets entry"Simon Glass
This commit was intended to allow all bootdevs in each boot_targets entry to be scanned. However it causes bad ordering with bootdevs, e.g. scanning Ethernet bootdevs when it should be keeping to mmc. Revert it so we can try another approach. This reverts commit e824d0d0c219bc6da767f13f90c5b00eefe929f0. Signed-off-by: Simon Glass <[email protected]> Tested-by: Ivan T.Ivanov <[email protected]>
2023-10-13bootstd: Scan all bootdevs in a boot_targets entrySimon Glass
When the boot_targets environment variable is used with the distro-boot scripts, each device is included individually. For example, if there are three mmc devices, then we will have something like: boot_targets="mmc0 mmc1 mmc2" In contrast, standard boot supports specifying just the uclass, i.e.: boot_targets="mmc" The intention is that this should scan all MMC devices, but in fact it currently only scans the first. Update the logic to handle this case, without required BOOTSTD_FULL to be enabled. I believe at least three people reported this, but I found two. Signed-off-by: Simon Glass <[email protected]> Reported-by: Date Huang <[email protected]> Reported-by: Vincent Stehlé <[email protected]>
2023-10-11expo: Support building an expo with a textlineSimon Glass
Add textline to the list of objects which tthe expo builder can build. This allows them to be provided in the description. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Plumb in textline to ceditSimon Glass
Support textlines in the configuration editor. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Support handling any key in ceditSimon Glass
At present cedit only supports menu keys. For textline objects we need to insert normal ASCII characters. We also need to handle backspace, which is ASCII 9. In fact, expo does not make use of all the menu keys, so partition them accordingly and update the logic to support normal ASCII characters, too. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Plumb in textlines to a sceneSimon Glass
Provide an implementation for textlines in the scene code, so that they are displayed correctly. Provide a way to have a border around the textline, with the internal part being the same colour as the background. This looks more natural. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Support opening a textlineSimon Glass
This object needs special handling when it is opened, to set up the CLI and the vidconsole context. Add special support for this. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Add basic support for textline objectsSimon Glass
A textline is a line of text which can be edited by the user. It has a maximum length (in chracters) but otherwise there are no restrictions. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Add some scene fields needed for text entrySimon Glass
Add the CLI state, a buffer to hold the old value of the text being edited and a place to save vidconsole entry context. These will be use by the textline object. Set an upper limit on the maximum number of characters in a textline object supported by expo, at least for now. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Allow rendering the background of any objectSimon Glass
So far only menus have a background. When other object types are rendered, they may have a background too. Make this code more generic so it will be usable by new object types. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Make calculation of an object bounding box genericSimon Glass
We want to support this for any object, not just menus. Move the code around to allow this. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Add a function to write a property to a devicetreeSimon Glass
When the devicetree is too small for the property being written, we need to expand the devicetree and retry the write. Put this logic into a function so it can be reused. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Allow highlighting other scene-object typesSimon Glass
So far only menus can be highlighted. With the coming addition of text lines we need to be able to highlight other objects. Add a function to determine whether an object can be highlighted. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Correct the logic for duplicate-ID detectionSimon Glass
Update scene_txt_str() to account for the possibility that the passed-in str_id may be 0 Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Correct some swallowed errors in sceneSimon Glass
Return the reported error, rather than assuming it is -ENOMEM Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Use switch statements more for object typesSimon Glass
In a lot of cases menus are the only objects which are have their own behaviour in the cedit, e.g. to move between menus. With expo expanding to support text, this is no-longer true. Use a switch() statement so that we can simply insert a new 'case' for the new object types. Signed-off-by: Simon Glass <[email protected]>
2023-10-11expo: Fix up comments for get_cur_menuitem_text() et alSimon Glass
This internal function could use a comment. Add one. Also tidy up a few other comments. Signed-off-by: Simon Glass <[email protected]> fixup: comments
2023-10-11expo: Add better error reportingSimon Glass
When building an expo fails, show some information about which node caused the problem. Use -ENOENT consistently when the ID is missing. This makes it easier for the user to debug things. Signed-off-by: Simon Glass <[email protected]>
2023-10-09bootstd: use ARCH_DMA_MINALIGN in memalign() when allocating memoryTony Dinh
Use ARCH_DMA_MINALIGN in memalign() when allocating memory to read the script from the media. Ref: https://lore.kernel.org/u-boot/CAJaLiFy05F3Cr4X4G2mVkppXnBEFZrHQ+5CngYN8eJPg8ENWkg@mail.gmail.com/T/#m26daadc2463fe653b814a94e6309e5e6bb6be1d1 Note: this patch depends on the previous patch https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/ Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-10-06command: Include a required header in command.hSimon Glass
This uses ARRAY_SIZE() but does not include the header file which declares it. Fix this, so that command.h can be included without common.h Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2023-10-06dm: core: Reverse the argument order in ofnode_copy_props()Simon Glass
Follow the order used by memcpy() as it may be less confusing. Signed-off-by: Simon Glass <[email protected]>
2023-10-02Merge branch 'next'Tom Rini
Signed-off-by: Tom Rini <[email protected]>
2023-09-22bootstd: Keep track of use of usb stopSimon Glass
When 'usb stop' is run, doing 'bootflow scan' does not run the USB hunter again so does not see any devices. Fix this by telling bootstd about the state of USB. Signed-off-by: Simon Glass <[email protected]>
2023-09-22x86: pxeboot: bugfix: Set variable for size of initrdThomas Mittelstaedt
The problem was, that zboot() didn't work because of missing ramdisc size. Signed-off-by: Thomas Mittelstaedt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-09-20tools: mkimage: Add StarFive SPL image supportHeinrich Schuchardt
The StarFive JH7110 base boards require a header to be prefixed to the SPL binary image. This has previously done with a vendor tool 'spl_tool' published under a GPL-2-or-later license. Integrate this capability into mkimage. Signed-off-by: Heinrich Schuchardt <[email protected]> Tested-by: Chanho Park <[email protected]> Tested-by: Milan P. Stanić <[email protected]>
2023-09-19boot: Join ARCH_FIXUP_FDT_MEMORY with related optionsSimon Glass
Move this to be with the other devicetree-fixup options. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19boot: Drop CMD_MTDPARTS condition for FDT_FIXUP_PARTITIONSSimon Glass
This is not needed, so drop it. Also use a capital 'O' for the option, while we are here. Signed-off-by: Simon Glass <[email protected]> Suggested-by: Tom Rini <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19boot: Join FDT_FIXUP_PARTITIONS with related optionsSimon Glass
Move this to be with the other devicetree-fixup options. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19Make ARCH_FIXUP_FDT_MEMORY depend on OF_LIBFDTSimon Glass
We need CONFIG_OF_LIBFDT to be able to do fdt fixups, so add that condition. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19Mark DISTRO_DEFAULTS as deprecatedSimon Glass
Standard boot has been in place for a while now. Quite a few problems have been found and fixed. It seems like a good time to mark the script-based approach as deprecated and encourage people to use standard boot. Update the DISTRO_DEFAULTS Kconfig to encourage people to move to standard boot, which is able to boot Linux distributions automatically. Add a short migration guide to make this easier. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19Kconfig: Move TEXT_BASE et al under general setupSimon Glass
These don't relate to booting. Move them out of there and into the same place as the other related settings. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19boot: Make standard boot a menuSimon Glass
Collect these options into a menu for easier viewing. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19Kconfig: Move SPL_FIT under FITSimon Glass
This option already depends on FIT, so put it under the same umbrella, so that it appears in the FIT menu. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19spl: Drop SPL/TPL_RAM_SUPPORT option for SPL_LOAD_FIT_ADDRESSSimon Glass
All boards which actually define this address enable SPL_LOAD_FIT, or at least just rely on the default value of 0. So drop the dependency. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19Kconfig: Create a menu for FITSimon Glass
This is a major feature with a lot of options. Give it its own menu to tidy up the 'make menuconfig' display. Drop the 'depends on FIT' pieces which are now unnecessary, since they are now bracketed by an 'if FIT'. Leave CONFIG_TIMESTAMP out since it affects legacy images too. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19boot: Rename Android-boot textSimon Glass
Phrases like 'Enable support for' are pointless since this is an option which enables things. Drop that part so it is easier to follow. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19boot: Move some other fdt-fixup options to the same menuSimon Glass
Move more options relating to fixing up a device tree into the new devicetree-fixup menu. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2023-09-19Move fdt_simplefb to boot/Simon Glass
This relates to booting, so move it there. Create a new Kconfig menu for things related to devicetree fixup. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>