mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +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
|
||||
* - REALM DRAM: Reserved for Realm world if RME is enabled
|
||||
* - 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
|
||||
*
|
||||
* RME enabled(64MB) RME not enabled(16MB)
|
||||
|
@ -89,13 +90,15 @@
|
|||
* | | | |
|
||||
* | AP TZC (~28MB) | | AP TZC (~14MB) |
|
||||
* -------------------- -------------------
|
||||
* | Event Log | | Event Log |
|
||||
* | (4KB) | | (4KB) |
|
||||
* -------------------- -------------------
|
||||
* | REALM (RMM) | | |
|
||||
* | (32MB - 4KB) | | EL3 TZC (2MB) |
|
||||
* -------------------- -------------------
|
||||
* | | | |
|
||||
* | REALM (RMM) | | EL3 TZC (2MB) |
|
||||
* | (32MB - 4KB) | -------------------
|
||||
* -------------------- | |
|
||||
* | | | SCP TZC |
|
||||
* | TF-A <-> RMM | 0xFFFF_FFFF-------------------
|
||||
* | SHARED (4KB) |
|
||||
* | TF-A <-> RMM | | SCP TZC |
|
||||
* | SHARED (4KB) | 0xFFFF_FFFF-------------------
|
||||
* --------------------
|
||||
* | |
|
||||
* | EL3 TZC (3MB) |
|
||||
|
@ -114,7 +117,6 @@
|
|||
*/
|
||||
#define ARM_EL3_TZC_DRAM1_SIZE UL(0x00300000) /* 3MB */
|
||||
#define ARM_L1_GPT_SIZE UL(0x00100000) /* 1MB */
|
||||
|
||||
/* 32MB - ARM_EL3_RMM_SHARED_SIZE */
|
||||
#define ARM_REALM_SIZE (UL(0x02000000) - \
|
||||
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_END (ARM_SCP_TZC_DRAM1_BASE + \
|
||||
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
|
||||
#define ARM_L1_GPT_ADDR_BASE (ARM_DRAM1_BASE + \
|
||||
ARM_DRAM1_SIZE - \
|
||||
|
@ -170,7 +191,9 @@
|
|||
ARM_EL3_TZC_DRAM1_SIZE + \
|
||||
ARM_EL3_RMM_SHARED_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 + \
|
||||
ARM_AP_TZC_DRAM1_SIZE - 1U)
|
||||
|
||||
|
@ -313,6 +336,15 @@
|
|||
PLAT_ARM_TRUSTED_DRAM_SIZE, \
|
||||
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
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
@ -15,6 +15,11 @@
|
|||
#include <plat/arm/common/plat_arm.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 */
|
||||
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);
|
||||
|
||||
#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(
|
||||
#ifdef SPD_opteed
|
||||
(uintptr_t)event_log_base,
|
||||
(uintptr_t)ARM_EVENT_LOG_DRAM1_BASE,
|
||||
#endif
|
||||
event_log_cur_size, &ns_log_addr);
|
||||
if (rc != 0) {
|
||||
|
@ -222,7 +237,7 @@ void bl2_plat_mboot_finish(void)
|
|||
|
||||
#if defined(SPD_tspd) || defined(SPD_spmd)
|
||||
/* 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);
|
||||
if (rc != 0) {
|
||||
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.
|
||||
*/
|
||||
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
|
||||
ARM_MAP_RMM_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
|
||||
*/
|
||||
|
@ -168,7 +168,12 @@
|
|||
# define MAX_XLAT_TABLES 5
|
||||
#else
|
||||
# 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
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue