Re: how can I cleanly exclude memory from the kernel memory allocator?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 24 Mar 11 16:14, Colin Cross wrote:
> On Thu, Mar 24, 2011 at 3:18 PM, Larry Bassel <lbassel@xxxxxxxxxxxxxx> wrote:
> > 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
> 
> You want memblock_remove, called from the new .reserve machine entry
> function.  See arch/arm/plat-omap/devices.c for an example.

Yes, this is effectively my option #2 (reserve memory after the tags
are parsed and before paging_init). This looks like a good approach.

Thanks.

Larry

> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux