feat(arm): carveout DRAM1 area for Event Log

Reserved 4KB area for Event Log in DRAM1. This area is used by BL2
to copy Event Log from internal SRAM to this carved out DRAM region
in the subsequent patch.

Change-Id: I7b405775c66d249e31edf7688d95770e6c05c175
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
This commit is contained in:
Manish V Badarkhe 2022-12-12 10:14:25 +00:00
parent 1035e3a87a
commit 6b2e961fb1
3 changed files with 56 additions and 10 deletions

View file

@ -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.

View file

@ -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,

View file

@ -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
/*