diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index e23a9e704536..423d214f708b 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -64,8 +64,10 @@ enum { }; #ifdef CONFIG_CMA +bool is_cma_pageblock(struct page *page); # define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA) #else +# define is_cma_pageblock(page) false # define is_migrate_cma(migratetype) false #endif diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0b9e7c1513bf..5f948b46451e 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1265,6 +1265,11 @@ void __init page_alloc_init_late(void) #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */ #ifdef CONFIG_CMA +bool is_cma_pageblock(struct page *page) +{ + return get_pageblock_migratetype(page) == MIGRATE_CMA; +} + /* Free whole pageblock and set its migration type to MIGRATE_CMA. */ void __init init_cma_reserved_pageblock(struct page *page) {