mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-11 07:24:46 +00:00
tcg2: decouple eventlog size from efi
Move default eventlog size from efi to tpm for using in both efi and measured boot. Signed-off-by: Raymond Mao <raymond.mao@linaro.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
bb894c5da5
commit
afe26a74dd
5 changed files with 17 additions and 19 deletions
|
@ -24,7 +24,6 @@ Requirements
|
|||
|
||||
* A hardware TPM 2.0 supported by an enabled U-Boot driver
|
||||
* CONFIG_EFI_TCG2_PROTOCOL=y
|
||||
* CONFIG_EFI_TCG2_PROTOCOL_EVENTLOG_SIZE=y
|
||||
* optional CONFIG_EFI_TCG2_PROTOCOL_MEASURE_DTB=y will measure the loaded DTB
|
||||
in PCR 1
|
||||
|
||||
|
|
|
@ -209,6 +209,15 @@ config TPM2_MMIO
|
|||
to the device using the standard TPM Interface Specification (TIS)
|
||||
protocol.
|
||||
|
||||
config TPM2_EVENT_LOG_SIZE
|
||||
int "EventLog size"
|
||||
depends on TPM_V2
|
||||
default 65536
|
||||
help
|
||||
Define the size of the EventLog. Note that this is going to be
|
||||
allocated twice. One for the eventlog it self and one for the
|
||||
configuration table that is required from the TCG2 spec
|
||||
|
||||
endif # TPM_V2
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -28,8 +28,6 @@
|
|||
#define EFI_TCG2_MAX_PCR_INDEX 23
|
||||
#define EFI_TCG2_FINAL_EVENTS_TABLE_VERSION 1
|
||||
|
||||
#define TPM2_EVENT_LOG_SIZE CONFIG_EFI_TCG2_PROTOCOL_EVENTLOG_SIZE
|
||||
|
||||
typedef u32 efi_tcg_event_log_bitmap;
|
||||
typedef u32 efi_tcg_event_log_format;
|
||||
typedef u32 efi_tcg_event_algorithm_bitmap;
|
||||
|
|
|
@ -438,15 +438,6 @@ config EFI_TCG2_PROTOCOL
|
|||
Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware
|
||||
of the platform.
|
||||
|
||||
config EFI_TCG2_PROTOCOL_EVENTLOG_SIZE
|
||||
int "EFI_TCG2_PROTOCOL EventLog size"
|
||||
depends on EFI_TCG2_PROTOCOL
|
||||
default 65536
|
||||
help
|
||||
Define the size of the EventLog for EFI_TCG2_PROTOCOL. Note that
|
||||
this is going to be allocated twice. One for the eventlog it self
|
||||
and one for the configuration table that is required from the spec
|
||||
|
||||
config EFI_TCG2_PROTOCOL_MEASURE_DTB
|
||||
bool "Measure DTB with EFI_TCG2_PROTOCOL"
|
||||
depends on EFI_TCG2_PROTOCOL
|
||||
|
|
|
@ -112,7 +112,7 @@ static efi_status_t tcg2_agile_log_append(u32 pcr_index, u32 event_type,
|
|||
/* if ExitBootServices hasn't been called update the normal log */
|
||||
if (!event_log.ebs_called) {
|
||||
if (event_log.truncated ||
|
||||
event_log.pos + event_size > TPM2_EVENT_LOG_SIZE) {
|
||||
event_log.pos + event_size > CONFIG_TPM2_EVENT_LOG_SIZE) {
|
||||
event_log.truncated = true;
|
||||
return EFI_VOLUME_FULL;
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ static efi_status_t tcg2_agile_log_append(u32 pcr_index, u32 event_type,
|
|||
return ret;
|
||||
|
||||
/* if GetEventLog has been called update FinalEventLog as well */
|
||||
if (event_log.final_pos + event_size > TPM2_EVENT_LOG_SIZE)
|
||||
if (event_log.final_pos + event_size > CONFIG_TPM2_EVENT_LOG_SIZE)
|
||||
return EFI_VOLUME_FULL;
|
||||
|
||||
log = (void *)((uintptr_t)event_log.final_buffer + event_log.final_pos);
|
||||
|
@ -823,12 +823,12 @@ static efi_status_t create_final_event(void)
|
|||
* EFI_TCG2_GET_EVENT_LOGS need to be stored in an instance of an
|
||||
* EFI_CONFIGURATION_TABLE
|
||||
*/
|
||||
ret = efi_allocate_pool(EFI_ACPI_MEMORY_NVS, TPM2_EVENT_LOG_SIZE,
|
||||
ret = efi_allocate_pool(EFI_ACPI_MEMORY_NVS, CONFIG_TPM2_EVENT_LOG_SIZE,
|
||||
&event_log.final_buffer);
|
||||
if (ret != EFI_SUCCESS)
|
||||
goto out;
|
||||
|
||||
memset(event_log.final_buffer, 0xff, TPM2_EVENT_LOG_SIZE);
|
||||
memset(event_log.final_buffer, 0xff, CONFIG_TPM2_EVENT_LOG_SIZE);
|
||||
final_event = event_log.final_buffer;
|
||||
final_event->number_of_events = 0;
|
||||
final_event->version = EFI_TCG2_FINAL_EVENTS_TABLE_VERSION;
|
||||
|
@ -914,7 +914,8 @@ static efi_status_t efi_init_event_log(void)
|
|||
if (tcg2_platform_get_tpm2(&dev))
|
||||
return EFI_DEVICE_ERROR;
|
||||
|
||||
ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, TPM2_EVENT_LOG_SIZE,
|
||||
ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA,
|
||||
CONFIG_TPM2_EVENT_LOG_SIZE,
|
||||
(void **)&event_log.buffer);
|
||||
if (ret != EFI_SUCCESS)
|
||||
return ret;
|
||||
|
@ -923,7 +924,7 @@ static efi_status_t efi_init_event_log(void)
|
|||
* initialize log area as 0xff so the OS can easily figure out the
|
||||
* last log entry
|
||||
*/
|
||||
memset(event_log.buffer, 0xff, TPM2_EVENT_LOG_SIZE);
|
||||
memset(event_log.buffer, 0xff, CONFIG_TPM2_EVENT_LOG_SIZE);
|
||||
|
||||
/*
|
||||
* The log header is defined to be in SHA1 event log entry format.
|
||||
|
@ -940,7 +941,7 @@ static efi_status_t efi_init_event_log(void)
|
|||
* platforms can use different ways to do so.
|
||||
*/
|
||||
elog.log = event_log.buffer;
|
||||
elog.log_size = TPM2_EVENT_LOG_SIZE;
|
||||
elog.log_size = CONFIG_TPM2_EVENT_LOG_SIZE;
|
||||
rc = tcg2_log_prepare_buffer(dev, &elog, false);
|
||||
if (rc) {
|
||||
ret = (rc == -ENOBUFS) ? EFI_BUFFER_TOO_SMALL : EFI_DEVICE_ERROR;
|
||||
|
|
Loading…
Add table
Reference in a new issue