• D
    mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE · b11a7b94
    Dan Williams 提交于
    ZONE_DEVICE (merged in 4.3) and ZONE_CMA (proposed) are examples of new
    mm zones that are bumping up against the current maximum limit of 4
    zones, i.e.  2 bits in page->flags for the GFP_ZONE_TABLE.
    
    The GFP_ZONE_TABLE poses an interesting constraint since
    include/linux/gfp.h gets included by the 32-bit portion of a 64-bit
    build.  We need to be careful to only build the table for zones that
    have a corresponding gfp_t flag.  GFP_ZONES_SHIFT is introduced for this
    purpose.  This patch does not attempt to solve the problem of adding a
    new zone that also has a corresponding GFP_ flag.
    
    Vlastimil points out that ZONE_DEVICE, by depending on x86_64 and
    SPARSEMEM_VMEMMAP implies that SECTIONS_WIDTH is zero.  In other words
    even though ZONE_DEVICE does not fit in GFP_ZONE_TABLE it is free to
    consume another bit in page->flags (expand ZONES_WIDTH) with room to
    spare.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=110931
    Fixes: 033fbae9 ("mm: ZONE_DEVICE for "device memory"")
    Signed-off-by: NDan Williams <dan.j.williams@intel.com>
    Reported-by: NMark <markk@clara.co.uk>
    Reported-by: NVlastimil Babka <vbabka@suse.cz>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    b11a7b94
gfp.h 21.0 KB