mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-23 21:44:15 +00:00

Builds in Debug mode with Measured Boot enabled might run out of trusted SRAM. This patch allows to change the Log Level at which the Measured Boot driver will dump the event log, so the latter can be accessed even on Release builds if necessary, saving space on RAM. Signed-off-by: Javier Almansa Sobrino <javier.almansasobrino@arm.com> Change-Id: I133689e313776cb3f231b774c26cbca4760fa120
97 lines
2.6 KiB
C
97 lines
2.6 KiB
C
/*
|
|
* Copyright (c) 2020, Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef EVENT_LOG_H
|
|
#define EVENT_LOG_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <common/debug.h>
|
|
#include <drivers/measured_boot/tcg.h>
|
|
|
|
/*
|
|
* Set Event Log debug level to one of:
|
|
*
|
|
* LOG_LEVEL_ERROR
|
|
* LOG_LEVEL_INFO
|
|
* LOG_LEVEL_WARNING
|
|
* LOG_LEVEL_VERBOSE
|
|
*/
|
|
#if EVENT_LOG_LEVEL == LOG_LEVEL_ERROR
|
|
#define LOG_EVENT ERROR
|
|
#elif EVENT_LOG_LEVEL == LOG_LEVEL_NOTICE
|
|
#define LOG_EVENT NOTICE
|
|
#elif EVENT_LOG_LEVEL == LOG_LEVEL_WARNING
|
|
#define LOG_EVENT WARN
|
|
#elif EVENT_LOG_LEVEL == LOG_LEVEL_INFO
|
|
#define LOG_EVENT INFO
|
|
#elif EVENT_LOG_LEVEL == LOG_LEVEL_VERBOSE
|
|
#define LOG_EVENT VERBOSE
|
|
#else
|
|
#error "Not supported EVENT_LOG_LEVEL"
|
|
#endif
|
|
|
|
/* Number of hashing algorithms supported */
|
|
#define HASH_ALG_COUNT 1U
|
|
|
|
#define INVALID_ID MAX_NUMBER_IDS
|
|
|
|
#define MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
|
|
|
|
#define BL2_STRING "BL_2"
|
|
#define BL31_STRING "BL_31"
|
|
#define BL32_STRING "BL_32"
|
|
#define BL32_EXTRA1_IMAGE_STRING "BL32_EXTRA1_IMAGE"
|
|
#define BL32_EXTRA2_IMAGE_STRING "BL32_EXTRA2_IMAGE"
|
|
#define BL33_STRING "BL_33"
|
|
#define GPT_IMAGE_STRING "GPT"
|
|
#define HW_CONFIG_STRING "HW_CONFIG"
|
|
#define NT_FW_CONFIG_STRING "NT_FW_CONFIG"
|
|
#define SCP_BL2_IMAGE_STRING "SCP_BL2_IMAGE"
|
|
#define SOC_FW_CONFIG_STRING "SOC_FW_CONFIG"
|
|
#define STM32_IMAGE_STRING "STM32"
|
|
#define TOS_FW_CONFIG_STRING "TOS_FW_CONFIG"
|
|
|
|
typedef struct {
|
|
unsigned int id;
|
|
const char *name;
|
|
unsigned int pcr;
|
|
} image_data_t;
|
|
|
|
typedef struct {
|
|
const image_data_t *images_data;
|
|
int (*set_nt_fw_info)(uintptr_t config_base,
|
|
#ifdef SPD_opteed
|
|
uintptr_t log_addr,
|
|
#endif
|
|
size_t log_size, uintptr_t *ns_log_addr);
|
|
int (*set_tos_fw_info)(uintptr_t config_base, uintptr_t log_addr,
|
|
size_t log_size);
|
|
} measured_boot_data_t;
|
|
|
|
#define ID_EVENT_SIZE (sizeof(id_event_headers_t) + \
|
|
(sizeof(id_event_algorithm_size_t) * HASH_ALG_COUNT) + \
|
|
sizeof(id_event_struct_data_t))
|
|
|
|
#define LOC_EVENT_SIZE (sizeof(event2_header_t) + \
|
|
sizeof(tpmt_ha) + TCG_DIGEST_SIZE + \
|
|
sizeof(event2_data_t) + \
|
|
sizeof(startup_locality_event_t))
|
|
|
|
#define LOG_MIN_SIZE (ID_EVENT_SIZE + LOC_EVENT_SIZE)
|
|
|
|
#define EVENT2_HDR_SIZE (sizeof(event2_header_t) + \
|
|
sizeof(tpmt_ha) + TCG_DIGEST_SIZE + \
|
|
sizeof(event2_data_t))
|
|
|
|
/* Functions' declarations */
|
|
void event_log_init(void);
|
|
int event_log_finalise(uint8_t **log_addr, size_t *log_size);
|
|
void dump_event_log(uint8_t *log_addr, size_t log_size);
|
|
const measured_boot_data_t *plat_get_measured_boot_data(void);
|
|
int tpm_record_measurement(uintptr_t data_base, uint32_t data_size,
|
|
uint32_t data_id);
|
|
#endif /* EVENT_LOG_H */
|