From 5caf7e66fce3e154cc6e63f7d5a4e7d13769f77f Mon Sep 17 00:00:00 2001 From: Anson Huang Date: Wed, 21 Oct 2020 10:11:26 +0800 Subject: MLK-24904 plat: imx: Use sc_rm_memreg_frag() to avoid memory partition overlay Use sc_rm_memreg_frag() instead of sc_rm_memreg_alloc() to avoid memory partition overlay, sc_rm_memreg_frag() will return non-overlapping regions. Signed-off-by: Anson Huang Reviewed-by: Ye Li --- plat/imx/imx8dxl/imx8dxl_bl31_setup.c | 24 ++++++++++++------------ plat/imx/imx8qm/imx8qm_bl31_setup.c | 24 ++++++++++++------------ plat/imx/imx8qx/imx8qx_bl31_setup.c | 24 ++++++++++++------------ 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/plat/imx/imx8dxl/imx8dxl_bl31_setup.c b/plat/imx/imx8dxl/imx8dxl_bl31_setup.c index 33af33d7..155f1450 100644 --- a/plat/imx/imx8dxl/imx8dxl_bl31_setup.c +++ b/plat/imx/imx8dxl/imx8dxl_bl31_setup.c @@ -240,9 +240,9 @@ void imx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_tee); } else { if ((BL32_LIMIT - 1) < end) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, BL32_LIMIT , end); + err = sc_rm_memreg_frag(ipc_handle, &mr, BL32_LIMIT , end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL32_LIMIT, end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL32_LIMIT, end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -251,9 +251,9 @@ void imx8_partition_resources(void) } if (start < (BL32_BASE - 1)) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, start, BL32_BASE - 1); + err = sc_rm_memreg_frag(ipc_handle, &mr, start, BL32_BASE - 1); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL32_BASE - 1); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL32_BASE - 1); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -279,9 +279,9 @@ void imx8_partition_resources(void) if ((end > BL32_BASE) && mr_tee_atf_same) reg_end = BL32_BASE - 1; #endif - err = sc_rm_memreg_alloc(ipc_handle, &mr, BL31_LIMIT, reg_end); + err = sc_rm_memreg_frag(ipc_handle, &mr, BL31_LIMIT, reg_end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL31_LIMIT, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL31_LIMIT, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -292,9 +292,9 @@ void imx8_partition_resources(void) if (mr_tee_atf_same) { if ((BL32_LIMIT - 1) < end) { reg_start = BL32_LIMIT; - err = sc_rm_memreg_alloc(ipc_handle, &mr, reg_start, end); + err = sc_rm_memreg_frag(ipc_handle, &mr, reg_start, end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", reg_start, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", reg_start, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -305,9 +305,9 @@ void imx8_partition_resources(void) #endif if (start < (BL31_BASE - 1)) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, start, BL31_BASE - 1); + err = sc_rm_memreg_frag(ipc_handle, &mr, start, BL31_BASE - 1); if (err) - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL31_BASE - 1); err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -324,9 +324,9 @@ void imx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_ocram); } else { if ((OCRAM_BASE + OCRAM_ALIAS_SIZE - 1) < end) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); + err = sc_rm_memreg_frag(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) diff --git a/plat/imx/imx8qm/imx8qm_bl31_setup.c b/plat/imx/imx8qm/imx8qm_bl31_setup.c index 59b27d32..54c4351d 100644 --- a/plat/imx/imx8qm/imx8qm_bl31_setup.c +++ b/plat/imx/imx8qm/imx8qm_bl31_setup.c @@ -240,9 +240,9 @@ void mx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_tee); } else { if ((BL32_LIMIT - 1) < end) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, BL32_LIMIT , end); + err = sc_rm_memreg_frag(ipc_handle, &mr, BL32_LIMIT , end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL32_LIMIT, end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL32_LIMIT, end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -251,9 +251,9 @@ void mx8_partition_resources(void) } if (start < (BL32_BASE - 1)) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, start, BL32_BASE - 1); + err = sc_rm_memreg_frag(ipc_handle, &mr, start, BL32_BASE - 1); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL32_BASE - 1); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL32_BASE - 1); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -280,9 +280,9 @@ void mx8_partition_resources(void) if ((end > BL32_BASE) && mr_tee_atf_same) reg_end = BL32_BASE - 1; #endif - err = sc_rm_memreg_alloc(ipc_handle, &mr, BL31_LIMIT, reg_end); + err = sc_rm_memreg_frag(ipc_handle, &mr, BL31_LIMIT, reg_end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL31_LIMIT, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL31_LIMIT, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -293,9 +293,9 @@ void mx8_partition_resources(void) if (mr_tee_atf_same) { if ((BL32_LIMIT - 1) < end) { reg_start = BL32_LIMIT; - err = sc_rm_memreg_alloc(ipc_handle, &mr, reg_start, end); + err = sc_rm_memreg_frag(ipc_handle, &mr, reg_start, end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", reg_start, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", reg_start, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -306,9 +306,9 @@ void mx8_partition_resources(void) #endif if (start < (BL31_BASE - 1)) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, start, BL31_BASE - 1); + err = sc_rm_memreg_frag(ipc_handle, &mr, start, BL31_BASE - 1); if (err) - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL31_BASE - 1); err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -325,9 +325,9 @@ void mx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_ocram); } else { if ((OCRAM_BASE + OCRAM_ALIAS_SIZE - 1) < end) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); + err = sc_rm_memreg_frag(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) diff --git a/plat/imx/imx8qx/imx8qx_bl31_setup.c b/plat/imx/imx8qx/imx8qx_bl31_setup.c index 7411f436..abd1e635 100644 --- a/plat/imx/imx8qx/imx8qx_bl31_setup.c +++ b/plat/imx/imx8qx/imx8qx_bl31_setup.c @@ -240,9 +240,9 @@ void imx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_tee); } else { if ((BL32_LIMIT - 1) < end) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, BL32_LIMIT , end); + err = sc_rm_memreg_frag(ipc_handle, &mr, BL32_LIMIT , end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL32_LIMIT, end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL32_LIMIT, end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -251,9 +251,9 @@ void imx8_partition_resources(void) } if (start < (BL32_BASE - 1)) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, start, BL32_BASE - 1); + err = sc_rm_memreg_frag(ipc_handle, &mr, start, BL32_BASE - 1); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL32_BASE - 1); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL32_BASE - 1); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -279,9 +279,9 @@ void imx8_partition_resources(void) if ((end > BL32_BASE) && mr_tee_atf_same) reg_end = BL32_BASE - 1; #endif - err = sc_rm_memreg_alloc(ipc_handle, &mr, BL31_LIMIT, reg_end); + err = sc_rm_memreg_frag(ipc_handle, &mr, BL31_LIMIT, reg_end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL31_LIMIT, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)BL31_LIMIT, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -292,9 +292,9 @@ void imx8_partition_resources(void) if (mr_tee_atf_same) { if ((BL32_LIMIT - 1) < end) { reg_start = BL32_LIMIT; - err = sc_rm_memreg_alloc(ipc_handle, &mr, reg_start, end); + err = sc_rm_memreg_frag(ipc_handle, &mr, reg_start, end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", reg_start, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", reg_start, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -305,9 +305,9 @@ void imx8_partition_resources(void) #endif if (start < (BL31_BASE - 1)) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, start, BL31_BASE - 1); + err = sc_rm_memreg_frag(ipc_handle, &mr, start, BL31_BASE - 1); if (err) - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", start, (sc_faddr_t)BL31_BASE - 1); err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) @@ -324,9 +324,9 @@ void imx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_ocram); } else { if ((OCRAM_BASE + OCRAM_ALIAS_SIZE - 1) < end) { - err = sc_rm_memreg_alloc(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); + err = sc_rm_memreg_frag(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); + ERROR("sc_rm_memreg_frag failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) -- cgit v1.2.3