From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] early_malloc outline
Date: Thu, 09 Aug 2012 20:09:53 +1000 [thread overview]
Message-ID: <50238C71.6060705@gmail.com> (raw)
In-Reply-To: <CAEB7QLBOkhiBHDVFemMXjO7OCU7syqGc_XhJviq95a7LpvBjdQ@mail.gmail.com>
Hi Thomas,
On 08/09/2012 06:58 PM, Tomas Hlavacek wrote:
> Hi Graeme,
>
> On Thu, Aug 9, 2012 at 1:33 AM, Graeme Russ <graeme.russ@gmail.com> wrote:
>
>>
>> OK, this got me to thinking about the 'relocation' function in the driver
>> structure and how we can make the early heap more generic. My thoughts tie
>> into the DM tree structure being discussed in another thread...
>>
> [snip]
>>
>> Then in relocate_code() we call relocate_early_malloc() which simply walks
>> the relocation function list and calls each one. Each function is
>> responsible for allocating new memory form the final heap and copying the
>> data from the early heap to the newly allocated memory
>>
>> This way, anyone (not just drivers) can take advantage of the early heap.
>> And if a user of early heap does not care about the data being available
>> post relocation, they just don't bother implementing and registering a
>> relocation function.
>
> I am wandering how could it be implemented on certain platforms (ARM
Forget about platform specifics - Not.....Your.....Problem ;)
> for instance) without wasting memory for blind copy of all data (even
> data that the user does not want to relocate afterwards) or without
Easy - don't blind copy. Each (and every) user of early malloc needs their
own relocation routine. The user of the early heap gets to decide what gets
copied to final heap. Let's look at a couple of scenarios:
a) Pre-console buffer gets allocated pre-relocation. The contents get
dumped as soon as console is available (usually before relocation) so
the pre-console buffer does not need to be relocated to final heap
b) Something (who know what) builds a tree during platform init prior to
relocation. After the tree has been built, no elements will be added or
deleted. So during relocation, instead of a tree, a simple array is
allocated and the elements copied into it in order (so a simple binary
search can be conducted late)
> initializing real_malloc() and doing relocation when caches are still
> disabled. Maybe it is a technical detail now but it seems to me that
> some trade off in this situation might be needed.
Bingo! - Don't sweat the details. Provide a well-structured API and if
there are performance gains to be made later, they can be made.
Remember, the whole point of implementing the new driver model is to bring
in a consistent API. To support that, you made need sub-features with their
own APIs. In a lot of respects, it matters less if the API is imperfect if
it is wholly consistent
Regards,
Graeme
next prev parent reply other threads:[~2012-08-09 10:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-31 15:30 [U-Boot] early_malloc outline Tomas Hlavacek
2012-07-31 19:52 ` Wolfgang Denk
2012-08-01 15:19 ` Tomas Hlavacek
2012-08-01 19:09 ` Wolfgang Denk
2012-08-01 22:12 ` Tomas Hlavacek
2012-08-07 21:07 ` Wolfgang Denk
2012-08-08 11:47 ` Tomas Hlavacek
2012-08-08 19:32 ` Wolfgang Denk
2012-08-08 23:33 ` Graeme Russ
2012-08-09 8:58 ` Tomas Hlavacek
2012-08-09 10:09 ` Graeme Russ [this message]
2012-08-09 12:35 ` Wolfgang Denk
2012-08-01 2:57 ` Graeme Russ
2012-08-01 14:47 ` Tomas Hlavacek
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=50238C71.6060705@gmail.com \
--to=graeme.russ@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox