how can I cleanly exclude memory from the kernel memory allocator?
From: Larry Bassel <hidden>
Date: 2011-03-25 15:28:59
Also in:
linux-arm-msm
On 24 Mar 11 19:27, Nicolas Pitre wrote:
On Thu, 24 Mar 2011, Larry Bassel wrote:quoted
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.There is already a hook for that. In your machine descriptor you can add a .fixup method to do just that. See tag_fixup_mem32() in arch/arm/mach-orion5x/common.c for a usage example.
I thought fixup was called before the tags were parsed so that one could (for instance) set up a memory configuration which would override the tags (such as what is done in arch/arm/mach-msm/board-halibut,c) -- while I could presumably parse the tags myself there to get the memory map that the bootloader passed in (and alter it), this seems like a duplication of effort.
Nicolas
Larry
-- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo at vger.kernel.org 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.