From 6c8f523138cd94bc0608708e821a09b02c8c2f5a Mon Sep 17 00:00:00 2001 From: Marco Felsch Date: Wed, 21 Sep 2022 17:48:35 +0200 Subject: [PATCH] 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 --- plat/imx/imx8m/ddr/dram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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; -- 2.39.5