lkml.org 
[lkml]   [2015]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC 13/16] mm/cma: populate ZONE_CMA and use this zone when GFP_HIGHUSERMOVABLE
    On Tue, Mar 03, 2015 at 01:58:46PM +0530, Aneesh Kumar K.V wrote:
    > 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 ?

    Hello, Aneesh.

    IIUC, Johannes's fair allocation policy patchset makes us uses
    individual zones fairly. So, before freepage on ZONE_CMA is exhausted,
    ZONE_MOVABLE will be used. :)

    Thanks.


    \
     
     \ /
      Last update: 2015-03-06 08:21    [W:5.195 / U:1.928 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site