aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/gfp.h
diff options
context:
space:
mode:
authorMichal Nazarewicz <mina86@mina86.com>2011-12-29 07:09:50 -0500
committerMarek Szyprowski <m.szyprowski@samsung.com>2012-05-21 09:09:32 -0400
commit47118af076f64844b4f423bc2f545b2da9dab50d (patch)
tree00df88cf2f60a2a3efc1a6c46ad88d128aee2071 /include/linux/gfp.h
parent6d4a49160de2c684fb59fa627bce80e200224331 (diff)
mm: mmzone: MIGRATE_CMA migration type added
The MIGRATE_CMA migration type has two main characteristics: (i) only movable pages can be allocated from MIGRATE_CMA pageblocks and (ii) page allocator will never change migration type of MIGRATE_CMA pageblocks. This guarantees (to some degree) that page in a MIGRATE_CMA page block can always be migrated somewhere else (unless there's no memory left in the system). It is designed to be used for allocating big chunks (eg. 10MiB) of physically contiguous memory. Once driver requests contiguous memory, pages from MIGRATE_CMA pageblocks may be migrated away to create a contiguous block. To minimise number of migrations, MIGRATE_CMA migration type is the last type tried when page allocator falls back to other migration types when requested. Signed-off-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Tested-by: Rob Clark <rob.clark@linaro.org> Tested-by: Ohad Ben-Cohen <ohad@wizery.com> Tested-by: Benjamin Gaignard <benjamin.gaignard@linaro.org> Tested-by: Robert Nelson <robertcnelson@gmail.com> Tested-by: Barry Song <Baohua.Song@csr.com>
Diffstat (limited to 'include/linux/gfp.h')
-rw-r--r--include/linux/gfp.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 052a5b6cc4d0..78d32a7be257 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -397,6 +397,9 @@ static inline bool pm_suspended_storage(void)
397extern int alloc_contig_range(unsigned long start, unsigned long end); 397extern int alloc_contig_range(unsigned long start, unsigned long end);
398extern void free_contig_range(unsigned long pfn, unsigned nr_pages); 398extern void free_contig_range(unsigned long pfn, unsigned nr_pages);
399 399
400/* CMA stuff */
401extern void init_cma_reserved_pageblock(struct page *page);
402
400#endif 403#endif
401 404
402#endif /* __LINUX_GFP_H */ 405#endif /* __LINUX_GFP_H */