ARM bootm regression

Sascha Hauer s.hauer at pengutronix.de
Thu Oct 22 03:26:59 EDT 2020


On Thu, Oct 22, 2020 at 09:13:27AM +0300, Alexander Shiyan wrote:
> >Среда, 21 октября 2020, 17:44 +03:00 от Sascha Hauer <s.hauer at pengutronix.de>:
> >
> >On Fri, Oct 16, 2020 at 11:49:16AM +0300, Alexander Shiyan wrote:
> >> Hello.
> >> 
> >> Found a regression in arm/lib32/bootm.c after a patch
> >> "ARM: bootm: make sure we place the kernel in free memory".
> >> 
> >> The initial memory size for the board is set to 8 MB (before reading the real value from DT),
> >You could read the real value from DT earlier using libfdt, see
> >arch/arm/cpu/board-dt-2nd.c for usage examples. That doesn't solve it of
> >course when your board really has only 8MB memory.
> >
> >> so the stack, malloc_space, etc. are placed in the initial 8M space.
> >> Then get_kernel_addresses() gets the real SDRAM area (for my board it is 64M),
> >> but decreases this size by the first children size (malloc_space),
> >> so mem_end is incorrect in this case.
> >
> >Does an additional:
> >
> >if (kaddr < mem_start)
> >kaddr = mem_start;
> >
> >help?
> 
> Works fine with the following modification:
> 
> 		/*
> 		 * Make sure we do not place the image outside of the
> 		 * available memory.
> 		 */
> 		if (((kaddr + image_size + spacing) > mem_end) &&
> 		    ((mem_end - image_size - spacing) >= mem_start))
> 			kaddr = mem_end - image_size - spacing;

Ok, nice. Can you send a formal patch for inclusion?

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list