All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] malloc_simple: Add support for switching to DRAM heap
Date: Mon, 14 Sep 2015 16:29:21 +0200	[thread overview]
Message-ID: <1442240961-14177-1-git-send-email-hdegoede@redhat.com> (raw)

malloc_simple uses a part of the stack as heap, initially it uses
SYS_MALLOC_F_LEN bytes which typically is quite small as the initial
stacks sits in SRAM and we do not have that much SRAM to work with.

When DRAM becomes available we may switch the stack from SRAM to DRAM
to give use more room. This commit adds support for also switching to
a new bigger malloc_simple heap located in the new stack.

Note that this requires spl_init to be called before spl_relocate_stack_gd
which in practice means that spl_init must be called from board_init_f.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Changes in v2:
-Panic if spl_init is not called before switching the heap from SRAM to
 DRAM, spl_init will set up the malloc_limit to SYS_MALLOC_F_LEN bytes,
 which is the SRAM limit and as such MUST be called before
---
 Kconfig          | 10 ++++++++++
 common/spl/spl.c | 12 ++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/Kconfig b/Kconfig
index 0ae4fab..86088bc 100644
--- a/Kconfig
+++ b/Kconfig
@@ -142,6 +142,16 @@ config SPL_STACK_R_ADDR
 	  Specify the address in SDRAM for the SPL stack. This will be set up
 	  before board_init_r() is called.
 
+config SPL_STACK_R_MALLOC_SIMPLE_LEN
+	depends on SPL_STACK_R && SPL_MALLOC_SIMPLE
+	hex "Size of malloc_simple heap after switching to DRAM SPL stack"
+	default 0x100000
+	help
+	  Specify the amount of the stack to use as memory pool for
+	  malloc_simple after switching the stack to DRAM. This may be set
+	  to give board_init_r() a larger heap then the initial heap in
+	  SRAM which is limited to SYS_MALLOC_F_LEN bytes.
+
 config TPL
 	bool
 	depends on SPL && SUPPORT_TPL
diff --git a/common/spl/spl.c b/common/spl/spl.c
index b09a626..f687144 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -347,6 +347,18 @@ ulong spl_relocate_stack_gd(void)
 	memcpy(new_gd, (void *)gd, sizeof(gd_t));
 	gd = new_gd;
 
+#ifdef CONFIG_SPL_MALLOC_SIMPLE
+	if (CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN) {
+		if (!(gd->flags & GD_FLG_SPL_INIT))
+			panic("spl_init must be called before heap realloc");
+
+		ptr -= CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN;
+		gd->malloc_base = ptr;
+		gd->malloc_limit = CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN;
+		gd->malloc_ptr = 0;
+	}
+#endif
+
 	return ptr;
 #else
 	return 0;
-- 
2.4.3

             reply	other threads:[~2015-09-14 14:29 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-14 14:29 Hans de Goede [this message]
2015-09-15 15:04 ` [U-Boot] [PATCH v2] malloc_simple: Add support for switching to DRAM heap Tom Rini

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=1442240961-14177-1-git-send-email-hdegoede@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.