Merge tag 'efi-2019-04-rc5-2' of git://git.denx.de/u-boot-efi

Pull request for UEFI system for v2019.04-rc5-2

This patch series contains a bug fix for a double free in a UEFI unit
test. The other patches are documentation only (except for the definition
of two additional constants).
This commit is contained in:
Tom Rini
2019-03-29 09:21:30 -04:00
5 changed files with 27 additions and 11 deletions

View File

@@ -454,7 +454,7 @@ EFI PAYLOAD
M: Heinrich Schuchardt <xypron.glpk@gmx.de>
R: Alexander Graf <agraf@csgraf.de>
S: Maintained
T: git git://github.com/agraf/u-boot.git
T: git git://git.denx.de/u-boot-efi.git
F: doc/README.uefi
F: doc/README.iscsi
F: Documentation/efi.rst

View File

@@ -12,6 +12,15 @@ the interaction of drivers and applications with the firmware. The API comprises
access to block storage, network, and console to name a few. The Linux kernel
and boot loaders like GRUB or the FreeBSD loader can be executed.
## Development target
The implementation of UEFI in U-Boot strives to reach the minimum requirements
described in "Server Base Boot Requirements System Software on ARM Platforms -
Version 1.1" [4].
A full blown UEFI implementation would contradict the U-Boot design principle
"keep it small".
## Building for UEFI
The UEFI standard supports only little-endian systems. The UEFI support can be
@@ -299,7 +308,7 @@ This driver is only available if U-Boot is configured with
CONFIG_BLK=y
CONFIG_PARTITIONS=y
## TODOs as of U-Boot 2018.07
## TODOs as of U-Boot 2019.04
* unimplemented or incompletely implemented boot services
* Exit - call unload function, unload applications only
@@ -308,16 +317,13 @@ This driver is only available if U-Boot is configured with
* unimplemented or incompletely implemented runtime services
* SetVariable() ignores attribute EFI_VARIABLE_APPEND_WRITE
* GetNextVariableName is not implemented
* QueryVariableInfo is not implemented
* unimplemented events
* EVT_RUNTIME
* EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE
* event groups
* data model
* manage events in a linked list
* manage configuration tables in a linked list
* UEFI drivers
@@ -329,9 +335,14 @@ This driver is only available if U-Boot is configured with
* persistence
* runtime support
* incompletely implemented protocols
* support version 0x00020000 of the EFI file protocol
## Links
* [1](http://uefi.org/specifications)
http://uefi.org/specifications - UEFI specifications
* [2](./driver-model/README.txt) doc/driver-model/README.txt - Driver model
* [3](./README.iscsi) doc/README.iscsi - iSCSI booting with U-Boot and iPXE
* [4](https://developer.arm.com/docs/den0044/latest/server-base-boot-requirements-system-software-on-arm-platforms-version-11)
Server Base Boot Requirements System Software on ARM Platforms - Version 1.1

View File

@@ -1322,7 +1322,9 @@ struct efi_pxe {
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
EFI_GUID(0x964e5b22, 0x6459, 0x11d2, \
0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
#define EFI_FILE_PROTOCOL_REVISION 0x00010000
#define EFI_FILE_PROTOCOL_REVISION 0x00010000
#define EFI_FILE_PROTOCOL_REVISION2 0x00020000
#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
struct efi_file_handle {
u64 rev;
@@ -1346,6 +1348,10 @@ struct efi_file_handle {
const efi_guid_t *info_type, efi_uintn_t buffer_size,
void *buffer);
efi_status_t (EFIAPI *flush)(struct efi_file_handle *file);
/*
* TODO: We currently only support EFI file protocol revision 0x00010000
* while UEFI specs 2.4 - 2.7 prescribe revision 0x00020000.
*/
};
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000

View File

@@ -628,6 +628,10 @@ static efi_status_t EFIAPI efi_file_flush(struct efi_file_handle *file)
}
static const struct efi_file_handle efi_file_handle_protocol = {
/*
* TODO: We currently only support EFI file protocol revision 0x00010000
* while UEFI specs 2.4 - 2.7 prescribe revision 0x00020000.
*/
.rev = EFI_FILE_PROTOCOL_REVISION,
.open = efi_file_open,
.close = efi_file_close,

View File

@@ -256,11 +256,6 @@ static int execute(void)
efi_st_error("GetNextDevicePathInstance did not signal end\n");
return EFI_ST_FAILURE;
}
ret = boottime->free_pool(dp2);
if (ret != EFI_ST_SUCCESS) {
efi_st_error("FreePool failed\n");
return EFI_ST_FAILURE;
}
/* Clean up */
ret = boottime->free_pool(dp2);