From: Marco Felsch Date: Wed, 21 Sep 2022 15:48:35 +0000 (+0200) Subject: fix(imx8m): fix dram retention fsp_table access X-Git-Tag: baikal/aarch64/sdk5.9~64^2 X-Git-Url: https://git.baikalelectronics.ru/?a=commitdiff_plain;h=6c8f523138cd94bc0608708e821a09b02c8c2f5a;p=arm-tf.git fix(imx8m): fix dram retention fsp_table access The fsp_table access by [i-1] can cause invalid memory access in case of i=0. This can be the case if no fsp_table is available. Fix this by adding the idx variable which tracks the correct index. Signed-off-by: Marco Felsch Change-Id: If2285517eb9fe837f3ad54360307a77a658bf62c --- diff --git a/plat/imx/imx8m/ddr/dram.c b/plat/imx/imx8m/ddr/dram.c index 6ccd6fd17..8ea9ba192 100644 --- a/plat/imx/imx8m/ddr/dram.c +++ b/plat/imx/imx8m/ddr/dram.c @@ -120,6 +120,7 @@ static uint64_t waiting_dvfs(uint32_t id, uint32_t flags, void dram_info_init(unsigned long dram_timing_base) { uint32_t ddrc_mstr, current_fsp; + unsigned int idx = 0; uint32_t flags = 0; uint32_t rc; unsigned int i; @@ -144,11 +145,12 @@ void dram_info_init(unsigned long dram_timing_base) if (!dram_info.timing_info->fsp_table[i]) { break; } + idx = i; } dram_info.num_fsp = i; /* check if has bypass mode support */ - if (dram_info.timing_info->fsp_table[i-1] < 666) { + if (dram_info.timing_info->fsp_table[idx] < 666) { dram_info.bypass_mode = true; } else { dram_info.bypass_mode = false;