diff --git a/include/plat/arm/common/arm_def.h b/include/plat/arm/common/arm_def.h index 787ccb022abbcb40c0beb2564b40bcde91e2b6ba..dbf102b888dbaaaba0cd740b868acb561985106a 100644 --- a/include/plat/arm/common/arm_def.h +++ b/include/plat/arm/common/arm_def.h @@ -177,7 +177,12 @@ ARM_NS_DRAM1_SIZE, \ MT_MEMORY | MT_RW | MT_NS) +#define ARM_MAP_DRAM2 MAP_REGION_FLAT( \ + ARM_DRAM2_BASE, \ + ARM_DRAM2_SIZE, \ + MT_MEMORY | MT_RW | MT_NS) #ifdef SPD_tspd + #define ARM_MAP_TSP_SEC_MEM MAP_REGION_FLAT( \ TSP_SEC_MEM_BASE, \ TSP_SEC_MEM_SIZE, \ @@ -224,8 +229,18 @@ * Required platform porting definitions common to all ARM standard platforms *****************************************************************************/ +/* + * We need to access DRAM2 from BL2 for PSCI_MEM_PROTECT for + * AArch64 builds + */ +#ifdef AARCH64 +#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 36) +#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 36) +#else #define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32) #define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32) +#endif + /* * This macro defines the deepest retention state possible. A higher state diff --git a/plat/arm/board/common/board_css_common.c b/plat/arm/board/common/board_css_common.c index 4638af1836877713ebdfeb492e9341d528e7b984..032ebdf7ec04381b8baa9c4bcf9b1d5a86f76c39 100644 --- a/plat/arm/board/common/board_css_common.c +++ b/plat/arm/board/common/board_css_common.c @@ -36,6 +36,9 @@ const mmap_region_t plat_arm_mmap[] = { CSS_MAP_DEVICE, SOC_CSS_MAP_DEVICE, ARM_MAP_NS_DRAM1, +#ifdef AARCH64 + ARM_MAP_DRAM2, +#endif #ifdef SPD_tspd ARM_MAP_TSP_SEC_MEM, #endif diff --git a/plat/arm/board/fvp/fvp_common.c b/plat/arm/board/fvp/fvp_common.c index bc033130c3fbd0f513da915e51815d658c224acb..7015ac042eaf3e19db4d15aaf6ef1f2d35362393 100644 --- a/plat/arm/board/fvp/fvp_common.c +++ b/plat/arm/board/fvp/fvp_common.c @@ -79,6 +79,9 @@ const mmap_region_t plat_arm_mmap[] = { MAP_DEVICE0, MAP_DEVICE1, ARM_MAP_NS_DRAM1, +#ifdef AARCH64 + ARM_MAP_DRAM2, +#endif #ifdef SPD_tspd ARM_MAP_TSP_SEC_MEM, #endif diff --git a/plat/arm/board/juno/include/platform_def.h b/plat/arm/board/juno/include/platform_def.h index e8a4a40a807538087b1b82639d60f5f2f62788b2..c739587ddf778179902575a4eb99f7d3bfcf038f 100644 --- a/plat/arm/board/juno/include/platform_def.h +++ b/plat/arm/board/juno/include/platform_def.h @@ -68,10 +68,10 @@ #ifdef IMAGE_BL2 #ifdef SPD_opteed -# define PLAT_ARM_MMAP_ENTRIES 10 +# define PLAT_ARM_MMAP_ENTRIES 11 # define MAX_XLAT_TABLES 5 #else -# define PLAT_ARM_MMAP_ENTRIES 9 +# define PLAT_ARM_MMAP_ENTRIES 10 # define MAX_XLAT_TABLES 4 #endif #endif @@ -82,7 +82,7 @@ #endif #ifdef IMAGE_BL31 -# define PLAT_ARM_MMAP_ENTRIES 6 +# define PLAT_ARM_MMAP_ENTRIES 7 # define MAX_XLAT_TABLES 3 #endif diff --git a/plat/arm/common/arm_nor_psci_mem_protect.c b/plat/arm/common/arm_nor_psci_mem_protect.c index 0f16e3529c0d684c913b20e390e7bebaf14b1fbd..c5263fd8516c449fa0e3e7ccd520e03f9bf02e86 100644 --- a/plat/arm/common/arm_nor_psci_mem_protect.c +++ b/plat/arm/common/arm_nor_psci_mem_protect.c @@ -14,6 +14,9 @@ mem_region_t arm_ram_ranges[] = { {ARM_NS_DRAM1_BASE, ARM_NS_DRAM1_SIZE}, +#ifdef AARCH64 + {ARM_DRAM2_BASE, ARM_DRAM2_SIZE}, +#endif }; /*******************************************************************************