mm: memmap_init: iterate over memblock regions rather that check each PFN
[linux-2.6-microblaze.git] / mm / compaction.c
index 46f0fcc..8c29611 100644 (file)
@@ -1409,7 +1409,9 @@ fast_isolate_freepages(struct compact_control *cc)
                                cc->free_pfn = highest;
                        } else {
                                if (cc->direct_compaction && pfn_valid(min_pfn)) {
-                                       page = pfn_to_page(min_pfn);
+                                       page = pageblock_pfn_to_page(min_pfn,
+                                               pageblock_end_pfn(min_pfn),
+                                               cc->zone);
                                        cc->free_pfn = min_pfn;
                                }
                        }
@@ -2243,15 +2245,11 @@ check_drain:
                 * would succeed.
                 */
                if (cc->order > 0 && last_migrated_pfn) {
-                       int cpu;
                        unsigned long current_block_start =
                                block_start_pfn(cc->migrate_pfn, cc->order);
 
                        if (last_migrated_pfn < current_block_start) {
-                               cpu = get_cpu();
-                               lru_add_drain_cpu(cpu);
-                               drain_local_pages(cc->zone);
-                               put_cpu();
+                               lru_add_drain_cpu_zone(cc->zone);
                                /* No more flushing until we migrate again */
                                last_migrated_pfn = 0;
                        }