44d7204
From 424f6c4818bbf1b8ccf58aa012ecc19c0bb9b446 Mon Sep 17 00:00:00 2001
44d7204
From: Lucas Stach <l.stach@pengutronix.de>
44d7204
Date: Tue, 24 Jan 2017 15:18:05 -0800
44d7204
Subject: [PATCH 179/273] mm: alloc_contig: re-allow CMA to compact FS pages
44d7204
44d7204
Commit 73e64c51afc5 ("mm, compaction: allow compaction for GFP_NOFS
44d7204
requests") changed compation to skip FS pages if not explicitly allowed
44d7204
to touch them, but missed to update the CMA compact_control.
44d7204
44d7204
This leads to a very high isolation failure rate, crippling performance
44d7204
of CMA even on a lightly loaded system.  Re-allow CMA to compact FS
44d7204
pages by setting the correct GFP flags, restoring CMA behavior and
44d7204
performance to the kernel 4.9 level.
44d7204
44d7204
Fixes: 73e64c51afc5 (mm, compaction: allow compaction for GFP_NOFS requests)
44d7204
Link: http://lkml.kernel.org/r/20170113115155.24335-1-l.stach@pengutronix.de
44d7204
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
44d7204
Acked-by: Michal Hocko <mhocko@suse.com>
44d7204
Acked-by: Vlastimil Babka <vbabka@suse.cz>
44d7204
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
44d7204
Cc: Mel Gorman <mgorman@techsingularity.net>
44d7204
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
44d7204
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
44d7204
---
44d7204
 mm/page_alloc.c | 1 +
44d7204
 1 file changed, 1 insertion(+)
44d7204
44d7204
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
44d7204
index d604d25..41d5e2e 100644
44d7204
--- a/mm/page_alloc.c
44d7204
+++ b/mm/page_alloc.c
44d7204
@@ -7248,6 +7248,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
44d7204
 		.zone = page_zone(pfn_to_page(start)),
44d7204
 		.mode = MIGRATE_SYNC,
44d7204
 		.ignore_skip_hint = true,
44d7204
+		.gfp_mask = GFP_KERNEL,
44d7204
 	};
44d7204
 	INIT_LIST_HEAD(&cc.migratepages);
44d7204
 
44d7204
-- 
44d7204
2.9.3
44d7204