aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-29 14:36:04 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-29 17:05:37 -0400
commit6a22c57b8d2a62dea7280a6b2ac807a539ef0716 (patch)
tree8a1da0c5de1fa8c895bd1ac052e99042afa9a454
parent3529a233421fc43fa7bfdf7a4317daf28348a23d (diff)
Revert "x86_64: allocate sparsemem memmap above 4G"
This reverts commit 2e1c49db4c640b35df13889b86b9d62215ade4b6. First off, testing in Fedora has shown it to cause boot failures, bisected down by Martin Ebourne, and reported by Dave Jobes. So the commit will likely be reverted in the 2.6.23 stable kernels. Secondly, in the 2.6.24 model, x86-64 has now grown support for SPARSEMEM_VMEMMAP, which disables the relevant code anyway, so while the bug is not visible any more, it's become invisible due to the code just being irrelevant and no longer enabled on the only architecture that this ever affected. Reported-by: Dave Jones <davej@redhat.com> Tested-by: Martin Ebourne <fedora@ebourne.me.uk> Cc: Zou Nan hai <nanhai.zou@intel.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Cc: Andrew Morton <akpm@linux-foundation.org> Acked-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--arch/x86/mm/init_64.c6
-rw-r--r--include/linux/bootmem.h1
-rw-r--r--mm/sparse.c11
3 files changed, 0 insertions, 18 deletions
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 1e3862e41065..a7308b2cd058 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -728,12 +728,6 @@ int in_gate_area_no_task(unsigned long addr)
728 return (addr >= VSYSCALL_START) && (addr < VSYSCALL_END); 728 return (addr >= VSYSCALL_START) && (addr < VSYSCALL_END);
729} 729}
730 730
731void * __init alloc_bootmem_high_node(pg_data_t *pgdat, unsigned long size)
732{
733 return __alloc_bootmem_core(pgdat->bdata, size,
734 SMP_CACHE_BYTES, (4UL*1024*1024*1024), 0);
735}
736
737const char *arch_vma_name(struct vm_area_struct *vma) 731const char *arch_vma_name(struct vm_area_struct *vma)
738{ 732{
739 if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso) 733 if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index c83534ee1e79..0365ec9fc0c9 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -59,7 +59,6 @@ extern void *__alloc_bootmem_core(struct bootmem_data *bdata,
59 unsigned long align, 59 unsigned long align,
60 unsigned long goal, 60 unsigned long goal,
61 unsigned long limit); 61 unsigned long limit);
62extern void *alloc_bootmem_high_node(pg_data_t *pgdat, unsigned long size);
63 62
64#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE 63#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
65extern void reserve_bootmem(unsigned long addr, unsigned long size); 64extern void reserve_bootmem(unsigned long addr, unsigned long size);
diff --git a/mm/sparse.c b/mm/sparse.c
index 08fb14f5eea3..e06f514fe04f 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -220,12 +220,6 @@ static int __meminit sparse_init_one_section(struct mem_section *ms,
220 return 1; 220 return 1;
221} 221}
222 222
223__attribute__((weak)) __init
224void *alloc_bootmem_high_node(pg_data_t *pgdat, unsigned long size)
225{
226 return NULL;
227}
228
229static unsigned long usemap_size(void) 223static unsigned long usemap_size(void)
230{ 224{
231 unsigned long size_bytes; 225 unsigned long size_bytes;
@@ -267,11 +261,6 @@ struct page __init *sparse_mem_map_populate(unsigned long pnum, int nid)
267 if (map) 261 if (map)
268 return map; 262 return map;
269 263
270 map = alloc_bootmem_high_node(NODE_DATA(nid),
271 sizeof(struct page) * PAGES_PER_SECTION);
272 if (map)
273 return map;
274
275 map = alloc_bootmem_node(NODE_DATA(nid), 264 map = alloc_bootmem_node(NODE_DATA(nid),
276 sizeof(struct page) * PAGES_PER_SECTION); 265 sizeof(struct page) * PAGES_PER_SECTION);
277 return map; 266 return map;