diff options
author | Tony Luck <tony.luck@intel.com> | 2005-09-08 12:39:59 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-09-08 12:39:59 -0700 |
commit | d8c97d5f3aa348272df2ccb4e224b1cf9a1eb6d7 (patch) | |
tree | cb71557f43084027559762f58e51f2df5d5e5c46 /arch/ia64/kernel/uncached.c | |
parent | 4706df3d3c42af802597d82c8b1542c3d52eab23 (diff) | |
download | op-kernel-dev-d8c97d5f3aa348272df2ccb4e224b1cf9a1eb6d7.zip op-kernel-dev-d8c97d5f3aa348272df2ccb4e224b1cf9a1eb6d7.tar.gz |
[IA64] simplified efi memory map parsing
New version leaves the original memory map unmodified.
Also saves any granule trimmings for use by the uncached
memory allocator.
Inspired by Khalid Aziz (various traces of his patch still
remain). Fixes to uncached_build_memmap() and sn2 testing
by Martin Hicks.
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/kernel/uncached.c')
-rw-r--r-- | arch/ia64/kernel/uncached.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c index 4e9d06c..c6d4044 100644 --- a/arch/ia64/kernel/uncached.c +++ b/arch/ia64/kernel/uncached.c @@ -205,23 +205,18 @@ EXPORT_SYMBOL(uncached_free_page); static int __init uncached_build_memmap(unsigned long start, unsigned long end, void *arg) { - long length; - unsigned long vstart, vend; + long length = end - start; int node; - length = end - start; - vstart = start + __IA64_UNCACHED_OFFSET; - vend = end + __IA64_UNCACHED_OFFSET; - dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end); - memset((char *)vstart, 0, length); + memset((char *)start, 0, length); - node = paddr_to_nid(start); + node = paddr_to_nid(start - __IA64_UNCACHED_OFFSET); - for (; vstart < vend ; vstart += PAGE_SIZE) { - dprintk(KERN_INFO "sticking %lx into the pool!\n", vstart); - gen_pool_free(uncached_pool[node], vstart, PAGE_SIZE); + for (; start < end ; start += PAGE_SIZE) { + dprintk(KERN_INFO "sticking %lx into the pool!\n", start); + gen_pool_free(uncached_pool[node], start, PAGE_SIZE); } return 0; |