mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: "Clément Leger" <cleger@kalray.eu>
Cc: Barebox List <barebox@lists.infradead.org>
Subject: Re: [PATCH 1/5] k1c: Initial Kalray Coolidge (k1c) architecture support
Date: Thu, 16 Jan 2020 14:34:08 +0100	[thread overview]
Message-ID: <20200116133408.3o3yxtedsn3laudk@pengutronix.de> (raw)
In-Reply-To: <1412004075.12577531.1579181173442.JavaMail.zimbra@kalray.eu>

On Thu, Jan 16, 2020 at 02:26:13PM +0100, Clément Leger wrote:
> 
> 
> ----- On 16 Jan, 2020, at 14:11, Sascha Hauer s.hauer@pengutronix.de wrote:
> 
> > On Thu, Jan 16, 2020 at 01:24:41PM +0100, Clément Leger wrote:
> >> 
> >> ----- On 16 Jan, 2020, at 11:55, Sascha Hauer s.hauer@pengutronix.de 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@pengutronix.de 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.
> > 
> > mem_malloc_init() actually is C code, so you must have have configured a
> > stack already ;)
> 
> Yes of course ! Currently, I was using MALLOC_BASE. this way, stack and
> malloc were growing at opposite sides.
> 
> But in fact, maybe the stack could be added into the linker script. This way,
> we would not have to hardcode it using STACK_BASE.
> This way it would not depend anymore on malloc base.
> 
> Do you think it would be ok ?

Yes, that sounds good.

> 
> > 
> >> - 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.
> > 
> > Indeed.
> > 
> >> - MALLOC_SIZE will still needs to be there
> > 
> > On ARM we use roughly half of the available memory for malloc. Maximum
> > is 1GiB anyway, as this is the maximum supported by tlsf malloc.
> > 
> > The preferred layout is to put barebox binary and stack to the end of
> > available SDRAM and put the malloc area beneath it. That of course needs
> > a relocatable barebox binary, I don't know if you can generate such an
> > image. If not you have to think of some good base address and put the
> > malloc area whereever it fits.
> 
> That would be a good solution yes ! But we don't have implemented relocatable
> support yet.
> Since we will always have DDR on Coolidge SoC, we can safely assume SDRAM
> will always be present.
> So in the meantime, we can have the following memory layout (if stack included
> in barebox binary):
> 
> - 0x100000000 -> 128M reserved for Linux loading
> - 0x100000000 + 128M -> barebox binary
> - 0x100000000 + 128M + text_size = malloc area start
> 
> Device tree could then be used to check the available amount of memory.

With todays multi gigabyte RAM sizes this approach is fine. In the old
days when memory was sparse it was painful when barebox ended up
somewhere in the middle of SDRAM and divided the usable memory size.

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@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2020-01-16 13:34 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-15 10:26 [PATCH 0/5] Add support for Kalray k1c core Clement Leger
2020-01-15 10:26 ` [PATCH 1/5] k1c: Initial Kalray Coolidge (k1c) architecture support Clement Leger
2020-01-16  9:26   ` Sascha Hauer
2020-01-16 10:49     ` Clément Leger
2020-01-16 10:55       ` Sascha Hauer
2020-01-16 12:24         ` Clément Leger
2020-01-16 13:11           ` Sascha Hauer
2020-01-16 13:26             ` Clément Leger
2020-01-16 13:34               ` Sascha Hauer [this message]
2020-01-15 10:26 ` [PATCH 2/5] k1c: Add processor definitions Clement Leger
2020-01-15 10:26 ` [PATCH 3/5] k1c: Add support for device tree Clement Leger
2020-01-15 10:26 ` [PATCH 4/5] clocksource: k1c: Add k1c clocksource support Clement Leger
2020-01-15 10:26 ` [PATCH 5/5] watchdog: k1c: Add k1c watchdog support Clement Leger
2020-01-20 15:10   ` Ahmad Fatoum
2020-01-20 16:08     ` Clément Leger
2020-01-16  8:25 ` [PATCH 0/5] Add support for Kalray k1c core Sascha Hauer
2020-01-16  8:53   ` Clément Leger
2020-01-16  9:22     ` Sascha Hauer
2020-01-16  9:37       ` Clément Leger
2020-01-16  9:46         ` Sascha Hauer
2020-01-16  9:49 ` Roland Hieber
2020-01-16  9:53   ` Clément Leger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200116133408.3o3yxtedsn3laudk@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=cleger@kalray.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox