diff options
-rw-r--r-- | arch/ia64/mm/init.c | 9 | ||||
-rw-r--r-- | arch/powerpc/mm/mem.c | 9 | ||||
-rw-r--r-- | arch/sh/mm/init.c | 9 | ||||
-rw-r--r-- | arch/x86/mm/init_32.c | 36 | ||||
-rw-r--r-- | arch/x86/mm/init_64.c | 9 | ||||
-rw-r--r-- | mm/memory_hotplug.c | 19 |
6 files changed, 22 insertions, 69 deletions
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 5c1de53c8c1c..fc6c6636ffda 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -682,15 +682,6 @@ mem_init (void) | |||
682 | } | 682 | } |
683 | 683 | ||
684 | #ifdef CONFIG_MEMORY_HOTPLUG | 684 | #ifdef CONFIG_MEMORY_HOTPLUG |
685 | void online_page(struct page *page) | ||
686 | { | ||
687 | ClearPageReserved(page); | ||
688 | init_page_count(page); | ||
689 | __free_page(page); | ||
690 | totalram_pages++; | ||
691 | num_physpages++; | ||
692 | } | ||
693 | |||
694 | int arch_add_memory(int nid, u64 start, u64 size) | 685 | int arch_add_memory(int nid, u64 start, u64 size) |
695 | { | 686 | { |
696 | pg_data_t *pgdat; | 687 | pg_data_t *pgdat; |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 5ccb579b81e4..d9e37f365b54 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -110,15 +110,6 @@ EXPORT_SYMBOL(phys_mem_access_prot); | |||
110 | 110 | ||
111 | #ifdef CONFIG_MEMORY_HOTPLUG | 111 | #ifdef CONFIG_MEMORY_HOTPLUG |
112 | 112 | ||
113 | void online_page(struct page *page) | ||
114 | { | ||
115 | ClearPageReserved(page); | ||
116 | init_page_count(page); | ||
117 | __free_page(page); | ||
118 | totalram_pages++; | ||
119 | num_physpages++; | ||
120 | } | ||
121 | |||
122 | #ifdef CONFIG_NUMA | 113 | #ifdef CONFIG_NUMA |
123 | int memory_add_physaddr_to_nid(u64 start) | 114 | int memory_add_physaddr_to_nid(u64 start) |
124 | { | 115 | { |
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index 53dde0607362..d7df26bd1e54 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -307,15 +307,6 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
307 | #endif | 307 | #endif |
308 | 308 | ||
309 | #ifdef CONFIG_MEMORY_HOTPLUG | 309 | #ifdef CONFIG_MEMORY_HOTPLUG |
310 | void online_page(struct page *page) | ||
311 | { | ||
312 | ClearPageReserved(page); | ||
313 | init_page_count(page); | ||
314 | __free_page(page); | ||
315 | totalram_pages++; | ||
316 | num_physpages++; | ||
317 | } | ||
318 | |||
319 | int arch_add_memory(int nid, u64 start, u64 size) | 310 | int arch_add_memory(int nid, u64 start, u64 size) |
320 | { | 311 | { |
321 | pg_data_t *pgdat; | 312 | pg_data_t *pgdat; |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 4a4761892951..de236e419cb5 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
@@ -287,47 +287,17 @@ static void __init permanent_kmaps_init(pgd_t *pgd_base) | |||
287 | pkmap_page_table = pte; | 287 | pkmap_page_table = pte; |
288 | } | 288 | } |
289 | 289 | ||
290 | static void __meminit free_new_highpage(struct page *page) | ||
291 | { | ||
292 | init_page_count(page); | ||
293 | __free_page(page); | ||
294 | totalhigh_pages++; | ||
295 | } | ||
296 | |||
297 | void __init add_one_highpage_init(struct page *page, int pfn, int bad_ppro) | 290 | void __init add_one_highpage_init(struct page *page, int pfn, int bad_ppro) |
298 | { | 291 | { |
299 | if (page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))) { | 292 | if (page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))) { |
300 | ClearPageReserved(page); | 293 | ClearPageReserved(page); |
301 | free_new_highpage(page); | 294 | init_page_count(page); |
295 | __free_page(page); | ||
296 | totalhigh_pages++; | ||
302 | } else | 297 | } else |
303 | SetPageReserved(page); | 298 | SetPageReserved(page); |
304 | } | 299 | } |
305 | 300 | ||
306 | static int __meminit | ||
307 | add_one_highpage_hotplug(struct page *page, unsigned long pfn) | ||
308 | { | ||
309 | free_new_highpage(page); | ||
310 | totalram_pages++; | ||
311 | #ifdef CONFIG_FLATMEM | ||
312 | max_mapnr = max(pfn, max_mapnr); | ||
313 | #endif | ||
314 | num_physpages++; | ||
315 | |||
316 | return 0; | ||
317 | } | ||
318 | |||
319 | /* | ||
320 | * Not currently handling the NUMA case. | ||
321 | * Assuming single node and all memory that | ||
322 | * has been added dynamically that would be | ||
323 | * onlined here is in HIGHMEM. | ||
324 | */ | ||
325 | void __meminit online_page(struct page *page) | ||
326 | { | ||
327 | ClearPageReserved(page); | ||
328 | add_one_highpage_hotplug(page, page_to_pfn(page)); | ||
329 | } | ||
330 | |||
331 | #ifndef CONFIG_NUMA | 301 | #ifndef CONFIG_NUMA |
332 | static void __init set_highmem_pages_init(int bad_ppro) | 302 | static void __init set_highmem_pages_init(int bad_ppro) |
333 | { | 303 | { |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 5fbb8652cf59..32ba13b0f818 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -620,15 +620,6 @@ void __init paging_init(void) | |||
620 | /* | 620 | /* |
621 | * Memory hotplug specific functions | 621 | * Memory hotplug specific functions |
622 | */ | 622 | */ |
623 | void online_page(struct page *page) | ||
624 | { | ||
625 | ClearPageReserved(page); | ||
626 | init_page_count(page); | ||
627 | __free_page(page); | ||
628 | totalram_pages++; | ||
629 | num_physpages++; | ||
630 | } | ||
631 | |||
632 | #ifdef CONFIG_MEMORY_HOTPLUG | 623 | #ifdef CONFIG_MEMORY_HOTPLUG |
633 | /* | 624 | /* |
634 | * Memory is added always to NORMAL zone. This means you will never get | 625 | * Memory is added always to NORMAL zone. This means you will never get |
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index d5094929766d..c8b3ca79de2d 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c | |||
@@ -219,6 +219,25 @@ static void grow_pgdat_span(struct pglist_data *pgdat, | |||
219 | pgdat->node_start_pfn; | 219 | pgdat->node_start_pfn; |
220 | } | 220 | } |
221 | 221 | ||
222 | void online_page(struct page *page) | ||
223 | { | ||
224 | totalram_pages++; | ||
225 | num_physpages++; | ||
226 | |||
227 | #ifdef CONFIG_HIGHMEM | ||
228 | if (PageHighMem(page)) | ||
229 | totalhigh_pages++; | ||
230 | #endif | ||
231 | |||
232 | #ifdef CONFIG_FLATMEM | ||
233 | max_mapnr = max(page_to_pfn(page), max_mapnr); | ||
234 | #endif | ||
235 | |||
236 | ClearPageReserved(page); | ||
237 | init_page_count(page); | ||
238 | __free_page(page); | ||
239 | } | ||
240 | |||
222 | static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages, | 241 | static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages, |
223 | void *arg) | 242 | void *arg) |
224 | { | 243 | { |