diff options
-rw-r--r-- | include/linux/mmzone.h | 6 | ||||
-rw-r--r-- | mm/Kconfig | 8 | ||||
-rw-r--r-- | mm/page_alloc.c | 6 |
3 files changed, 14 insertions, 6 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 39e912708e2a..95f4a780ea66 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -402,7 +402,7 @@ int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, struct file *, | |||
402 | /* Returns the number of the current Node. */ | 402 | /* Returns the number of the current Node. */ |
403 | #define numa_node_id() (cpu_to_node(raw_smp_processor_id())) | 403 | #define numa_node_id() (cpu_to_node(raw_smp_processor_id())) |
404 | 404 | ||
405 | #ifndef CONFIG_DISCONTIGMEM | 405 | #ifndef CONFIG_NEED_MULTIPLE_NODES |
406 | 406 | ||
407 | extern struct pglist_data contig_page_data; | 407 | extern struct pglist_data contig_page_data; |
408 | #define NODE_DATA(nid) (&contig_page_data) | 408 | #define NODE_DATA(nid) (&contig_page_data) |
@@ -410,11 +410,11 @@ extern struct pglist_data contig_page_data; | |||
410 | #define MAX_NODES_SHIFT 1 | 410 | #define MAX_NODES_SHIFT 1 |
411 | #define pfn_to_nid(pfn) (0) | 411 | #define pfn_to_nid(pfn) (0) |
412 | 412 | ||
413 | #else /* CONFIG_DISCONTIGMEM */ | 413 | #else /* CONFIG_NEED_MULTIPLE_NODES */ |
414 | 414 | ||
415 | #include <asm/mmzone.h> | 415 | #include <asm/mmzone.h> |
416 | 416 | ||
417 | #endif /* !CONFIG_DISCONTIGMEM */ | 417 | #endif /* !CONFIG_NEED_MULTIPLE_NODES */ |
418 | 418 | ||
419 | #if BITS_PER_LONG == 32 || defined(ARCH_HAS_ATOMIC_UNSIGNED) | 419 | #if BITS_PER_LONG == 32 || defined(ARCH_HAS_ATOMIC_UNSIGNED) |
420 | /* | 420 | /* |
diff --git a/mm/Kconfig b/mm/Kconfig index 69caa9d8674e..15c131393639 100644 --- a/mm/Kconfig +++ b/mm/Kconfig | |||
@@ -23,3 +23,11 @@ config DISCONTIGMEM | |||
23 | 23 | ||
24 | endchoice | 24 | endchoice |
25 | 25 | ||
26 | # | ||
27 | # Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's | ||
28 | # to represent different areas of memory. This variable allows | ||
29 | # those dependencies to exist individually. | ||
30 | # | ||
31 | config NEED_MULTIPLE_NODES | ||
32 | def_bool y | ||
33 | depends on DISCONTIGMEM || NUMA | ||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 1958358e29b0..20e239599db0 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1972,18 +1972,18 @@ void __init free_area_init_node(int nid, struct pglist_data *pgdat, | |||
1972 | free_area_init_core(pgdat, zones_size, zholes_size); | 1972 | free_area_init_core(pgdat, zones_size, zholes_size); |
1973 | } | 1973 | } |
1974 | 1974 | ||
1975 | #ifndef CONFIG_DISCONTIGMEM | 1975 | #ifndef CONFIG_NEED_MULTIPLE_NODES |
1976 | static bootmem_data_t contig_bootmem_data; | 1976 | static bootmem_data_t contig_bootmem_data; |
1977 | struct pglist_data contig_page_data = { .bdata = &contig_bootmem_data }; | 1977 | struct pglist_data contig_page_data = { .bdata = &contig_bootmem_data }; |
1978 | 1978 | ||
1979 | EXPORT_SYMBOL(contig_page_data); | 1979 | EXPORT_SYMBOL(contig_page_data); |
1980 | #endif | ||
1980 | 1981 | ||
1981 | void __init free_area_init(unsigned long *zones_size) | 1982 | void __init free_area_init(unsigned long *zones_size) |
1982 | { | 1983 | { |
1983 | free_area_init_node(0, &contig_page_data, zones_size, | 1984 | free_area_init_node(0, NODE_DATA(0), zones_size, |
1984 | __pa(PAGE_OFFSET) >> PAGE_SHIFT, NULL); | 1985 | __pa(PAGE_OFFSET) >> PAGE_SHIFT, NULL); |
1985 | } | 1986 | } |
1986 | #endif | ||
1987 | 1987 | ||
1988 | #ifdef CONFIG_PROC_FS | 1988 | #ifdef CONFIG_PROC_FS |
1989 | 1989 | ||