mirror of
https://xff.cz/git/u-boot/
synced 2025-10-26 16:13:55 +01:00
efi: Add ESRT to the EFI system table
The ESRT is initialised during efi_init_objlist after efi_initialize_system_table(). The ESRT is recreated from scratch at the following events: - successful UpdateCapsule; - FMP instance install. The code ensures that every ESRT entry has a unique fw_class value. Limitations: - The ESRT is not updated if an FMP instance is uninstalled; - the fields image_type and flags are in the current implementation left undefined. Setting these values will require a per-platform function that returns the image_type/flags as a function of the image fw_class. CC: Heinrich Schuchardt <xypron.glpk@gmx.de> CC: Sughosh Ganu <sughosh.ganu@linaro.org> CC: AKASHI Takahiro <takahiro.akashi@linaro.org> CC: Ilias Apalodimas <ilias.apalodimas@linaro.org> CC: Andre Przywara <andre.przywara@arm.com> CC: Alexander Graf <agraf@csgraf.de> CC: nd@arm.com Signed-off-by: Jose Marinho <jose.marinho@arm.com> Remove two EFI_CALL() indirections. Move ESRT GUID in efidebug's list of GUIDs. Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
57cba225fa
commit
64a8aae15c
@@ -214,6 +214,8 @@ extern const efi_guid_t efi_guid_rng_protocol;
|
||||
extern const efi_guid_t efi_guid_capsule_report;
|
||||
/* GUID of firmware management protocol */
|
||||
extern const efi_guid_t efi_guid_firmware_management_protocol;
|
||||
/* GUID for the ESRT */
|
||||
extern const efi_guid_t efi_esrt_guid;
|
||||
|
||||
extern unsigned int __efi_runtime_start, __efi_runtime_stop;
|
||||
extern unsigned int __efi_runtime_rel_start, __efi_runtime_rel_stop;
|
||||
@@ -559,6 +561,10 @@ struct efi_simple_file_system_protocol *efi_simple_file_system(
|
||||
/* open file from device-path: */
|
||||
struct efi_file_handle *efi_file_from_path(struct efi_device_path *fp);
|
||||
|
||||
/* Registers a callback function for a notification event. */
|
||||
efi_status_t EFIAPI efi_register_protocol_notify(const efi_guid_t *protocol,
|
||||
struct efi_event *event,
|
||||
void **registration);
|
||||
efi_status_t efi_file_size(struct efi_file_handle *fh, efi_uintn_t *size);
|
||||
|
||||
/* get a device path from a Boot#### option */
|
||||
@@ -902,4 +908,22 @@ static inline efi_status_t efi_launch_capsules(void)
|
||||
|
||||
#endif /* CONFIG_IS_ENABLED(EFI_LOADER) */
|
||||
|
||||
/**
|
||||
* Install the ESRT system table.
|
||||
*
|
||||
* @return status code
|
||||
*/
|
||||
efi_status_t efi_esrt_register(void);
|
||||
|
||||
/**
|
||||
* efi_esrt_populate() - Populates the ESRT entries from the FMP instances
|
||||
* present in the system.
|
||||
* If an ESRT already exists, the old ESRT is replaced in the system table.
|
||||
* The memory of the old ESRT is deallocated.
|
||||
*
|
||||
* Return:
|
||||
* - EFI_SUCCESS if the ESRT is correctly created
|
||||
* - error code otherwise.
|
||||
*/
|
||||
efi_status_t efi_esrt_populate(void);
|
||||
#endif /* _EFI_LOADER_H */
|
||||
|
||||
Reference in New Issue
Block a user