From: lbassel@codeaurora.org (Larry Bassel)
To: linux-arm-kernel@lists.infradead.org
Subject: how can I cleanly exclude memory from the kernel memory allocator?
Date: Thu, 24 Mar 2011 15:18:54 -0700 [thread overview]
Message-ID: <20110324221854.GA29359@labbmf-linux.qualcomm.com> (raw)
I want to (early in system initialization) exclude some
contiguous physical memory from one or more memory banks
so that it won't be mapped in the normal kernel 1-to-1 mapping
(so that it can be mapped uncached, strongly ordered, etc.
as needed -- I know that it is forbidden to have a cached
and an uncached mapping to the same memory) and so that it
won't be freed into the kernel memory allocator (so that
it won't fragment and can be allocated using genalloc).
I have tried to find a clean way to do this, but none of
the approaches I've considered seem very good:
1. Add a hook to the memory tag parsing routine to (possibly)
change each tag before arm_add_memory() is called,
or alter arm_add_memory() itself.
2. Add a hook at the beginning of paging_init() to inspect
and alter the meminfo memory bank starts and sizes as needed.
3. Wait until after the memory is added to the normal
kernel memory pool and somehow get it back out
(I can't use alloc_bootmem() or related functionality of course
since then the memory will be part of the cached kernel 1-to-1 1M
page mapping, precluding use of ioremap() on it).
A further drawback for #1 is that I'd really like to
see all of the available memory banks before deciding which
memory to steal (we often have multiple memory banks on
our platforms).
Perhaps there is a solution for this problem that already exists
that I'm unaware of (or at least community consensus about how
one should add this functionality).
I believe Russell King has stated that he intends
to carve out memory that can be used for dma_alloc_coherent(),
that won't be mapped otherwise by the kernel.
I'd like to know how he is planning to do this, as I could hopefully
do something similar.
Thanks.
Larry Bassel
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
next reply other threads:[~2011-03-24 22:18 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-24 22:18 Larry Bassel [this message]
2011-03-24 23:14 ` how can I cleanly exclude memory from the kernel memory allocator? Colin Cross
2011-03-25 17:37 ` Larry Bassel
2011-03-24 23:27 ` Nicolas Pitre
2011-03-25 15:28 ` Larry Bassel
2011-03-25 17:39 ` Larry Bassel
2011-03-25 20:27 ` Russell King - ARM Linux
2011-04-19 23:33 ` Larry Bassel
2011-04-19 23:40 ` Larry Bassel
2011-04-20 6:48 ` Colin Cross
2011-04-20 19:22 ` Larry Bassel
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=20110324221854.GA29359@labbmf-linux.qualcomm.com \
--to=lbassel@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).