aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandrine Bailleux <sandrine.bailleux@arm.com>2018-06-06 16:35:40 +0200
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>2018-06-13 09:19:41 +0100
commitd801a1d035e8868fc2b131653c5fd96ceed10a21 (patch)
tree778f6d292a0136c298ebfdbd5803065d76999cd4
parenta0b9bb79a035a7421318502d04dde723e7381b6a (diff)
downloadtrusted-firmware-a-d801a1d035e8868fc2b131653c5fd96ceed10a21.tar.gz
SPM: Treat SP xlat tables the same as others
The translation tables allocated for the Secure Partition do not need to be treated as a special case. They can be put amongst the other tables mapping BL31's general purpose memory. They will be mapped with the same attributes as them, which is fine. The explicit alignment constraint in BL31's linker script to pad the last page of memory allocated to the Secure Partition's translation tables is useless too, as page tables are per se pages, thus their end address is naturally aligned on a page-boundary. In fact, this patch does not change the existing behaviour. Since patch 22282bb68a31 ("SPM: Move all SP-related info to SP context struct"), the secure_partition.c file has been renamed into sp_xlat.c but the linker script has not been properly updated. As a result, the SP translation tables are not specifically put at the start of the xlat_table linker section, the __SP_IMAGE_XLAT_TABLES_START__/_END__ symbols have the same value, the size of the resulting mmap_region covering these xlat tables is 0 and so it is ignored. Change-Id: I4cf0a4cc090298811cca53fc9cee74df0f2b1512 Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
-rw-r--r--bl31/bl31.ld.S7
-rw-r--r--include/plat/arm/common/arm_def.h8
-rw-r--r--include/services/secure_partition.h9
-rw-r--r--plat/arm/common/arm_common.c8
4 files changed, 1 insertions, 31 deletions
diff --git a/bl31/bl31.ld.S b/bl31/bl31.ld.S
index c6a4fe4993..59df9b80e2 100644
--- a/bl31/bl31.ld.S
+++ b/bl31/bl31.ld.S
@@ -221,13 +221,6 @@ SECTIONS
* tables library.
*/
xlat_table (NOLOAD) : {
-#if ENABLE_SPM
- __SP_IMAGE_XLAT_TABLES_START__ = .;
- *secure_partition*.o(xlat_table)
- /* Make sure that the rest of the page is empty. */
- . = NEXT(PAGE_SIZE);
- __SP_IMAGE_XLAT_TABLES_END__ = .;
-#endif
*(xlat_table)
} >RAM
diff --git a/include/plat/arm/common/arm_def.h b/include/plat/arm/common/arm_def.h
index d87fc16fe7..e07156c001 100644
--- a/include/plat/arm/common/arm_def.h
+++ b/include/plat/arm/common/arm_def.h
@@ -245,13 +245,7 @@
* The number of regions like RO(code), coherent and data required by
* different BL stages which need to be mapped in the MMU.
*/
-#if ENABLE_SPM && defined(IMAGE_BL31)
-# if USE_COHERENT_MEM
-# define ARM_BL_REGIONS 5
-# else
-# define ARM_BL_REGIONS 4
-# endif
-#elif USE_COHERENT_MEM
+#if USE_COHERENT_MEM
# define ARM_BL_REGIONS 4
#else
# define ARM_BL_REGIONS 3
diff --git a/include/services/secure_partition.h b/include/services/secure_partition.h
index f1fdb733f8..d4aff1cc08 100644
--- a/include/services/secure_partition.h
+++ b/include/services/secure_partition.h
@@ -7,18 +7,9 @@
#ifndef __SECURE_PARTITION_H__
#define __SECURE_PARTITION_H__
-#include <bl_common.h>
#include <types.h>
#include <utils_def.h>
-/* Import linker symbols */
-IMPORT_SYM(uintptr_t, __SP_IMAGE_XLAT_TABLES_START__, SP_IMAGE_XLAT_TABLES_START);
-IMPORT_SYM(uintptr_t, __SP_IMAGE_XLAT_TABLES_END__, SP_IMAGE_XLAT_TABLES_END);
-
-/* Definitions */
-#define SP_IMAGE_XLAT_TABLES_SIZE \
- (SP_IMAGE_XLAT_TABLES_END - SP_IMAGE_XLAT_TABLES_START)
-
/*
* Flags used by the secure_partition_mp_info structure to describe the
* characteristics of a cpu. Only a single flag is defined at the moment to
diff --git a/plat/arm/common/arm_common.c b/plat/arm/common/arm_common.c
index 3f0ea01a1b..11bdeac66e 100644
--- a/plat/arm/common/arm_common.c
+++ b/plat/arm/common/arm_common.c
@@ -81,14 +81,6 @@ void arm_setup_page_tables(uintptr_t total_base,
MT_DEVICE | MT_RW | MT_SECURE);
#endif
-#if ENABLE_SPM && defined(IMAGE_BL31)
- /* The address of the following region is calculated by the linker. */
- mmap_add_region(SP_IMAGE_XLAT_TABLES_START,
- SP_IMAGE_XLAT_TABLES_START,
- SP_IMAGE_XLAT_TABLES_SIZE,
- MT_MEMORY | MT_RW | MT_SECURE);
-#endif
-
/* Now (re-)map the platform-specific memory regions */
mmap_add(plat_arm_get_mmap());