Re: ARM bootm regression

Alexander Shiyan shc_work at mail.ru
Thu Oct 22 02:13:27 EDT 2020


>Среда, 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;

---


More information about the barebox mailing list