diff --git a/plat/st/common/stm32mp_crypto_lib.c b/plat/st/common/stm32mp_crypto_lib.c index 140fb8858c81433000fdccbd7e13ec2404fdabb6..7e086d6047546199d45b40b518a26500dbc28b80 100644 --- a/plat/st/common/stm32mp_crypto_lib.c +++ b/plat/st/common/stm32mp_crypto_lib.c @@ -82,7 +82,7 @@ static int crypto_verify_signature(void *data_ptr, unsigned int data_len, } result = mmap_add_dynamic_region(STM32MP_ROM_BASE, STM32MP_ROM_BASE, - STM32MP_ROM_SIZE, MT_CODE | MT_SECURE); + STM32MP_ROM_SIZE_2MB_ALIGNED, MT_CODE | MT_SECURE); if (result != 0) { return result; } @@ -110,7 +110,7 @@ static int crypto_verify_signature(void *data_ptr, unsigned int data_len, } out: - mmap_remove_dynamic_region(STM32MP_ROM_BASE, STM32MP_ROM_SIZE); + mmap_remove_dynamic_region(STM32MP_ROM_BASE, STM32MP_ROM_SIZE_2MB_ALIGNED); if (result != 0) { stm32mp_delete_loaded_header(); } diff --git a/plat/st/stm32mp1/bl2_plat_setup.c b/plat/st/stm32mp1/bl2_plat_setup.c index 4986c61e4e4757cbfe57ebe15fe641bf72680ede..e0b9a2b8b62c7a782c48ebdab9030d4bcce5d3d4 100644 --- a/plat/st/stm32mp1/bl2_plat_setup.c +++ b/plat/st/stm32mp1/bl2_plat_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -158,19 +158,6 @@ void bl2_el3_early_platform_setup(u_register_t arg0, stm32mp_save_boot_ctx_address(arg0); } -static int ddr_mapping_and_security(void) -{ - uint32_t ddr_size = dt_get_ddr_size(); - - if (ddr_size == 0U) { - return -EINVAL; - } - - /* Map DDR for binary load, now with cacheable attribute */ - return mmap_add_dynamic_region(STM32MP_DDR_BASE, STM32MP_DDR_BASE, - ddr_size, MT_MEMORY | MT_RW | MT_SECURE); -} - void bl2_platform_setup(void) { int ret; @@ -208,7 +195,9 @@ void bl2_platform_setup(void) } } - ret = ddr_mapping_and_security(); + /* Map DDR for binary load, now with cacheable attribute */ + ret = mmap_add_dynamic_region(STM32MP_DDR_BASE, STM32MP_DDR_BASE, + STM32MP_DDR_MAX_SIZE, MT_MEMORY | MT_RW | MT_SECURE); if (ret < 0) { ERROR("DDR mapping: error %d\n", ret); panic(); diff --git a/plat/st/stm32mp1/stm32mp1_def.h b/plat/st/stm32mp1/stm32mp1_def.h index 6ee54b4951656410210a1b17136814ba5b23f79d..5096d1c0bfb97fca10c0c27974a7df2066139193 100644 --- a/plat/st/stm32mp1/stm32mp1_def.h +++ b/plat/st/stm32mp1/stm32mp1_def.h @@ -71,6 +71,7 @@ ******************************************************************************/ #define STM32MP_ROM_BASE U(0x00000000) #define STM32MP_ROM_SIZE U(0x00020000) +#define STM32MP_ROM_SIZE_2MB_ALIGNED U(0x00200000) #define STM32MP_SYSRAM_BASE U(0x2FFC0000) #define STM32MP_SYSRAM_SIZE U(0x00040000) @@ -169,21 +170,25 @@ enum ddr_type { #endif #endif /* STM32MP_USE_STM32IMAGE */ - /* BL2 and BL32/sp_min require finer granularity tables */ #if defined(IMAGE_BL2) - #if STM32MP_USB_PROGRAMMER - #define MAX_XLAT_TABLES U(4) /* 16 KB for mapping */ - #else - #define MAX_XLAT_TABLES U(3) /* 12 KB for mapping */ - #endif -#elif defined(IMAGE_BL32) - #if STM32MP_SP_MIN_IN_DDR - #define MAX_XLAT_TABLES U(7) /* 28 KB for mapping */ - #else - #define MAX_XLAT_TABLES U(4) /* 16 KB for mapping */ - #endif + #define STM32MP_DEFAULT_XLAT U(2) /* 8 KB for mapping */ +#endif + +/* BL32/sp_min require finer granularity tables */ +#if defined(IMAGE_BL32) + #define STM32MP_DEFAULT_XLAT U(4) /* 16 KB for mapping */ +#endif + +#if STM32MP_SP_MIN_IN_DDR && defined(IMAGE_BL32) + #define STM32MP_SP_MIN_IN_DDR_XLAT U(3) /* 12KB for mapping + * (BL32 data, BL32 DT, SCMI buffers) + */ +#else + #define STM32MP_SP_MIN_IN_DDR_XLAT U(0) #endif +#define MAX_XLAT_TABLES (STM32MP_DEFAULT_XLAT + \ + STM32MP_SP_MIN_IN_DDR_XLAT) /* * MAX_MMAP_REGIONS is usually: * BL stm32mp1_mmap size + mmap regions in *_plat_arch_setup