Message ID | 20220513070524.3642-1-dinesh.maniyam@intel.com |
---|---|
State | Superseded |
Delegated to: | Simon Goldschmidt |
Headers | show |
Series | [v2] ddr: altera: soc64: Integer fix overflow that caused DDR size mismatched | expand |
> -----Original Message----- > From: Maniyam, Dinesh <dinesh.maniyam@intel.com> > Sent: Friday, 13 May 2022 3:05 pm > To: u-boot@lists.denx.de > Cc: Lim, Elly Siew Chin <elly.siew.chin.lim@intel.com>; Chee, Tien Fong > <tien.fong.chee@intel.com>; Hea, Kok Kiang <kok.kiang.hea@intel.com>; Gan, > Yau Wai <yau.wai.gan@intel.com>; Kho, Sin Hui <sin.hui.kho@intel.com>; > Lokanathan, Raaj <raaj.lokanathan@intel.com>; Maniyam, Dinesh > <dinesh.maniyam@intel.com> > Subject: [PATCH v2] ddr: altera: soc64: Integer fix overflow that caused DDR size > mismatched > > From: Dinesh Maniyam <dinesh.maniyam@intel.com> > > Convert the constant integer to 'phys_size_t' to avoid overflow when calculating > the SDRAM size. > > Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com> > > --- > > v1->v2 > - Add space in title > --- > drivers/ddr/altera/sdram_soc64.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/ddr/altera/sdram_soc64.c > b/drivers/ddr/altera/sdram_soc64.c > index d6baac2410..1f479c514d 100644 > --- a/drivers/ddr/altera/sdram_soc64.c > +++ b/drivers/ddr/altera/sdram_soc64.c > @@ -239,7 +239,8 @@ phys_size_t sdram_calculate_size(struct > altera_sdram_plat *plat) { > u32 dramaddrw = hmc_readl(plat, DRAMADDRW); > > - phys_size_t size = 1 << > (DRAMADDRW_CFG_CS_ADDR_WIDTH(dramaddrw) + > + phys_size_t size = (phys_size_t)1 << > + (DRAMADDRW_CFG_CS_ADDR_WIDTH(dramaddrw) + > > DRAMADDRW_CFG_BANK_GRP_ADDR_WIDTH(dramaddrw) + > DRAMADDRW_CFG_BANK_ADDR_WIDTH(dramaddrw) > + > DRAMADDRW_CFG_ROW_ADDR_WIDTH(dramaddrw) > + > -- > 2.26.2 I will re-submit a new version of this patch to update the copyright and alignment Regards, Dinesh
diff --git a/drivers/ddr/altera/sdram_soc64.c b/drivers/ddr/altera/sdram_soc64.c index d6baac2410..1f479c514d 100644 --- a/drivers/ddr/altera/sdram_soc64.c +++ b/drivers/ddr/altera/sdram_soc64.c @@ -239,7 +239,8 @@ phys_size_t sdram_calculate_size(struct altera_sdram_plat *plat) { u32 dramaddrw = hmc_readl(plat, DRAMADDRW); - phys_size_t size = 1 << (DRAMADDRW_CFG_CS_ADDR_WIDTH(dramaddrw) + + phys_size_t size = (phys_size_t)1 << + (DRAMADDRW_CFG_CS_ADDR_WIDTH(dramaddrw) + DRAMADDRW_CFG_BANK_GRP_ADDR_WIDTH(dramaddrw) + DRAMADDRW_CFG_BANK_ADDR_WIDTH(dramaddrw) + DRAMADDRW_CFG_ROW_ADDR_WIDTH(dramaddrw) +