diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memory_hotplug.c | 1 | ||||
-rw-r--r-- | mm/page_alloc.c | 22 | ||||
-rw-r--r-- | mm/sparse.c | 23 |
3 files changed, 23 insertions, 23 deletions
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index fd678a662eae..0c055a090f4d 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c | |||
@@ -72,7 +72,6 @@ static int __add_zone(struct zone *zone, unsigned long phys_start_pfn) | |||
72 | return ret; | 72 | return ret; |
73 | } | 73 | } |
74 | memmap_init_zone(nr_pages, nid, zone_type, phys_start_pfn); | 74 | memmap_init_zone(nr_pages, nid, zone_type, phys_start_pfn); |
75 | zonetable_add(zone, nid, zone_type, phys_start_pfn, nr_pages); | ||
76 | return 0; | 75 | return 0; |
77 | } | 76 | } |
78 | 77 | ||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 08360aa111f9..23bc5bcbdcf9 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -83,13 +83,6 @@ int sysctl_lowmem_reserve_ratio[MAX_NR_ZONES-1] = { | |||
83 | 83 | ||
84 | EXPORT_SYMBOL(totalram_pages); | 84 | EXPORT_SYMBOL(totalram_pages); |
85 | 85 | ||
86 | /* | ||
87 | * Used by page_zone() to look up the address of the struct zone whose | ||
88 | * id is encoded in the upper bits of page->flags | ||
89 | */ | ||
90 | struct zone *zone_table[1 << ZONETABLE_SHIFT] __read_mostly; | ||
91 | EXPORT_SYMBOL(zone_table); | ||
92 | |||
93 | static char *zone_names[MAX_NR_ZONES] = { | 86 | static char *zone_names[MAX_NR_ZONES] = { |
94 | "DMA", | 87 | "DMA", |
95 | #ifdef CONFIG_ZONE_DMA32 | 88 | #ifdef CONFIG_ZONE_DMA32 |
@@ -1715,20 +1708,6 @@ void zone_init_free_lists(struct pglist_data *pgdat, struct zone *zone, | |||
1715 | } | 1708 | } |
1716 | } | 1709 | } |
1717 | 1710 | ||
1718 | #define ZONETABLE_INDEX(x, zone_nr) ((x << ZONES_SHIFT) | zone_nr) | ||
1719 | void zonetable_add(struct zone *zone, int nid, enum zone_type zid, | ||
1720 | unsigned long pfn, unsigned long size) | ||
1721 | { | ||
1722 | unsigned long snum = pfn_to_section_nr(pfn); | ||
1723 | unsigned long end = pfn_to_section_nr(pfn + size); | ||
1724 | |||
1725 | if (FLAGS_HAS_NODE) | ||
1726 | zone_table[ZONETABLE_INDEX(nid, zid)] = zone; | ||
1727 | else | ||
1728 | for (; snum <= end; snum++) | ||
1729 | zone_table[ZONETABLE_INDEX(snum, zid)] = zone; | ||
1730 | } | ||
1731 | |||
1732 | #ifndef __HAVE_ARCH_MEMMAP_INIT | 1711 | #ifndef __HAVE_ARCH_MEMMAP_INIT |
1733 | #define memmap_init(size, nid, zone, start_pfn) \ | 1712 | #define memmap_init(size, nid, zone, start_pfn) \ |
1734 | memmap_init_zone((size), (nid), (zone), (start_pfn)) | 1713 | memmap_init_zone((size), (nid), (zone), (start_pfn)) |
@@ -2421,7 +2400,6 @@ static void __meminit free_area_init_core(struct pglist_data *pgdat, | |||
2421 | if (!size) | 2400 | if (!size) |
2422 | continue; | 2401 | continue; |
2423 | 2402 | ||
2424 | zonetable_add(zone, nid, j, zone_start_pfn, size); | ||
2425 | ret = init_currently_empty_zone(zone, zone_start_pfn, size); | 2403 | ret = init_currently_empty_zone(zone, zone_start_pfn, size); |
2426 | BUG_ON(ret); | 2404 | BUG_ON(ret); |
2427 | zone_start_pfn += size; | 2405 | zone_start_pfn += size; |
diff --git a/mm/sparse.c b/mm/sparse.c index b3c82ba30012..158d6a2a5263 100644 --- a/mm/sparse.c +++ b/mm/sparse.c | |||
@@ -24,6 +24,25 @@ struct mem_section mem_section[NR_SECTION_ROOTS][SECTIONS_PER_ROOT] | |||
24 | #endif | 24 | #endif |
25 | EXPORT_SYMBOL(mem_section); | 25 | EXPORT_SYMBOL(mem_section); |
26 | 26 | ||
27 | #ifdef NODE_NOT_IN_PAGE_FLAGS | ||
28 | /* | ||
29 | * If we did not store the node number in the page then we have to | ||
30 | * do a lookup in the section_to_node_table in order to find which | ||
31 | * node the page belongs to. | ||
32 | */ | ||
33 | #if MAX_NUMNODES <= 256 | ||
34 | static u8 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned; | ||
35 | #else | ||
36 | static u16 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned; | ||
37 | #endif | ||
38 | |||
39 | unsigned long page_to_nid(struct page *page) | ||
40 | { | ||
41 | return section_to_node_table[page_to_section(page)]; | ||
42 | } | ||
43 | EXPORT_SYMBOL(page_to_nid); | ||
44 | #endif | ||
45 | |||
27 | #ifdef CONFIG_SPARSEMEM_EXTREME | 46 | #ifdef CONFIG_SPARSEMEM_EXTREME |
28 | static struct mem_section *sparse_index_alloc(int nid) | 47 | static struct mem_section *sparse_index_alloc(int nid) |
29 | { | 48 | { |
@@ -49,6 +68,10 @@ static int sparse_index_init(unsigned long section_nr, int nid) | |||
49 | struct mem_section *section; | 68 | struct mem_section *section; |
50 | int ret = 0; | 69 | int ret = 0; |
51 | 70 | ||
71 | #ifdef NODE_NOT_IN_PAGE_FLAGS | ||
72 | section_to_node_table[section_nr] = nid; | ||
73 | #endif | ||
74 | |||
52 | if (mem_section[root]) | 75 | if (mem_section[root]) |
53 | return -EEXIST; | 76 | return -EEXIST; |
54 | 77 | ||