__alloc_contig_migrate_range() should use all possible ways to get all the pages migrated from the given memory range, so pruning per-cpu lru lists for all CPUs is required, regadless the cost of such operation. Otherwise some pages which got stuck at per-cpu lru list might get missed by migration procedure causing the contiguous allocation to fail.
Reported-by: SeongHwan Yoon sunghwan.yun@samsung.com Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com Signed-off-by: Kyungmin Park kyungmin.park@samsung.com --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 1bfe2b0..fcb9719 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5677,7 +5677,7 @@ static int __alloc_contig_migrate_range(struct compact_control *cc, unsigned int tries = 0; int ret = 0;
- migrate_prep_local(); + migrate_prep();
while (pfn < end || !list_empty(&cc->migratepages)) { if (fatal_signal_pending(current)) {
On Mon, Nov 12 2012, Marek Szyprowski wrote:
__alloc_contig_migrate_range() should use all possible ways to get all the pages migrated from the given memory range, so pruning per-cpu lru lists for all CPUs is required, regadless the cost of such operation. Otherwise some pages which got stuck at per-cpu lru list might get missed by migration procedure causing the contiguous allocation to fail.
Reported-by: SeongHwan Yoon sunghwan.yun@samsung.com Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com Signed-off-by: Kyungmin Park kyungmin.park@samsung.com
Acked-by: Michal Nazarewicz mina86@mina86.com
mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 1bfe2b0..fcb9719 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5677,7 +5677,7 @@ static int __alloc_contig_migrate_range(struct compact_control *cc, unsigned int tries = 0; int ret = 0;
- migrate_prep_local();
- migrate_prep();
while (pfn < end || !list_empty(&cc->migratepages)) { if (fatal_signal_pending(current)) {
linaro-mm-sig@lists.linaro.org