Hi Marek,

Thank you for the patch.

On Sun, Apr 14, 2024 at 08:37:20PM +0200, Marek Vasut wrote:
> In case of systems where DRAM bank ends at the edge of 32bit boundary,
> start + size calculations would overflow. This happens on STM32MP15xx
> with 1 DRAM bank starting at 0xc0000000 and 1 GiB of DRAM. This is a
> usual 32bit system DRAM size overflow, fix it by doing all DRAM size
> and offset calculations using u64 types.

I'm not sure I like this much, as it removes a useful indication
regarding what the variables store. Wouldn't it be better if the code's
logic could be modified to avoid those overflows ?

> This also covers a case where
> a 32bit PAE system might be able to address up to 36bits of DRAM.

Shouldn't phys_addr_t be a 64-bit type on PAE systems ?

> Fixes: a4df06e41fa2 ("boot: fdt: Change type of env_get_bootm_low() to 
> phys_addr_t")
> Signed-off-by: Marek Vasut <ma...@denx.de>
> ---
> Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Cc: Matthias Schiffer <matthias.schif...@ew.tq-group.com>
> Cc: Simon Glass <s...@chromium.org>
> Cc: Tom Rini <tr...@konsulko.com>
> ---
>  boot/image-fdt.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/boot/image-fdt.c b/boot/image-fdt.c
> index 2b92bdaff16..f09716cba30 100644
> --- a/boot/image-fdt.c
> +++ b/boot/image-fdt.c
> @@ -158,13 +158,10 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void 
> *fdt_blob)
>   */
>  int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size)
>  {
> +     u64     start, size, usable, addr, low, mapsize;
>       void    *fdt_blob = *of_flat_tree;
>       void    *of_start = NULL;
> -     phys_addr_t start, size, usable;
>       char    *fdt_high;
> -     phys_addr_t addr;
> -     phys_addr_t low;
> -     phys_size_t mapsize;
>       ulong   of_len = 0;
>       int     bank;
>       int     err;

-- 
Regards,

Laurent Pinchart

Reply via email to