Joonsoo Kim <iamjoonsoo....@lge.com> writes:

> Until now, reserved pages for CMA are managed altogether with normal
> page in the same zone. This approach has numorous problems and fixing
> them isn't easy. To fix this situation, ZONE_CMA is introduced in
> previous patch, but, not yet populated. This patch implement population
> of ZONE_CMA by stealing reserved pages from normal zones. This stealing
> break one uncertain assumption on zone, that is, zone isn't overlapped.
> In the early of this series, some check is inserted to every zone's span
> iterator to handle zone overlap so there would be no problem with
> this assumption break.
>
> To utilize this zone, user should use GFP_HIGHUSERMOVABLE, because
> these pages are only applicable for movable type and ZONE_CMA could
> contain highmem.
>
> Implementation itself is very easy to understand. Do steal when cma
> area is initialized and recalculate values for per zone data structure.
>
> Signed-off-by: Joonsoo Kim <iamjoonsoo....@lge.com>
> ---
>  include/linux/gfp.h |   10 ++++++++--
>  include/linux/mm.h  |    1 +
>  mm/cma.c            |   23 ++++++++++++++++-------
>  mm/page_alloc.c     |   42 +++++++++++++++++++++++++++++++++++++++---
>  4 files changed, 64 insertions(+), 12 deletions(-)
>
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index 619eb20..d125440 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -186,6 +186,12 @@ static inline int gfpflags_to_migratetype(const gfp_t 
> gfp_flags)
>  #define OPT_ZONE_DMA32 ZONE_NORMAL
>  #endif
>  
> +#ifdef CONFIG_CMA
> +#define OPT_ZONE_CMA ZONE_CMA
> +#else
> +#define OPT_ZONE_CMA ZONE_MOVABLE
> +#endif
> +

Does that mean with CONFIG_CMA we always try ZONE_CMA first and then
fallback to ZONE_MOVABLE ? If so won't we hit termporary CMA allocation
failures that can result with pinned movable pages ?

-aneesh

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to