mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-30 07:39:24 +00:00
Merge changes from topic "mb/secure-evlog-cpy" into integration
* changes: feat(fvp): copy the Event Log to TZC secured DRAM area feat(arm): carveout DRAM1 area for Event Log
This commit is contained in:
commit
579ea67d99
4 changed files with 74 additions and 13 deletions
|
@ -82,6 +82,7 @@
|
||||||
* - L1 GPT DRAM: Reserved for L1 GPT if RME is enabled
|
* - L1 GPT DRAM: Reserved for L1 GPT if RME is enabled
|
||||||
* - REALM DRAM: Reserved for Realm world if RME is enabled
|
* - REALM DRAM: Reserved for Realm world if RME is enabled
|
||||||
* - TF-A <-> RMM SHARED: Area shared for communication between TF-A and RMM
|
* - TF-A <-> RMM SHARED: Area shared for communication between TF-A and RMM
|
||||||
|
* - Event Log: Area for Event Log if MEASURED_BOOT feature is enabled
|
||||||
* - AP TZC DRAM: The remaining TZC secured DRAM reserved for AP use
|
* - AP TZC DRAM: The remaining TZC secured DRAM reserved for AP use
|
||||||
*
|
*
|
||||||
* RME enabled(64MB) RME not enabled(16MB)
|
* RME enabled(64MB) RME not enabled(16MB)
|
||||||
|
@ -89,13 +90,15 @@
|
||||||
* | | | |
|
* | | | |
|
||||||
* | AP TZC (~28MB) | | AP TZC (~14MB) |
|
* | AP TZC (~28MB) | | AP TZC (~14MB) |
|
||||||
* -------------------- -------------------
|
* -------------------- -------------------
|
||||||
|
* | Event Log | | Event Log |
|
||||||
|
* | (4KB) | | (4KB) |
|
||||||
|
* -------------------- -------------------
|
||||||
|
* | REALM (RMM) | | |
|
||||||
|
* | (32MB - 4KB) | | EL3 TZC (2MB) |
|
||||||
|
* -------------------- -------------------
|
||||||
* | | | |
|
* | | | |
|
||||||
* | REALM (RMM) | | EL3 TZC (2MB) |
|
* | TF-A <-> RMM | | SCP TZC |
|
||||||
* | (32MB - 4KB) | -------------------
|
* | SHARED (4KB) | 0xFFFF_FFFF-------------------
|
||||||
* -------------------- | |
|
|
||||||
* | | | SCP TZC |
|
|
||||||
* | TF-A <-> RMM | 0xFFFF_FFFF-------------------
|
|
||||||
* | SHARED (4KB) |
|
|
||||||
* --------------------
|
* --------------------
|
||||||
* | |
|
* | |
|
||||||
* | EL3 TZC (3MB) |
|
* | EL3 TZC (3MB) |
|
||||||
|
@ -114,7 +117,6 @@
|
||||||
*/
|
*/
|
||||||
#define ARM_EL3_TZC_DRAM1_SIZE UL(0x00300000) /* 3MB */
|
#define ARM_EL3_TZC_DRAM1_SIZE UL(0x00300000) /* 3MB */
|
||||||
#define ARM_L1_GPT_SIZE UL(0x00100000) /* 1MB */
|
#define ARM_L1_GPT_SIZE UL(0x00100000) /* 1MB */
|
||||||
|
|
||||||
/* 32MB - ARM_EL3_RMM_SHARED_SIZE */
|
/* 32MB - ARM_EL3_RMM_SHARED_SIZE */
|
||||||
#define ARM_REALM_SIZE (UL(0x02000000) - \
|
#define ARM_REALM_SIZE (UL(0x02000000) - \
|
||||||
ARM_EL3_RMM_SHARED_SIZE)
|
ARM_EL3_RMM_SHARED_SIZE)
|
||||||
|
@ -134,6 +136,25 @@
|
||||||
#define ARM_SCP_TZC_DRAM1_SIZE PLAT_ARM_SCP_TZC_DRAM1_SIZE
|
#define ARM_SCP_TZC_DRAM1_SIZE PLAT_ARM_SCP_TZC_DRAM1_SIZE
|
||||||
#define ARM_SCP_TZC_DRAM1_END (ARM_SCP_TZC_DRAM1_BASE + \
|
#define ARM_SCP_TZC_DRAM1_END (ARM_SCP_TZC_DRAM1_BASE + \
|
||||||
ARM_SCP_TZC_DRAM1_SIZE - 1U)
|
ARM_SCP_TZC_DRAM1_SIZE - 1U)
|
||||||
|
|
||||||
|
# if (defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd)) && \
|
||||||
|
MEASURED_BOOT
|
||||||
|
#define ARM_EVENT_LOG_DRAM1_SIZE UL(0x00001000) /* 4KB */
|
||||||
|
|
||||||
|
#if ENABLE_RME
|
||||||
|
#define ARM_EVENT_LOG_DRAM1_BASE (ARM_REALM_BASE - \
|
||||||
|
ARM_EVENT_LOG_DRAM1_SIZE)
|
||||||
|
#else
|
||||||
|
#define ARM_EVENT_LOG_DRAM1_BASE (ARM_EL3_TZC_DRAM1_BASE - \
|
||||||
|
ARM_EVENT_LOG_DRAM1_SIZE)
|
||||||
|
#endif /* ENABLE_RME */
|
||||||
|
#define ARM_EVENT_LOG_DRAM1_END (ARM_EVENT_LOG_DRAM1_BASE + \
|
||||||
|
ARM_EVENT_LOG_DRAM1_SIZE - \
|
||||||
|
1U)
|
||||||
|
#else
|
||||||
|
#define ARM_EVENT_LOG_DRAM1_SIZE UL(0)
|
||||||
|
#endif /* (SPD_tspd || SPD_opteed || SPD_spmd) && MEASURED_BOOT */
|
||||||
|
|
||||||
#if ENABLE_RME
|
#if ENABLE_RME
|
||||||
#define ARM_L1_GPT_ADDR_BASE (ARM_DRAM1_BASE + \
|
#define ARM_L1_GPT_ADDR_BASE (ARM_DRAM1_BASE + \
|
||||||
ARM_DRAM1_SIZE - \
|
ARM_DRAM1_SIZE - \
|
||||||
|
@ -170,7 +191,9 @@
|
||||||
ARM_EL3_TZC_DRAM1_SIZE + \
|
ARM_EL3_TZC_DRAM1_SIZE + \
|
||||||
ARM_EL3_RMM_SHARED_SIZE + \
|
ARM_EL3_RMM_SHARED_SIZE + \
|
||||||
ARM_REALM_SIZE + \
|
ARM_REALM_SIZE + \
|
||||||
ARM_L1_GPT_SIZE))
|
ARM_L1_GPT_SIZE + \
|
||||||
|
ARM_EVENT_LOG_DRAM1_SIZE))
|
||||||
|
|
||||||
#define ARM_AP_TZC_DRAM1_END (ARM_AP_TZC_DRAM1_BASE + \
|
#define ARM_AP_TZC_DRAM1_END (ARM_AP_TZC_DRAM1_BASE + \
|
||||||
ARM_AP_TZC_DRAM1_SIZE - 1U)
|
ARM_AP_TZC_DRAM1_SIZE - 1U)
|
||||||
|
|
||||||
|
@ -313,6 +336,15 @@
|
||||||
PLAT_ARM_TRUSTED_DRAM_SIZE, \
|
PLAT_ARM_TRUSTED_DRAM_SIZE, \
|
||||||
MT_MEMORY | MT_RW | MT_SECURE)
|
MT_MEMORY | MT_RW | MT_SECURE)
|
||||||
|
|
||||||
|
# if (defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd)) && \
|
||||||
|
MEASURED_BOOT
|
||||||
|
#define ARM_MAP_EVENT_LOG_DRAM1 \
|
||||||
|
MAP_REGION_FLAT( \
|
||||||
|
ARM_EVENT_LOG_DRAM1_BASE, \
|
||||||
|
ARM_EVENT_LOG_DRAM1_SIZE, \
|
||||||
|
MT_MEMORY | MT_RW | MT_SECURE)
|
||||||
|
#endif /* (SPD_tspd || SPD_opteed || SPD_spmd) && MEASURED_BOOT */
|
||||||
|
|
||||||
#if ENABLE_RME
|
#if ENABLE_RME
|
||||||
/*
|
/*
|
||||||
* We add the EL3_RMM_SHARED size to RMM mapping to map the region as a block.
|
* We add the EL3_RMM_SHARED size to RMM mapping to map the region as a block.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2022, Arm Limited. All rights reserved.
|
* Copyright (c) 2021-2023, Arm Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -15,6 +15,11 @@
|
||||||
#include <plat/arm/common/plat_arm.h>
|
#include <plat/arm/common/plat_arm.h>
|
||||||
#include <plat/common/common_def.h>
|
#include <plat/common/common_def.h>
|
||||||
|
|
||||||
|
#if defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd)
|
||||||
|
CASSERT(ARM_EVENT_LOG_DRAM1_SIZE >= PLAT_ARM_EVENT_LOG_MAX_SIZE, \
|
||||||
|
assert_res_eventlog_mem_insufficient);
|
||||||
|
#endif /* defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd) */
|
||||||
|
|
||||||
/* Event Log data */
|
/* Event Log data */
|
||||||
static uint64_t event_log_base;
|
static uint64_t event_log_base;
|
||||||
|
|
||||||
|
@ -195,9 +200,19 @@ void bl2_plat_mboot_finish(void)
|
||||||
|
|
||||||
event_log_cur_size = event_log_get_cur_size((uint8_t *)event_log_base);
|
event_log_cur_size = event_log_get_cur_size((uint8_t *)event_log_base);
|
||||||
|
|
||||||
|
#if defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd)
|
||||||
|
/* Copy Event Log to TZC secured DRAM memory */
|
||||||
|
(void)memcpy((void *)ARM_EVENT_LOG_DRAM1_BASE,
|
||||||
|
(const void *)event_log_base,
|
||||||
|
event_log_cur_size);
|
||||||
|
|
||||||
|
/* Ensure that the Event Log is visible in TZC secured DRAM memory */
|
||||||
|
flush_dcache_range(ARM_EVENT_LOG_DRAM1_BASE, event_log_cur_size);
|
||||||
|
#endif /* defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd) */
|
||||||
|
|
||||||
rc = arm_set_nt_fw_info(
|
rc = arm_set_nt_fw_info(
|
||||||
#ifdef SPD_opteed
|
#ifdef SPD_opteed
|
||||||
(uintptr_t)event_log_base,
|
(uintptr_t)ARM_EVENT_LOG_DRAM1_BASE,
|
||||||
#endif
|
#endif
|
||||||
event_log_cur_size, &ns_log_addr);
|
event_log_cur_size, &ns_log_addr);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
@ -222,7 +237,7 @@ void bl2_plat_mboot_finish(void)
|
||||||
|
|
||||||
#if defined(SPD_tspd) || defined(SPD_spmd)
|
#if defined(SPD_tspd) || defined(SPD_spmd)
|
||||||
/* Set Event Log data in TOS_FW_CONFIG */
|
/* Set Event Log data in TOS_FW_CONFIG */
|
||||||
rc = arm_set_tos_fw_info((uintptr_t)event_log_base,
|
rc = arm_set_tos_fw_info((uintptr_t)ARM_EVENT_LOG_DRAM1_BASE,
|
||||||
event_log_cur_size);
|
event_log_cur_size);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
ERROR("%s(): Unable to update %s_FW_CONFIG\n",
|
ERROR("%s(): Unable to update %s_FW_CONFIG\n",
|
||||||
|
|
|
@ -111,6 +111,15 @@ const mmap_region_t plat_arm_mmap[] = {
|
||||||
* Required to load HW_CONFIG, SPMC and SPs to trusted DRAM.
|
* Required to load HW_CONFIG, SPMC and SPs to trusted DRAM.
|
||||||
*/
|
*/
|
||||||
ARM_MAP_TRUSTED_DRAM,
|
ARM_MAP_TRUSTED_DRAM,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Required to load Event Log in TZC secured memory
|
||||||
|
*/
|
||||||
|
#if MEASURED_BOOT && (defined(SPD_tspd) || defined(SPD_opteed) || \
|
||||||
|
defined(SPD_spmd))
|
||||||
|
ARM_MAP_EVENT_LOG_DRAM1,
|
||||||
|
#endif /* MEASURED_BOOT && (SPD_tspd || SPD_opteed || SPD_spmd) */
|
||||||
|
|
||||||
#if ENABLE_RME
|
#if ENABLE_RME
|
||||||
ARM_MAP_RMM_DRAM,
|
ARM_MAP_RMM_DRAM,
|
||||||
ARM_MAP_GPT_L1_DRAM,
|
ARM_MAP_GPT_L1_DRAM,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2022, Arm Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2023, Arm Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -168,7 +168,12 @@
|
||||||
# define MAX_XLAT_TABLES 5
|
# define MAX_XLAT_TABLES 5
|
||||||
#else
|
#else
|
||||||
# define PLAT_ARM_MMAP_ENTRIES 12
|
# define PLAT_ARM_MMAP_ENTRIES 12
|
||||||
# define MAX_XLAT_TABLES 6
|
# if (defined(SPD_tspd) || defined(SPD_opteed) || defined(SPD_spmd)) && \
|
||||||
|
defined(IMAGE_BL2) && MEASURED_BOOT
|
||||||
|
# define MAX_XLAT_TABLES 7
|
||||||
|
# else
|
||||||
|
# define MAX_XLAT_TABLES 6
|
||||||
|
# endif /* (SPD_tspd || SPD_opteed || SPD_spmd) && IMAGE_BL2 && MEASURED_BOOT */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue