projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
[powerpc.git]
/
mm
/
bootmem.c
diff --git
a/mm/bootmem.c
b/mm/bootmem.c
index
f0f85fa
..
00a9697
100644
(file)
--- a/
mm/bootmem.c
+++ b/
mm/bootmem.c
@@
-15,6
+15,7
@@
#include <asm/bug.h>
#include <asm/io.h>
#include <asm/bug.h>
#include <asm/io.h>
+#include <asm/processor.h>
#include "internal.h"
#include "internal.h"
@@
-26,8
+27,6
@@
unsigned long max_low_pfn;
unsigned long min_low_pfn;
unsigned long max_pfn;
unsigned long min_low_pfn;
unsigned long max_pfn;
-EXPORT_UNUSED_SYMBOL(max_pfn); /* June 2006 */
-
static LIST_HEAD(bdata_list);
#ifdef CONFIG_CRASH_DUMP
/*
static LIST_HEAD(bdata_list);
#ifdef CONFIG_CRASH_DUMP
/*
@@
-195,6
+194,10
@@
__alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,
if (limit && bdata->node_boot_start >= limit)
return NULL;
if (limit && bdata->node_boot_start >= limit)
return NULL;
+ /* on nodes without memory - bootmem_map is NULL */
+ if (!bdata->node_bootmem_map)
+ return NULL;
+
end_pfn = bdata->node_low_pfn;
limit = PFN_DOWN(limit);
if (limit && end_pfn > limit)
end_pfn = bdata->node_low_pfn;
limit = PFN_DOWN(limit);
if (limit && end_pfn > limit)
@@
-453,7
+456,9
@@
void * __init __alloc_bootmem_node(pg_data_t *pgdat, unsigned long size,
return __alloc_bootmem(size, align, goal);
}
return __alloc_bootmem(size, align, goal);
}
-#define LOW32LIMIT 0xffffffff
+#ifndef ARCH_LOW_ADDRESS_LIMIT
+#define ARCH_LOW_ADDRESS_LIMIT 0xffffffffUL
+#endif
void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
unsigned long goal)
void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
unsigned long goal)
@@
-462,7
+467,8
@@
void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
void *ptr;
list_for_each_entry(bdata, &bdata_list, list) {
void *ptr;
list_for_each_entry(bdata, &bdata_list, list) {
- ptr = __alloc_bootmem_core(bdata, size, align, goal, LOW32LIMIT);
+ ptr = __alloc_bootmem_core(bdata, size, align, goal,
+ ARCH_LOW_ADDRESS_LIMIT);
if (ptr)
return ptr;
}
if (ptr)
return ptr;
}
@@
-478,5
+484,6
@@
void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
void * __init __alloc_bootmem_low_node(pg_data_t *pgdat, unsigned long size,
unsigned long align, unsigned long goal)
{
void * __init __alloc_bootmem_low_node(pg_data_t *pgdat, unsigned long size,
unsigned long align, unsigned long goal)
{
- return __alloc_bootmem_core(pgdat->bdata, size, align, goal, LOW32LIMIT);
+ return __alloc_bootmem_core(pgdat->bdata, size, align, goal,
+ ARCH_LOW_ADDRESS_LIMIT);
}
}