06 Dec, 2017
2 commits
-
Patch queue for efi - 2017-12-05
Highlights for this release:
- Dynamic EFI object creation (lists instead of static arrays)
- EFI selftest improvements
- Minor fixes -
Commit f5a2a93892f ("efi_loader: consistently use efi_uintn_t in boot
services") changed the internal EFI API header without adapting its existing
EFI stub users. Let's adapt the EFI stub as well.Fixes: f5a2a93892f ("efi_loader: consistently use efi_uintn_t in boot services")
Signed-off-by: Alexander Graf
Reviewed-by: Heinrich Schuchardt
04 Dec, 2017
2 commits
-
Now, lib/libfdt/fdt_wip.c is the same as scripts/dtc/libfdt/fdt_wip.c
Change the former to a wrapper of the latter.
Signed-off-by: Masahiro Yamada
Reviewed-by: Simon Glass -
All the other fdt_*_region() functions are located in fdt_region.c,
while only fdt_find_regions() was added to fdt_wip.c, strangely.Move it to the suitable place.
Signed-off-by: Masahiro Yamada
Reviewed-by: Simon Glass
02 Dec, 2017
3 commits
-
Depending on your compiler, when compiling the hello world efi binary
with -Os, gcc might think it's a smart idea to replace common patterns
such as memory copies with explicit calls to memcpy().While that sounds great at first, we don't have any memcpy() available
in our helloworld build target. So let's indicate to gcc that we really
do want to have the code be built as freestanding.Fixes: bbf75dd9 ("efi_loader: output load options in helloworld")
Signed-off-by: Alexander Graf -
Commit 884bcf6f65 (efi_loader: use proper device-paths for partitions) tried
to introduce the el torito scheme to all partition table types: Spawn
individual disk objects for each partition on a disk.Unfortunately, that code ended up creating partitions with offset=0 which meant
that anyone accessing these objects gets data from the raw block device instead
of the partition.Furthermore, all the el torito logic to spawn devices for partitions was
duplicated. So let's merge the two code paths and give partition disk objects
good offsets to work from, so that payloads can actually make use of them.Fixes: 884bcf6f65 (efi_loader: use proper device-paths for partitions)
Reported-by: Yousaf Kaukab
Signed-off-by: Alexander Graf -
Otherwise with GUID partition types you would end up with things like:
.../HD(Part0,Sig6252c819-4624-4995-8d16-abc9cd5d4130)/HD(Part0,MBRType=02,SigType=02)
Signed-off-by: Rob Clark
[agraf: rebased]
Signed-off-by: Alexander Graf
01 Dec, 2017
33 commits
-
Provide comments for efi_convert_device_node_to_text()
and efi_convert_device_path_to_text().Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
To avoid duplicate coding provide a helper function that
initializes an EFI object and adds it to the EFI object
list.efi_exit() is the only place where we dereference a handle
to obtain a protocol interface. Add a comment to the function.Suggested-by: Alexander Graf
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
The handle of a loaded image is the value of the handle
member of the loaded image info object and not the
address of the loaded image info.Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
We need to test if we pass a valid image handle when loading
and EFI application. This cannot be done in efi_selftest as
it is not loaded as an image.So let's enhance helloworld a bit.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Add a missing line feed for an error message.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
As the selftest is not compiled as an EFI binary we do not
need special compiler flags.This avoids the checkarmreloc error on vexpress_ca15_tc2.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use function efi_search_protocol().
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use function efi_search_protocol.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use efi_add_protocol to add protocol.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use efi_add_protocol to add protocols.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use efi_add_protocol to install protocols.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Provide a test for the EFI_DEVICE_PATH_TO_TEXT_PROTOCOL protocol.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
The current implementation of efi_locate_device_path does not match
the UEFI specification. It completely ignores the protocol
parameters.Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
We need to implement to different functions for the
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL:
ConvertDeviceNodeToText
ConvertDevicePathToTextA recent patch screwed up efi_convert_device_node_to_text
to expect a device path and not a node.The patch makes both service functions work again.
efi_convert_device_node_to_text is renamed to
efi_convert_single_device_node_to_text and
efi_convert_device_node_to_text_ext is renamed to
efi_convert_device_node_to_text to avoid future
confusion.A test of ConvertDeviceNodeToText will be provided in
a follow-up patch.Fixes: adae4313cdd efi_loader: flesh out device-path to text
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
efi_dp_str is meant to print a device path and not a device
node.The old coding only worked because efi_convert_device_node_to_text
was screwed up to expect paths instead of nodes.Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
In the format specifier we want to specify the maximum width
in case an ending \0 is missing.So slen must be used as precision and not as field width.
Reviewed-by: Simon Glass
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Remove a superfluous include from helloworld.c
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Zero partition_signature in the efi_device_path_hard_drive_path
structure when signature_type is 0 (no signature) as required by the
UEFI specification.This is required so that efi_dp_match() will work as expected
when doing memcmp() comparisons. Previously uninitialised memory
would cause it not match nodes when it should have when the signature
type was not GUID.Corrects a problem where the loaded image protocol would not return a
device path with MEDIA_DEVICE causing the OpenBSD bootloader to fail
on rpi_3 and other targets.v2: Also handle signature_type 1 (MBR) as described in the specification
Signed-off-by: Jonathan Gray
Tested-by: Artturi Alm
Signed-off-by: Alexander Graf -
Use helper functions efi_created_handle and efi_add_protocol
for creating the console handles and instaling the respective
protocols.This change is needed if we want to move from an array of
protocols to a linked list of protocols.Eliminate EFI_PROTOCOL_OBJECT which is not used anymore.
Currently we have not defined protocol interfaces to be const.
So efi_con_out and efi_console_control cannot be defined as const.Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use helper functions to add protocols.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use helper function efi_search_protocol.
Do not print protocol guid twice in debug mode.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use function efi_search_obj, efi_search_protocol and
efi_remove_protocol to simplify the coding.Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use helper function efi_search_protocol in efi_search.
Add missing comments.
Put default handling into default branch of switch statement.Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use helper functio efi_add_protocol.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
This patch provides helper functions to manage protocols.
efi_search_protocol - find a protocol on a handle
efi_add_protocol - install a protocol on a handle
efi_remove_protocol - remove a protocol from a handle
efi_remove_all_protocols - remove all protocols from a handleSigned-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Supply a test for the graphics output protocol.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Use efi_uintn_t instead of unsigned long.
EFI_GRAPHICS_OUTPUT_BLT_OPERATION is an enum. If we don't
define an enum we have to pass it as u32.Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
The argument of efi_search_obj is not changed so it should
be marked as const.Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Export function efi_create_handle.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
efi_dp_match does not change its arguments.
So they should be marked as const.Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Calloc may return NULL. So we must check the return value.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf -
Calloc may return NULL. We should check the return value.
Signed-off-by: Heinrich Schuchardt
Signed-off-by: Alexander Graf