----- On 16 Jan, 2020, at 11:55, Sascha Hauer s.hauer@xxxxxxxxxxxxxx wrote: > On Thu, Jan 16, 2020 at 11:49:31AM +0100, Clément Leger wrote: >> Hi Sasha >> >> ----- On 16 Jan, 2020, at 10:26, Sascha Hauer s.hauer@xxxxxxxxxxxxxx wrote: >> >> > On Wed, Jan 15, 2020 at 11:26:46AM +0100, Clement Leger wrote: >> >> +config MALLOC_BASE >> >> + hex >> >> + default 0x100000000 >> >> + >> >> +config MALLOC_SIZE >> >> + hex >> >> + default 0x800000 >> >> + prompt "malloc area size" >> >> +endmenu >> > >> >> diff --git a/arch/k1c/lib/board.c b/arch/k1c/lib/board.c >> >> new file mode 100644 >> >> index 000000000..d17a32614 >> >> --- /dev/null >> >> +++ b/arch/k1c/lib/board.c >> >> @@ -0,0 +1,20 @@ >> >> +// SPDX-License-Identifier: GPL-2.0-only >> >> +/* >> >> + * Copyright (C) 2019 Kalray Inc. >> >> + */ >> >> + >> >> +#include <common.h> >> >> +#include <malloc.h> >> >> +#include <memory.h> >> >> +#include <asm-generic/memory_layout.h> >> >> + >> >> + >> >> +void __noreturn k1c_start_barebox(void) >> >> +{ >> >> + mem_malloc_init((void *)CONFIG_MALLOC_BASE, >> >> + (void *)(CONFIG_MALLOC_BASE + MALLOC_SIZE - 1)); >> > >> > You could extract valid memory from the device tree instead and pick >> > some memory for malloc there. See of_find_mem() how this can be done. >> >> I think we are going to bite our tail here since of_unflatten_dtb does >> some xzalloc to unflatten the DTB so we need to initialize the malloc >> allocator before accessing DTB. > > of_find_mem() doesn't use of_unflatten_dtb(), it uses libfdt to parse > the device tree. Oh indeed. I looked at it and I see potential problems: - Stack address/size will still need to be hardcoded because it needs to be setup before executing C code. - We have multiple memory nodes in our device tree (SMEM and DDR) so we will probably have to do some quirks to finally find the DDR memory node. - MALLOC_SIZE will still needs to be there I'm afraid we will end up with some mixed up approach were one mecanism is dynamic (malloc) and the other is not (stack). Moreover, the "dynamic" memory detection will be potentially tainted with some if (mem_addr > 0x100000000). One other option would be to add a compatible field in the memory node. This way, the search could be easier but I will still have to hardcode the stack address. Tell me if you see another mecanism > > 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 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox