summaryrefslogtreecommitdiff
path: root/plat/arm/board/fvp
diff options
context:
space:
mode:
authorSandrine Bailleux <sandrine.bailleux@arm.com>2018-01-16 10:04:16 +0100
committerSandrine Bailleux <sandrine.bailleux@arm.com>2018-01-22 14:49:46 +0000
commit992788147ff7461b37eb52f17ad962ef21fc372f (patch)
tree595d0856f8984e4c6a6c6172167ef78277a84cd5 /plat/arm/board/fvp
parenta3077f97cf34e827bfa57d856d395ee98493f1d2 (diff)
FVP: Add support for comm. buffer in MM_COMMUNICATE
The MM_COMMUNICATE SMC interface supports passing a communication buffer for additional payload data from normal world to the secure partition. This commit adds support to use it. On the TFTF side, the memory mappings have been changed to map this memory buffer area. This allows TFTF tests to fill in this buffer to pass data associated to secure service requests. The number of translation tables had to be increased to map this new memory region. On Cactus' side, the secure services loop has been modified to read the communication buffer for MM_COMMUNICATE messages. A common data structure has been defined, that corresponds to the type of information that TFTF and Cactus will exchange through MM_COMMUNICATE messages. The structure might evolve in the future as we get a better idea of the kind of data that need to be passed for secure services requests. The existing MM_COMMUNICATE tests in TFTF have been modified to pass a valid communication buffer address with a dummy ID. Change-Id: I2df80a3e64f77eb229783802201a01008d3f9c2f Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Diffstat (limited to 'plat/arm/board/fvp')
-rw-r--r--plat/arm/board/fvp/include/platform_def.h8
-rw-r--r--plat/arm/board/fvp/plat_setup.c2
2 files changed, 9 insertions, 1 deletions
diff --git a/plat/arm/board/fvp/include/platform_def.h b/plat/arm/board/fvp/include/platform_def.h
index 842efd2..e734371 100644
--- a/plat/arm/board/fvp/include/platform_def.h
+++ b/plat/arm/board/fvp/include/platform_def.h
@@ -28,8 +28,9 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include "../fvp_def.h"
#include <arch.h>
+#include <arm_def.h>
+#include "../fvp_def.h"
/*******************************************************************************
* Platform definitions used by common code
@@ -219,8 +220,13 @@
* Platform specific page table and MMU setup constants
******************************************************************************/
#define ADDR_SPACE_SIZE (1ull << 32)
+#if IMAGE_TFTF
+#define MAX_XLAT_TABLES 5
+#define MAX_MMAP_REGIONS 16
+#else
#define MAX_XLAT_TABLES 4
#define MAX_MMAP_REGIONS 16
+#endif
/*******************************************************************************
* Used to align variables on the biggest cache line size in the platform.
diff --git a/plat/arm/board/fvp/plat_setup.c b/plat/arm/board/fvp/plat_setup.c
index 14d1305..e497f22 100644
--- a/plat/arm/board/fvp/plat_setup.c
+++ b/plat/arm/board/fvp/plat_setup.c
@@ -60,6 +60,8 @@ static const mmap_region_t mmap[] = {
{ TFTF_BASE + L2_BLOCK_SIZE, TFTF_BASE + L2_BLOCK_SIZE,
(DRAM_BASE + DRAM_SIZE) - (TFTF_BASE + L2_BLOCK_SIZE), MT_MEMORY | MT_RW | MT_NS },
{ 0xFFFFFFFF - DRAM_TZ_SIZE + 1, 0xFFFFFFFF - DRAM_TZ_SIZE + 1, DRAM_TZ_SIZE, MT_MEMORY | MT_RW | MT_NS },
+ { ARM_SECURE_SERVICE_BUFFER_BASE, ARM_SECURE_SERVICE_BUFFER_BASE,
+ ARM_SECURE_SERVICE_BUFFER_SIZE, MT_MEMORY | MT_RW | MT_NS },
{ 0 }
};
#endif /* IMAGE_NS_BL1U */