summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2017-07-28efi_loader: add some missing breaksRob Clark
Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-27spl: make SPL and normal u-boot stage use independent SYS_MALLOC_F_LENAndy Yan
Some platforms have very limited SRAM to run SPL code, so there may not be the same amount space for a malloc pool before relocation in the SPL stage as the normal U-Boot stage. Make SPL and (the full) U-Boot stage use independent SYS_MALLOC_F_LEN, so the size of pre-relocation malloc pool can be configured memory space independently. Signed-off-by: Andy Yan <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Philipp Tomsich <[email protected]> Reviewed-by: Philipp Tomsich <[email protected]> [fixed up commit-message:] Signed-off-by: Philipp Tomsich <[email protected]>
2017-07-26efi_loader: fix bug in efi_get_memory_mapRob Clark
When booting shim -> fallback -> shim -> grub -> linux the memory map is a bit larger than the size linux passes in on the first call. But in the EFI_BUFFER_TOO_SMALL case we were not passing back the updated size to linux so it would loop forever. Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-26efi_loader: Improve install_configuration_tableAlexander Graf
The INSTALL_CONFIGURATION_TABLE callback also provides the ability to remove table entries. This patch adds that functionality. Signed-off-by: Alexander Graf <[email protected]>
2017-07-26efi_loader: remove more double EFI_EXIT() in efi_disk.cRob Clark
Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-26efi_loader: remove double EFI_EXIT() with efi_unsupportedRob Clark
Probably this went unnoticed before, but it causes problems with addition of 804b1d73 ("efi_loader: log EFI return values too") Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-25efi_loader: expose protocols via GUIDRob Clark
shim.efi (or rather gnu-efi's LibLocateProtocol() which shim.efi uses) resolves protocols via efi_locate_handle() so the console protocols need to be added to the efi object list. Signed-off-by: Rob Clark <[email protected]> [agraf: whitespace fixes] Signed-off-by: Alexander Graf <[email protected]>
2017-07-25efi_loader: implement ProtocolsPerHandle[email protected]
Boot service ProtocolsPerHandle is implemented in efi_protocols_per_handle. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24configs: Migrate RBTREE, LZO, CMD_MTDPARTS, CMD_UBI and CMD_UBIFSTom Rini
The above CONFIG options are in Kconfig, and now have correct depends and inter-dependencies. Migrate these to configs/ from include/configs/. In the case of CMD_UBIFS also change it to be a default y if CMD_UBI. Signed-off-by: Tom Rini <[email protected]>
2017-07-24efi_loader: parameter types for CreateEvent, SetTimer[email protected]
The first argument 'type' of CreateEvent is an 32bit unsigned integer bitmap and not an enum. The second argument 'type' of SetTimer take values of an enum which is called EFI_TIMER_DELAY in the UEFI standard. To avoid confusion rename efi_event_type to efi_timer_delay. Reported-by: Alexander Graf <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_console: use EFIAPI for callback functions[email protected]
The call to efi_create_event requires notification functions flagged as EFIAPI. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_loader: workaround for grub lsefi bugRob Clark
Patch has also been sent to fix grub to not ignore the error returned and treat protocol_buffer_count as valid. But that that might take a while to trickle into distro's, so this workaround might be useful. Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_loader: implement ConvertDeviceNodeToText[email protected]
Move the logic for converting a node to text from efi_convert_device_path_to_text to convert_device_node_to_text. Provide a wrapper function convert_device_node_to_text_ext. As we use only shallow device paths so we can call directly call efi_device_node_to_text from efi_device_path_to_text. Add output for MAC addresses. Add output for not yet supported types/subtypes. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_memory: return MapKey[email protected]
efi_get_memory_map should set a defined value for map_key. We later can introduce the test against this value in efi_exit_boot_services as required by the UEFI standard. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_memory: do parameter checks first[email protected]
The parameter checks should be done first. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_loader: gop: fixes for CONFIG_DM_VIDEO without CONFIG_LCDRob Clark
Make EFI GOP support work with DM_VIDEO but without legacy LCD. Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-24efi_loader: move guidcmp to headerRob Clark
Want to re-use this for file protocol, which I'm working on. Signed-off-by: Rob Clark <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: correctly implement 100ns conversion[email protected]
In efi_set_timer we receive the trigger time in intervals of 100 ns. We should convert it to intervals of 1000 ns by 64bit division. The patch supplies function efi_div10 that uses multiplication to implement the missing 64 bit division. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_console: set up events[email protected]
Set up a timer event and the WaitForKey event. In the notify function of the timer event check for console input and signal the WaitForKey event accordingly. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: refactor efi_set_timer[email protected]
efi_set_timer is refactored to make the function callable internally. Wrapper function efi_set_timer_ext is provided for EFI applications. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: refactor efi_create_event[email protected]
efi_create_event is refactored to make it possible to call it internally. For EFI applications wrapper function efi_create_event_ext is created. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: correct size for tpl level[email protected]
The UEFI standard defines the type for the tpl level as EFI_TPL alias UINTN. UINTN is an integer is defined as an unsigned integer of native width. So we can use size_t for the definition. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: implement multiple event support[email protected]
Up to now the boot time supported only a single event. This patch now allows four events. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: use struct efi_event * instead of void *[email protected]
In our implementation the internal structure of events is known. So use the known type instead of void. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_memory: avoid NULL dereference in efi_free_pool[email protected]
If efi_free_pool is called with argument NULL an illegal memory access occurs. So let's check the parameter on entry. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: disk: iterate only over valid block devices[email protected]
The efi_loader currently stops iterating over the available block devices stopping at the first device that fails. This may imply that no block device is found. With the patch efi_loader only iterates over valid devices. It is based on patch 06d592bf52f6 (dm: core: Add uclass_first/next_device_check()) which is currently in u-boot-dm.git. For testing I used an odroid-c2 with a dts including &sd_emmc_a { status = "okay"; }; This device does not exist on the board and cannot be initialized. Without the patch: => bootefi hello ## Starting EFI application at 01000000 ... WARNING: Invalid device tree, expect boot to fail mmc_init: -95, time 1806 Found 0 disks Hello, world! ## Application terminated, r = 0 With the patch: => bootefi hello ## Starting EFI application at 01000000 ... WARNING: Invalid device tree, expect boot to fail mmc_init: -95, time 1806 Scanning disk [email protected]... Scanning disk [email protected]... Card did not respond to voltage select! mmc_init: -95, time 9 Scanning disk [email protected]... Found 3 disks Hello, world! ## Application terminated, r = 0 Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Andreas Färber <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: implement EFI_DEVICE_PATH_TO_TEXT_PROTOCOL[email protected]
ConvertPathToText is implemented for * type 4 - media device path * subtype 4 - file path This is the kind of device path we hand out for block devices. All other cases may be implemented later. Signed-off-by: Heinrich Schuchardt <[email protected]> [agraf: fix whitespace] Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: reimplement efi_locate_protocol[email protected]
The UEFI specification requires that LocateProtol finds the first handle supporting the protocol and to return a pointer to its interface. So we have to assign the protocols to an efi_object and not use any separate storage. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: implement LocateHandleBuffer[email protected]
UEFI boot service LocateHandleBuffer is implemented by calling efi_allocate_handle and efi_locate_handle. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: refactor efi_locate_handle[email protected]
To implement LocateHandleBuffer we need to call efi_locate_handle internally without running through EFI_EXIT. So put EFI_ENTRY and EFI_EXIT into a new wrapper function efi_locate_handle_ext. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: implement InstallMultipleProtocolInterfaces[email protected]
Implement InstallMultipleProtocolInterfaces in function efi_install_multiple_protocol_interfaces by repeatedly calling efi_install_protocol_interface. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: refactor efi_uninstall_protocol_interface[email protected]
For the implementation of UninstallMultipleProtocolInterfaces we need to call efi_uninstall_protocol_interface. In internal calls we should not pass through EFI_EXIT. The patch introduces a wrapper function efi_uninstall_protocol_interface_ext. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: refactor efi_install_protocol_interface[email protected]
For the implementation of InstallMultipleProtocolInterfaces we need to call efi_install_protocol_interface. In internal calls we should not pass through EFI_EXIT. The patch introduces a wrapper function efi_install_protocol_interface_ext. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: implement UninstallProtocolInterface[email protected]
Without the patch efi_uninstall_protocol_interface always returns an error. With the patch protocols without interface can be uninstalled. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: implement InstallProtocolInterface[email protected]
efi_install_protocol_interface up to now only returned an error code. The patch implements the UEFI specification for InstallProtocolInterface with the exception that it will not create new handles. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: efi_open_protocol: parameter checks[email protected]
Add all parameter checks for function efi_open_protocol that do not depend on a locking table. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-19efi_loader: refactor efi_open_protocol[email protected]
efi_open_protocol was implemented to call a protocol specific open function to retrieve the protocol interface. The UEFI specification does not know of such a function. It is not possible to implement InstallProtocolInterface with the current design. With the patch the protocol interface itself is stored in the list of installed protocols of an efi_object instead of an open function. Signed-off-by: Heinrich Schuchardt <[email protected]> [agraf: fix efi gop support] Signed-off-by: Alexander Graf <[email protected]>
2017-07-11dm: Fix error handling when unflattening the DTSimon Glass
The error handling code does not current detect an error right away. Adjust it to return immediately. Signed-off-by: Simon Glass <[email protected]> Tested-by: Marcel Ziswiler <[email protected]> Tested-on: Beaver, Jetson-TK1
2017-07-11display_options: Refactor to allow obtaining the bannerSimon Glass
Move the display options code into a separate function so that the U-Boot banner can be obtained from other code. Adjust the 'version' command to use it. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Tested-by: Bin Meng <[email protected]> Tested-by: Stephen Warren <[email protected]>
2017-07-10fdt: Enable selecting correct DTB from appended FIT ImageCooper Jr., Franklin
This patch gives U-boot the runtime support to have the board specific code decide which FDT to use. This is especially useful for devices that need this type of runtime determination and also doesn't use SPL. Signed-off-by: Franklin S Cooper Jr <[email protected]> Reviewed-by: Lokesh Vutla <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2017-07-10libfdt: Drop -FDT_ERR_TOODEEPSimon Glass
This error code has not been upstreamed and is not really needed since it is unlikely to be triggered. Drop it to maintain compatability with upstream. Reported-by: Peter Robinson <[email protected]> Signed-off-by: Simon Glass <[email protected]> Tested-by: Peter Robinson <[email protected]>
2017-07-04efi_loader: abort on unsupported relocation type[email protected]
If a relocation type is not supported loading the EFI binary should be aborted. Writing a message only is insufficient. Signed-off-by: Heinrich Schuchardt <[email protected]> [agraf: use a() != b coding style] Signed-off-by: Alexander Graf <[email protected]>
2017-07-04efi_loader: efi_handle_protocol set attributes[email protected]
UEFI spec 2.7 indicates that HandleProtocol can be implemented by calling OpenProtocol with attributes = EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL. Currently we pass attributes = 0 to efi_open_protocol. 0 is not a valid value when calling OpenProtocol. This does not cause any errors yet because our implementation of OpenProtocol is incomplete. We should pass the correct value to enable a fully compliant implementation of OpenProtocol in the future. Signed-off-by: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-03efi_loader: add static to local functionsMasahiro Yamada
These are locally used in lib/efi_loader/efi_boottime.c Signed-off-by: Masahiro Yamada <[email protected]> Reviewed-by: Bin Meng <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-07-03efi_loader: check CreateEvent() parametersJonathan Gray
Add some of the invalid parameter checks described in the UEFI specification for CreateEvent(). This does not include checking the validity of the type and tpl parameters. Signed-off-by: Jonathan Gray <[email protected]> Acked-By: Heinrich Schuchardt <[email protected]> [agraf: fix checkpatch.pl indent warning] Signed-off-by: Alexander Graf <[email protected]>
2017-07-03efi_loader: run CreateEvent() notify function based on flagsJonathan Gray
The UEFI specification states that the tpl, function and context arguments are to be ignored if neither EVT_NOTIFY_WAIT or EVT_NOTIFY_SIGNAL are specified. This matches observed behaviour with an AMI EDK2 based UEFI implementation. Skip calling the notify function if neither flag is present. Signed-off-by: Jonathan Gray <[email protected]> Acked-By: Heinrich Schuchardt <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2017-06-20bch: Fix build on FreeBSD hostEmmanuel Vadot
endian.h on FreeBSD system exist in sys/ subdirectory. FreeBSD already have a fls function defined in strings.h which is included in string.h if __BSD_VISIBLE is defined, as a check for this. Signed-off-by: Emmanuel Vadot <[email protected]>
2017-06-05bootstage: Provide a default timer functionSimon Glass
If CONFIG_SYS_TIMER_COUNTER is used we can provide a default microsecond timer implementation. Signed-off-by: Simon Glass <[email protected]>
2017-06-02fdt: Stop building the old python libfdt moduleSimon Glass
This is no-longer needed, so stop building it. Signed-off-by: Simon Glass <[email protected]>
2017-06-02fdt: Rename existing python libfdt moduleSimon Glass
Now that this module has been accepted upstream we should stop using the local U-Boot one. In preparation for this, rename it to indicate it is for legacy use. Signed-off-by: Simon Glass <[email protected]>