diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 15fc64d4e1555e995da33e71766f64f7b30f7a09..d8cdb98e90007b81685fae5650ded37c7c4443b4 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1458,10 +1458,8 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) page_is_file_cache(page)); } else { -#ifdef CONFIG_DEBUG_VM - pr_alert("failed to isolate pfn %lx\n", pfn); + pr_warn("failed to isolate pfn %lx\n", pfn); dump_page(page, "isolation failed"); -#endif put_page(page); /* Because we don't have big zone->lock. we should check this again here. */ @@ -1481,8 +1479,14 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) /* Allocate a new page from the nearest neighbor node */ ret = migrate_pages(&source, new_node_page, NULL, 0, MIGRATE_SYNC, MR_MEMORY_HOTPLUG); - if (ret) + if (ret) { + list_for_each_entry(page, &source, lru) { + pr_warn("migrating pfn %lx failed ret:%d ", + page_to_pfn(page), ret); + dump_page(page, "migration failure"); + } putback_movable_pages(&source); + } } out: return ret; diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 98f6b601c28d234e444a373202d7051e4c12e364..6920d5a3db5222d59571e35188374496b73ce1f2 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -7779,6 +7779,7 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count, return false; unmovable: WARN_ON_ONCE(zone_idx(zone) == ZONE_MOVABLE); + dump_page(pfn_to_page(pfn+iter), "unmovable page"); return true; }