aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/mmzone.h6
-rw-r--r--mm/Kconfig8
-rw-r--r--mm/page_alloc.c6
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
407extern struct pglist_data contig_page_data; 407extern 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
24endchoice 24endchoice
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#
31config 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
1976static bootmem_data_t contig_bootmem_data; 1976static bootmem_data_t contig_bootmem_data;
1977struct pglist_data contig_page_data = { .bdata = &contig_bootmem_data }; 1977struct pglist_data contig_page_data = { .bdata = &contig_bootmem_data };
1978 1978
1979EXPORT_SYMBOL(contig_page_data); 1979EXPORT_SYMBOL(contig_page_data);
1980#endif
1980 1981
1981void __init free_area_init(unsigned long *zones_size) 1982void __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