mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
Pull request for efi-2021-10-rc3
Documentation: * Rename Freescale to NXP * Document structures used for the UEFI TCG2 protocol UEFI: * Device paths must use EfiBootServicesData -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEK7wKXt3/btL6/yA+hO4vgnE3U0sFAmEf+AgACgkQhO4vgnE3 U0skxhAAjjv6yMYLYlj2YNTtYDS2zVsnsY8i/vmWNmGYvwfrlcUC/e3J00ftBIjI DEwImrzefvQwr4NOZgIlyxR81NwboWULxvHSF5avwctxQVoTElkSfE2Ji+nFYa23 P/L7E/Zf+NwTHBlE1wfkNJPZ/zya73DTOe+MGWvLnvOX56JZqEJOgmTtcQntRUll 9zkB76j6sCk8B3ydFZmzGqhB4aslJBypG+bQB72XXGVBZoHb9pEPv90hBl616AN/ 5H8WewxTE2s6z3IfexxPAc7ssMQuW3RWw0WsJvBVviw8tSPj4SZjg5HNHAM3mz/i EXHUqAEySP1oT6P4hVef7Xc9gC67N+dVZGAA1QcZBkAnH+BQQ2GmIWX5+3mZJflq 3eHWhMUHWc4q76MbN9QqReAo3wJ3GsBqdA1oORR5FgIPwEVl0jwQMYv6frC/vB6/ 6VX8WcbAWsixjf8QeQlibfMqBO9xZI1Iue5rN6DcwMey6dZrDnXGMdk7Woj6F4ga tERYBt+UBawTf2ww24wMXc7Hw2dZ6kj44ls2doRFKqHOpaY9Mk2QPTaVPrFkj33J 3xlH2BYdB3ALriS1jN6Qcq6xEwyaMdkj5MzVyitunaCLiAKKORwGf0chkqiRiA+k zEET0uDBtO7beraiUJU9jeMPcVj3mYpiFR/CZBD/HWOVB/KwhGU= =gMKg -----END PGP SIGNATURE----- Merge tag 'efi-2021-10-rc3' of https://source.denx.de/u-boot/custodians/u-boot-efi Pull request for efi-2021-10-rc3 Documentation: * Rename Freescale to NXP * Document structures used for the UEFI TCG2 protocol UEFI: * Device paths must use EfiBootServicesData
This commit is contained in:
commit
4865db0716
27 changed files with 100 additions and 53 deletions
|
@ -91,7 +91,7 @@ struct hob_mem_alloc {
|
|||
* Type EFI_MEMORY_TYPE is defined in AllocatePages() in the UEFI 2.0
|
||||
* specification.
|
||||
*/
|
||||
enum efi_mem_type mem_type;
|
||||
enum efi_memory_type mem_type;
|
||||
/* padding */
|
||||
u8 reserved[4];
|
||||
};
|
||||
|
|
|
@ -14,11 +14,11 @@ Board-specific doc
|
|||
congatec/index
|
||||
coreboot/index
|
||||
emulation/index
|
||||
freescale/index
|
||||
google/index
|
||||
intel/index
|
||||
kontron/index
|
||||
microchip/index
|
||||
nxp/index
|
||||
openpiton/index
|
||||
qualcomm/index
|
||||
rockchip/index
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
Freescale
|
||||
=========
|
||||
NXP Semiconductors
|
||||
==================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
@ -17,3 +17,4 @@ Freescale
|
|||
mx6sabresd
|
||||
mx6ul_14x14_evk
|
||||
mx6ullevk
|
||||
psb
|
|
@ -6,5 +6,5 @@ STMicroelectronics
|
|||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
st
|
||||
st-dt
|
||||
stm32mp1
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
NXP i.MX Machine-specific doc
|
||||
=============================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
misc/index
|
|
@ -1,9 +0,0 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
Miscellaneous
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
psb
|
|
@ -64,17 +64,6 @@ implementation.
|
|||
|
||||
arch/index
|
||||
|
||||
Machine-specific doc
|
||||
--------------------
|
||||
|
||||
These books provide programming details about machine-specific
|
||||
implementation.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
imx/index
|
||||
|
||||
Board-specific doc
|
||||
------------------
|
||||
|
||||
|
|
|
@ -125,8 +125,36 @@ struct efi_table_hdr {
|
|||
u32 reserved;
|
||||
};
|
||||
|
||||
/* Allocation types for calls to boottime->allocate_pages*/
|
||||
/**
|
||||
* enum efi_allocate_type - address restriction for memory allocation
|
||||
*/
|
||||
enum efi_allocate_type {
|
||||
/**
|
||||
* @EFI_ALLOCATE_ANY_PAGES:
|
||||
* Allocate any block of sufficient size. Ignore memory address.
|
||||
*/
|
||||
EFI_ALLOCATE_ANY_PAGES,
|
||||
/**
|
||||
* @EFI_ALLOCATE_MAX_ADDRESS:
|
||||
* Allocate a memory block with an uppermost address less or equal
|
||||
* to the indicated address.
|
||||
*/
|
||||
EFI_ALLOCATE_MAX_ADDRESS,
|
||||
/**
|
||||
* @EFI_ALLOCATE_ADDRESS:
|
||||
* Allocate a memory block starting at the indicatged adress.
|
||||
*/
|
||||
EFI_ALLOCATE_ADDRESS,
|
||||
/**
|
||||
* @EFI_MAX_ALLOCATE_TYPE:
|
||||
* Value use for range checking.
|
||||
*/
|
||||
EFI_MAX_ALLOCATE_TYPE,
|
||||
};
|
||||
|
||||
/* Enumeration of memory types introduced in UEFI */
|
||||
enum efi_mem_type {
|
||||
enum efi_memory_type {
|
||||
EFI_RESERVED_MEMORY_TYPE,
|
||||
/*
|
||||
* The code portions of a loaded application.
|
||||
|
@ -224,12 +252,6 @@ struct efi_mem_desc {
|
|||
|
||||
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
||||
|
||||
/* Allocation types for calls to boottime->allocate_pages*/
|
||||
#define EFI_ALLOCATE_ANY_PAGES 0
|
||||
#define EFI_ALLOCATE_MAX_ADDRESS 1
|
||||
#define EFI_ALLOCATE_ADDRESS 2
|
||||
#define EFI_MAX_ALLOCATE_TYPE 3
|
||||
|
||||
/* Types and defines for Time Services */
|
||||
#define EFI_TIME_ADJUST_DAYLIGHT 0x1
|
||||
#define EFI_TIME_IN_DAYLIGHT 0x2
|
||||
|
|
|
@ -249,7 +249,7 @@ struct efi_memory_range {
|
|||
struct efi_memory_range_capsule {
|
||||
struct efi_capsule_header *header;
|
||||
/* EFI_MEMORY_TYPE: 0x80000000-0xFFFFFFFF */
|
||||
enum efi_mem_type os_requested_memory_type;
|
||||
enum efi_memory_type os_requested_memory_type;
|
||||
u64 number_of_memory_ranges;
|
||||
struct efi_memory_range memory_ranges[];
|
||||
} __packed;
|
||||
|
|
|
@ -676,13 +676,14 @@ struct efi_device_path *efi_get_dp_from_boot(const efi_guid_t guid);
|
|||
/* Generic EFI memory allocator, call this to get memory */
|
||||
void *efi_alloc(uint64_t len, int memory_type);
|
||||
/* More specific EFI memory allocator, called by EFI payloads */
|
||||
efi_status_t efi_allocate_pages(int type, int memory_type, efi_uintn_t pages,
|
||||
uint64_t *memory);
|
||||
efi_status_t efi_allocate_pages(enum efi_allocate_type type,
|
||||
enum efi_memory_type memory_type,
|
||||
efi_uintn_t pages, uint64_t *memory);
|
||||
/* EFI memory free function. */
|
||||
efi_status_t efi_free_pages(uint64_t memory, efi_uintn_t pages);
|
||||
/* EFI memory allocator for small allocations */
|
||||
efi_status_t efi_allocate_pool(int pool_type, efi_uintn_t size,
|
||||
void **buffer);
|
||||
efi_status_t efi_allocate_pool(enum efi_memory_type pool_type,
|
||||
efi_uintn_t size, void **buffer);
|
||||
/* EFI pool memory free function. */
|
||||
efi_status_t efi_free_pool(void *buffer);
|
||||
/* Returns the EFI memory map */
|
||||
|
|
|
@ -3,6 +3,13 @@
|
|||
* Defines data structures and APIs that allow an OS to interact with UEFI
|
||||
* firmware to query information about the device
|
||||
*
|
||||
* This file refers the following TCG specification.
|
||||
* - TCG PC Client Platform Firmware Profile Specification
|
||||
* https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/
|
||||
*
|
||||
* - TCG EFI Protocol Specification
|
||||
* https://trustedcomputinggroup.org/resource/tcg-efi-protocol-specification/
|
||||
*
|
||||
* Copyright (c) 2020, Linaro Limited
|
||||
*/
|
||||
|
||||
|
@ -36,11 +43,23 @@ typedef u32 efi_tcg_event_log_bitmap;
|
|||
typedef u32 efi_tcg_event_log_format;
|
||||
typedef u32 efi_tcg_event_algorithm_bitmap;
|
||||
|
||||
/**
|
||||
* struct tdEFI_TCG2_VERSION - structure of EFI TCG2 version
|
||||
* @major: major version
|
||||
* @minor: minor version
|
||||
*/
|
||||
struct efi_tcg2_version {
|
||||
u8 major;
|
||||
u8 minor;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct tdEFI_TCG2_EVENT_HEADER - structure of EFI TCG2 event header
|
||||
* @header_size: size of the event header
|
||||
* @header_version: header version
|
||||
* @pcr_index: index of the PCR that is extended
|
||||
* @event_type: type of the event that is extended
|
||||
*/
|
||||
struct efi_tcg2_event_header {
|
||||
u32 header_size;
|
||||
u16 header_version;
|
||||
|
@ -48,12 +67,27 @@ struct efi_tcg2_event_header {
|
|||
u32 event_type;
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct tdEFI_TCG2_EVENT - structure of EFI TCG2 event
|
||||
* @size: total size of the event including the size component, the header
|
||||
* and the event data
|
||||
* @header: event header
|
||||
* @event: event to add
|
||||
*/
|
||||
struct efi_tcg2_event {
|
||||
u32 size;
|
||||
struct efi_tcg2_event_header header;
|
||||
u8 event[];
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct tdUEFI_IMAGE_LOAD_EVENT - structure of PE/COFF image measurement
|
||||
* @image_location_in_memory: image address
|
||||
* @image_length_in_memory: image size
|
||||
* @image_link_time_address: image link time address
|
||||
* @length_of_device_path: devive path size
|
||||
* @device_path: device path
|
||||
*/
|
||||
struct uefi_image_load_event {
|
||||
efi_physical_addr_t image_location_in_memory;
|
||||
u64 image_length_in_memory;
|
||||
|
@ -62,6 +96,23 @@ struct uefi_image_load_event {
|
|||
struct efi_device_path device_path[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct tdEFI_TCG2_BOOT_SERVICE_CAPABILITY - protocol capability information
|
||||
* @size: allocated size of the structure
|
||||
* @structure_version: version of this structure
|
||||
* @protocol_version: version of the EFI TCG2 protocol.
|
||||
* @hash_algorithm_bitmap: supported hash algorithms
|
||||
* @supported_event_logs: bitmap of supported event log formats
|
||||
* @tpm_present_flag: false = TPM not present
|
||||
* @max_command_size: max size (in bytes) of a command
|
||||
* that can be sent to the TPM
|
||||
* @max_response_size: max size (in bytes) of a response that
|
||||
* can be provided by the TPM
|
||||
* @manufacturer_id: 4-byte Vendor ID
|
||||
* @number_of_pcr_banks: maximum number of PCR banks
|
||||
* @active_pcr_banks: bitmap of currently active
|
||||
* PCR banks (hashing algorithms).
|
||||
*/
|
||||
struct efi_tcg2_boot_service_capability {
|
||||
u8 size;
|
||||
struct efi_tcg2_version structure_version;
|
||||
|
@ -86,7 +137,7 @@ struct efi_tcg2_boot_service_capability {
|
|||
#define TCG_EFI_SPEC_ID_EVENT_SPEC_VERSION_ERRATA_TPM2 2
|
||||
|
||||
/**
|
||||
* struct TCG_EfiSpecIdEventAlgorithmSize
|
||||
* struct TCG_EfiSpecIdEventAlgorithmSize - hashing algorithm information
|
||||
*
|
||||
* @algorithm_id: algorithm defined in enum tpm2_algorithms
|
||||
* @digest_size: size of the algorithm
|
||||
|
@ -97,7 +148,7 @@ struct tcg_efi_spec_id_event_algorithm_size {
|
|||
} __packed;
|
||||
|
||||
/**
|
||||
* struct TCG_EfiSpecIDEventStruct
|
||||
* struct TCG_EfiSpecIDEventStruct - content of the event log header
|
||||
*
|
||||
* @signature: signature, set to Spec ID Event03
|
||||
* @platform_class: class defined in TCG ACPI Specification
|
||||
|
@ -130,7 +181,7 @@ struct tcg_efi_spec_id_event {
|
|||
} __packed;
|
||||
|
||||
/**
|
||||
* struct tdEFI_TCG2_FINAL_EVENTS_TABLE
|
||||
* struct tdEFI_TCG2_FINAL_EVENTS_TABLE - log entries after Get Event Log
|
||||
* @version: version number for this structure
|
||||
* @number_of_events: number of events recorded after invocation of
|
||||
* GetEventLog()
|
||||
|
|
|
@ -68,7 +68,7 @@ static void *dp_alloc(size_t sz)
|
|||
{
|
||||
void *buf;
|
||||
|
||||
if (efi_allocate_pool(EFI_ALLOCATE_ANY_PAGES, sz, &buf) !=
|
||||
if (efi_allocate_pool(EFI_BOOT_SERVICES_DATA, sz, &buf) !=
|
||||
EFI_SUCCESS) {
|
||||
debug("EFI: ERROR: out of memory in %s\n", __func__);
|
||||
return NULL;
|
||||
|
|
|
@ -34,7 +34,7 @@ static u16 *efi_str_to_u16(char *str)
|
|||
efi_status_t ret;
|
||||
|
||||
len = sizeof(u16) * (utf8_utf16_strlen(str) + 1);
|
||||
ret = efi_allocate_pool(EFI_ALLOCATE_ANY_PAGES, len, (void **)&out);
|
||||
ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, len, (void **)&out);
|
||||
if (ret != EFI_SUCCESS)
|
||||
return NULL;
|
||||
dst = out;
|
||||
|
|
|
@ -454,7 +454,8 @@ static uint64_t efi_find_free_memory(uint64_t len, uint64_t max_addr)
|
|||
* @memory allocated memory
|
||||
* @return status code
|
||||
*/
|
||||
efi_status_t efi_allocate_pages(int type, int memory_type,
|
||||
efi_status_t efi_allocate_pages(enum efi_allocate_type type,
|
||||
enum efi_memory_type memory_type,
|
||||
efi_uintn_t pages, uint64_t *memory)
|
||||
{
|
||||
u64 len = pages << EFI_PAGE_SHIFT;
|
||||
|
@ -556,7 +557,7 @@ efi_status_t efi_free_pages(uint64_t memory, efi_uintn_t pages)
|
|||
* @buffer: allocated memory
|
||||
* Return: status code
|
||||
*/
|
||||
efi_status_t efi_allocate_pool(int pool_type, efi_uintn_t size, void **buffer)
|
||||
efi_status_t efi_allocate_pool(enum efi_memory_type pool_type, efi_uintn_t size, void **buffer)
|
||||
{
|
||||
efi_status_t r;
|
||||
u64 addr;
|
||||
|
|
Loading…
Reference in a new issue