mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
efi_loader: Enable run-time variable support for tee based variables
We recently added functions for storing/restoring variables from a file to a memory backed buffer marked as __efi_runtime_data commitf1f990a8c9
("efi_loader: memory buffer for variables") commit5f7dcf079d
("efi_loader: UEFI variable persistence") Using the same idea we now can support GetVariable() and GetNextVariable() on the OP-TEE based variables as well. So let's re-arrange the code a bit and move the commmon code for accessing variables out of efi_variable.c. Create common functions for reading variables from memory that both implementations can use on run-time. Then just use those functions in the run-time variants of the OP-TEE based EFI variable implementation and initialize the memory buffer on ExitBootServices() Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
db94dfbd52
commit
e01aed47d6
7 changed files with 222 additions and 154 deletions
|
@ -142,6 +142,22 @@ struct efi_var_file {
|
|||
*/
|
||||
efi_status_t efi_var_to_file(void);
|
||||
|
||||
/**
|
||||
* efi_var_collect() - collect variables in buffer
|
||||
*
|
||||
* A buffer is allocated and filled with variables in a format ready to be
|
||||
* written to disk.
|
||||
*
|
||||
* @bufp: pointer to pointer of buffer with collected variables
|
||||
* @lenp: pointer to length of buffer
|
||||
* @check_attr_mask: bitmask with required attributes of variables to be collected.
|
||||
* variables are only collected if all of the required
|
||||
* attributes are set.
|
||||
* Return: status code
|
||||
*/
|
||||
efi_status_t __maybe_unused efi_var_collect(struct efi_var_file **bufp, loff_t *lenp,
|
||||
u32 check_attr_mask);
|
||||
|
||||
/**
|
||||
* efi_var_restore() - restore EFI variables from buffer
|
||||
*
|
||||
|
@ -233,4 +249,62 @@ efi_status_t efi_init_secure_state(void);
|
|||
*/
|
||||
enum efi_auth_var_type efi_auth_var_get_type(u16 *name, const efi_guid_t *guid);
|
||||
|
||||
/**
|
||||
* efi_get_next_variable_name_mem() - Runtime common code across efi variable
|
||||
* implementations for GetNextVariable()
|
||||
* from the cached memory copy
|
||||
* @variable_name_size: size of variable_name buffer in byte
|
||||
* @variable_name: name of uefi variable's name in u16
|
||||
* @vendor: vendor's guid
|
||||
*
|
||||
* Return: status code
|
||||
*/
|
||||
efi_status_t __efi_runtime
|
||||
efi_get_next_variable_name_mem(efi_uintn_t *variable_name_size, u16 *variable_name,
|
||||
efi_guid_t *vendor);
|
||||
/**
|
||||
* efi_get_variable_mem() - Runtime common code across efi variable
|
||||
* implementations for GetVariable() from
|
||||
* the cached memory copy
|
||||
*
|
||||
* @variable_name: name of the variable
|
||||
* @vendor: vendor GUID
|
||||
* @attributes: attributes of the variable
|
||||
* @data_size: size of the buffer to which the variable value is copied
|
||||
* @data: buffer to which the variable value is copied
|
||||
* @timep: authentication time (seconds since start of epoch)
|
||||
* Return: status code
|
||||
|
||||
*/
|
||||
efi_status_t __efi_runtime
|
||||
efi_get_variable_mem(u16 *variable_name, const efi_guid_t *vendor, u32 *attributes,
|
||||
efi_uintn_t *data_size, void *data, u64 *timep);
|
||||
|
||||
/**
|
||||
* efi_get_variable_runtime() - runtime implementation of GetVariable()
|
||||
*
|
||||
* @variable_name: name of the variable
|
||||
* @guid: vendor GUID
|
||||
* @attributes: attributes of the variable
|
||||
* @data_size: size of the buffer to which the variable value is copied
|
||||
* @data: buffer to which the variable value is copied
|
||||
* Return: status code
|
||||
*/
|
||||
efi_status_t __efi_runtime EFIAPI
|
||||
efi_get_variable_runtime(u16 *variable_name, const efi_guid_t *guid,
|
||||
u32 *attributes, efi_uintn_t *data_size, void *data);
|
||||
|
||||
/**
|
||||
* efi_get_next_variable_name_runtime() - runtime implementation of
|
||||
* GetNextVariable()
|
||||
*
|
||||
* @variable_name_size: size of variable_name buffer in byte
|
||||
* @variable_name: name of uefi variable's name in u16
|
||||
* @guid: vendor's guid
|
||||
* Return: status code
|
||||
*/
|
||||
efi_status_t __efi_runtime EFIAPI
|
||||
efi_get_next_variable_name_runtime(efi_uintn_t *variable_name_size,
|
||||
u16 *variable_name, efi_guid_t *guid);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue