Messages in this thread |  | | From | "Aneesh Kumar K.V" <> | Subject | Re: [RFC 13/16] mm/cma: populate ZONE_CMA and use this zone when GFP_HIGHUSERMOVABLE | Date | Tue, 03 Mar 2015 13:58:46 +0530 |
| |
Joonsoo Kim <iamjoonsoo.kim@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.kim@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
|  |