summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2023-06-08efi_loader: versioning support in GetImageInfoMasahisa Kojima
Current FMP->GetImageInfo() always return 0 for the firmware version, user can not identify which firmware version is currently running through the EFI interface. This commit reads the "FmpStateXXXX" EFI variable, then fills the firmware version in FMP->GetImageInfo(). Now FMP->GetImageInfo() and ESRT have the meaningful version number. Signed-off-by: Masahisa Kojima <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-06-08efi_loader: store firmware version into FmpState variableMasahisa Kojima
Firmware version management is not implemented in the current FMP protocol. EDK II reference implementation capsule generation script inserts the FMP Payload Header right before the payload, FMP Payload Header contains the firmware version and lowest supported version. This commit utilizes the FMP Payload Header, reads the header and stores the firmware version into "FmpStateXXXX" EFI non-volatile variable. XXXX indicates the image index, since FMP protocol handles multiple image indexes. Note that lowest supported version included in the FMP Payload Header is not used. If the platform uses file-based EFI variable storage, it can be tampered. The file-based EFI variable storage is not the right place to store the lowest supported version for anti-rollback protection. This change is compatible with the existing FMP implementation. This change does not mandate the FMP Payload Header. If no FMP Payload Header is found in the capsule file, fw_version, lowest supported version, last attempt version and last attempt status is 0 and this is the same behavior as existing FMP implementation. Signed-off-by: Masahisa Kojima <[email protected]>
2023-06-08efi_loader: add the number of image entries in efi_capsule_update_infoMasahisa Kojima
The number of image array entries global variable is required to support EFI capsule update. This information is exposed as a num_image_type_guids variable, but this information should be included in the efi_capsule_update_info structure. This commit adds the num_images member in the efi_capsule_update_info structure. All board files supporting EFI capsule update are updated. Signed-off-by: Masahisa Kojima <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-06-02efi_selftest: LocateHandleBuffer return codeHeinrich Schuchardt
Check that LocateHandleBuffer() return EFI_NOT_FOUND when called with ByRegisterNotify and all handles already have been retrieved. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-06-02efi_loader: check return value of part_get_info()Heinrich Schuchardt
part_get_info() may return an error code. Check it. Update function description of dp_part_node(). Addresses-Coverity-ID: 184067 ("Unchecked return value") Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-31efi: Correct .efi rulesSimon Glass
These files should have both 'always' and 'targets' so that dependencies are detected correctly. When only 'always' is used, the target is built every time, although I am not quite sure why. Make sure each has both 'always' and 'targets' to avoid this problem. Signed-off-by: Simon Glass <[email protected]>
2023-05-31acpi: Put the version numbers in a central placeSimon Glass
At present two acpi files are built every time since they use a version number from version.h This is not necessary. Make use of the same technique as for the version string, so that they are build only when they change. Signed-off-by: Simon Glass <[email protected]>
2023-05-13efi_loader: fix efi_dp_from_file()Heinrich Schuchardt
* When called from efi_dp_from_name() we miss to append the filename for non-block devices. * expand_media_path() could be simplified by using efi_dp_from_file to prepend the device path of the boot device. This can be avoided by passing a device path to efi_dp_from_file() instead of a block device descriptor and a partition number. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: simplify efi_dp_from_name()Heinrich Schuchardt
Don't do the same check and assignment in multiple places. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: error code efi_dp_from_name()Heinrich Schuchardt
Use EFI_OUT_OF_RESOURCES if the device path cannot be constructed. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: clean up efi_dp_from_fileHeinrich Schuchardt
* Improve variable name usage: Use pos instead of buf to indicate the current position in a buffer. * Avoid double assignment in a single code line. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: duplicate code in efi_dp_from_nameHeinrich Schuchardt
efi_dp_from_name() has duplicate code to replace slash by backslash. path_to_uefi() called by efi_dp_from_file() already does this. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: avoid #ifdef in efi_dp_from_name()Heinrich Schuchardt
According to our coding style guide #ifdef should be avoided. Use IS_ENABLED() instead. Sort string comparisons alphabetically. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: support booting semihosting fileHeinrich Schuchardt
Executing an EFI binary fails for files loaded via semihosting. Construct a dummy device path for EFI binaries loaded via semihosting. A future complete solution may include the creation of a handle with a simple file system protocol. Reported-by: Andre Przywara <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13efi_loader: print file path w/o boot deviceHeinrich Schuchardt
Helloworld.efi should print the file path even if the boot device is not set. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-05-13fwu: fix config FWU_MULTI_BANK_UPDATEHeinrich Schuchardt
Symbol CONFIG_EFI_SETUP_EARLY does not exist anymore. CONFIG_FWU_MULTI_BANK_UPDATE without CONFIG_FWU_MDATA results in lib/fwu_updates/fwu.c:49: undefined reference to `fwu_get_mdata' Fixes: 86794052418b ("FWU: Add support for the FWU Multi Bank Update feature") Fixes: 023d9c93932c ("efi_loader: remove CONFIG_EFI_SETUP_EARLY") Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]> Acked-by: Sughosh Ganu <[email protected]>
2023-05-11acpi: Move the table-finding functions into the libarySimon Glass
This is useful for other features. Move the function into library code so it can be used outside just the 'acpi' command. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Tested-by: Bin Meng <[email protected]>
2023-05-11acpi: Create a new Kconfig for ACPISimon Glass
We have several Kconfig options for ACPI, but all relate to specific functions, such as generating tables and AML code. Add a new option which controls including basic ACPI library code, including the lib/acpi directory. This will allow us to add functions which are available even if table generation is not supported. Adjust the command to avoid a build error when ACPIGEN is not enabled. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2023-04-30Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sunxiTom Rini
Please pull the second part of the sunxi pull request for this cycle. Another bunch of patches that replace old-school U-Boot hacks with proper DM based code, this time for the raw NAND flash driver, and the USB PHY VBUS detection code. Plus two smaller patches that were sitting in my inbox for a while. Gitlab CI passed. In lack of some supported board with NAND flash I couldn't really test this part, but apparently this was tested by the reviewer. I briefly ran the branch on some boards with USB-OTG, and this still worked.
2023-04-28fdt: Indicate that people should use the ofnode APISimon Glass
Add a note to the comment at the top of this file. Signed-off-by: Simon Glass <[email protected]>
2023-04-28mtd: nand: sunxi: Convert from fdtdec to ofnodeSamuel Holland
As a first step toward converting this driver to the driver model, use the ofnode abstraction to replace direct references to the FDT blob. Using ofnode_read_u32_index removes an extra pair of loops and makes the allwinner,rb property optional, matching the devicetree binding. Signed-off-by: Samuel Holland <[email protected]> Acked-by: Andre Przywara <[email protected]> Signed-off-by: Andre Przywara <[email protected]>
2023-04-21efi_loader: remove unused efi_capsule_authenticateHeinrich Schuchardt
Remove an unused implementation of efi_capsule_authenticate(). Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-04-08efi: loader: Make efi_runtime_mmio staticBin Meng
efi_runtime_mmio is only referenced in efi_boottime.c Signed-off-by: Bin Meng <[email protected]>
2023-04-08efi: loader: Make efi_mem staticBin Meng
efi_mem is only referenced in efi_memory.c Signed-off-by: Bin Meng <[email protected]>
2023-04-08efi: loader: Make efi_event_queue and efi_register_notify_events staticBin Meng
efi_event_queue and efi_register_notify_events are only referenced in efi_boottime.c Signed-off-by: Bin Meng <[email protected]>
2023-04-08efi: selftest: Make load_file() and load_file2() staticBin Meng
load_file() and load_file2() are only referenced in efi_selftest_load_file.c Signed-off-by: Bin Meng <[email protected]>
2023-04-08efi: selftest: Make record staticBin Meng
record is only referenced in efi_selftest_exitbootservices.c Signed-off-by: Bin Meng <[email protected]>
2023-04-08efi_loader: avoid using HandleProtocol in initrddump.efiHeinrich Schuchardt
HandleProtocol() is deprecated and leaves an OpenedProtocolInformation behind. Use OpenProtocol(GET_PROTOCOL) instead. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-04-08efi_loader: avoid using HandleProtocol in helloworld.efiHeinrich Schuchardt
HandleProtocol() is deprecated and leaves an OpenedProtocolInformation behind. Use OpenProtocol(GET_PROTOCOL) instead. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-04-06lib: missing fallthrough comment in vsnprintf_internal()Heinrich Schuchardt
When a case statement intentionally falls through we should add a comment. Cf. -Wimplicit-fallthrough Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-04-06lmb: add max number of region in lmb_dump_region() outputPatrick Delaunay
Add the max number of region in lmb dump; this patch allows to check the limit for usage of the LMB regions, memory or reserved. Result on STM32MP157C-DK2: STM32MP> bdinfo ..... lmb_dump_all: memory.cnt = 0x1 / max = 0x2 memory[0] [0xc0000000-0xdfffffff], 0x20000000 bytes flags: 0 reserved.cnt = 0x6 / max = 0x10 reserved[0] [0x10000000-0x10045fff], 0x00046000 bytes flags: 4 reserved[1] [0x30000000-0x3003ffff], 0x00040000 bytes flags: 4 reserved[2] [0x38000000-0x3800ffff], 0x00010000 bytes flags: 4 reserved[3] [0xd4000000-0xd7ffffff], 0x04000000 bytes flags: 4 reserved[4] [0xdcae5000-0xdfffffff], 0x0351b000 bytes flags: 0 reserved[5] [0xddafb5b8-0xdfffffff], 0x02504a48 bytes flags: 0 .... Reported-by: Mark Millard <[email protected]> Signed-off-by: Patrick Delaunay <[email protected]>
2023-04-06lmb: Fix LMB_MEMORY_REGIONS flag usagePatrick Delaunay
Remove test on CONFIG_LMB_MEMORY_REGIONS introduced by commit 7c1860fce4e3 ("lmb: Fix lmb property's defination under struct lmb"). This code in lmb_init() is strange, because if CONFIG_LMB_USE_MAX_REGIONS and CONFIG_LMB_MEMORY_REGIONS are not defined, the implicit #else is empty and the required initialization is not done: lmb->memory.max = ? lmb->reserved.max = ? But this setting is not possible: - CONFIG_LMB_USE_MAX_REGIONS not defined - CONFIG_LMB_MEMORY_REGIONS not defined because CONFIG_LMB_MEMORY_REGIONS and CONFIG_LMB_RESERVED_REGIONS are defined as soon as the CONFIG_LMB_USE_MAX_REGIONS is not defined. This patch removes this impossible case #elif and I add some explanation in lmb.h to explain why in the struct lmb {} the lmb property is defined if CONFIG_LMB_MEMORY_REGIONS is NOT defined. This patch also removes CONFIG_LMB_XXX dependency on CONFIG_LMB as these defines are used in API file lmb.h and not only in library file. Fixes: 5e2548c1d6e03 ("lmb: Fix LMB_MEMORY_REGIONS flag usage") Reported-by: Mark Millard <[email protected]> Signed-off-by: Patrick Delaunay <[email protected]> Acked-by: Michal Simek <[email protected]>
2023-04-05efi_loader: device_path: support blkmap devicesTobias Waldekranz
Create a distinct EFI device path for each blkmap device. Signed-off-by: Tobias Waldekranz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-04-03Merge branch 'next'Tom Rini
Signed-off-by: Tom Rini <[email protected]>
2023-04-01efi_loader: remove duplicate assignmentHeinrich Schuchardt
Assigning the value of a variable to itself should be avoided. Addresses-Coverity-ID: 451089 ("Evaluation order violation") Fixes: 180b7118bed8 ("efi_loader: fix device-path for USB devices") Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-04-01efi_loader: correct shortening of device-pathsHeinrich Schuchardt
We use short device-paths in boot options so that a file on a block device can be found independent of the port into which the device is plugged. Usb() device-path nodes only contain port and interface information and therefore cannot identify a block device. UsbWwi() device-path nodes contain the serial number of USB devices. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-03-30lib: Fix SYS_TIMER_COUNTS_DOWN description in KconfigMarek Vasut
The SYS_TIMER_COUNTS_DOWN description contains a typo, s@rathe@&r@ , fix it. Signed-off-by: Marek Vasut <[email protected]>
2023-03-27Merge branch 'master' into nextTom Rini
2023-03-25efi: Include GUID names with EFI app and payloadSimon Glass
These are currently only available when running with EFI_LOADER. Expand this to include the app and payload, since it is useful to be able to decode things there. Signed-off-by: Simon Glass <[email protected]>
2023-03-25efi: Add another tranch of GUIDsSimon Glass
Provide information about the GUIDs supplied by QEMU, so far as it is known. These values are used in the 'efi table' command as well as the printf format string %sU Signed-off-by: Simon Glass <[email protected]>
2023-03-25efi_loader: simplify efi_str_to_u16()Heinrich Schuchardt
Use efi_alloc() to allocate memory. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-03-25efi_loader: move dp_alloc() to efi_alloc()Heinrich Schuchardt
The incumbent function efi_alloc() is unused. Replace dp_alloc() by a new function efi_alloc() that we can use more widely. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-03-25efi_loader: fix device-path for USB devicesHeinrich Schuchardt
EFI device paths for block devices must be unique. If a non-unique device path is discovered, probing of the block device fails. Currently we use UsbClass() device path nodes. As multiple devices may have the same vendor and product id these are non-unique. Instead we should use Usb() device path nodes. They include the USB port on the parent hub. Hence they are unique. A USB storage device may contain multiple logical units. These can be modeled as Ctrl() nodes. Reported-by: Patrick Delaunay <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-03-25efi_loader: support for Ctrl() device path nodeHeinrich Schuchardt
* Add the definitions for Ctrl() device path nodes. * Implement Ctrl() nodes in the device path to text protocol. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-03-25efi_loader: fix device-path for USB devicesHeinrich Schuchardt
EFI device paths for block devices must be unique. If a non-unique device path is discovered, probing of the block device fails. Currently we use UsbClass() device path nodes. As multiple devices may have the same vendor and product id these are non-unique. Instead we should use Usb() device path nodes. They include the USB port on the parent hub. Hence they are unique. A USB storage device may contain multiple logical units. These can be modeled as Ctrl() nodes. Reported-by: Patrick Delaunay <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-03-25efi_loader: support for Ctrl() device path nodeHeinrich Schuchardt
* Add the definitions for Ctrl() device path nodes. * Implement Ctrl() nodes in the device path to text protocol. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-03-22zlib: trees.c: Fix a warning with clang-15Tom Rini
With clang-15 we now will get warnings such as: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes] And it is easy enough to address this warning here, even if we would like to stay in sync more with upstream as it's a single location. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-03-22libavb: Fix a warning with clang-15Tom Rini
With clang-15 we now will get warnings such as: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes] And it is easy enough to address this warning here, as we aren't concerned with re-syncing with an upstream. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-03-22console: Use flush() before panic and resetTony Dinh
To make sure the panic and the reset messages will go out, console flush() should be used. Sleep periods do not work in early u-boot phase when timer driver is not initialized yet. Reference: https://lists.denx.de/pipermail/u-boot/2023-March/512233.html Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2023-03-14Merge tag 'v2023.04-rc4' into nextTom Rini
Prepare v2023.04-rc4 Signed-off-by: Tom Rini <[email protected]>