From: Vlastimil Babka <vbabka@suse.cz>
To: Mel Gorman <mgorman@techsingularity.net>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Rik van Riel <riel@redhat.com>,
David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Michal Hocko <mhocko@kernel.org>, Linux-MM <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 06/10] mm, page_alloc: Rename __GFP_WAIT to __GFP_RECLAIM
Date: Thu, 1 Oct 2015 10:39:16 +0200 [thread overview]
Message-ID: <560CF134.2060107@suse.cz> (raw)
In-Reply-To: <20150929133721.GJ3068@techsingularity.net>
On 09/29/2015 03:37 PM, Mel Gorman wrote:
> mm: page_alloc: Hide some GFP internals and document the bits and flag combinations
>
> Andrew started the following
>
> We have quite a history of remote parts of the kernel using
> weird/wrong/inexplicable combinations of __GFP_ flags. I tend
> to think that this is because we didn't adequately explain the
> interface.
>
> And I don't think that gfp.h really improved much in this area as
> a result of this patchset. Could you go through it some time and
> decide if we've adequately documented all this stuff?
>
> This patches first moves some GFP flag combinations that are part of the MM
> internals to mm/internal.h. The rest of the patch documents the __GFP_FOO
> bits under various headings and then documents the flag combinations. It
> will not help callers that are brain damaged but the clarity might motivate
> some fixes and avoid future mistakes.
>
> Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
With some nitpicks below.
> +/*
> + * Reclaim modifiers
> + *
> + * __GFP_IO can start physical IO.
> + *
> + * __GFP_FS can call down to the low-level FS. Avoids the allocator
"Clearing the flag avoids..."? Avoids confusion.
> + * recursing into the filesystem which might already be holding locks.
> + *
> + * __GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim.
> + * This flag can be cleared to avoid unnecessary delays when a fallback
> + * option is available.
> + *
> + * __GFP_KSWAPD_RECLAIM indicates that the caller wants kswapd when the low
s/wants/wakes/? or "wants kswapd woken up"?
> + * GFP_USER is for userspace allocations that also need to be directly
> + * accessibly by the kernel or hardware. It is typically used by hardware
> + * for buffers that are mapped to userspace (e.g. graphics) that hardware
> + * still must DMA to. cpuset limits are enforced for these allocations.
> + *
> + * GFP_HIGHUSER is for userspace allocations that may be mapped to userspace,
> + * do not need to be directly accessible by the kernel but that cannot
> + * move once in use. An example may be a hardware allocation that maps
> + * data directly into userspace but has no addressing limitations.
> + *
> + * GFP_DMA exists for historical reasons and should be avoided where possible.
> + * The flags indicates that the caller requires that the lowest zone be
> + * used (ZONE_DMA or 16M on x86-64). Ideally, this would be removed but
> + * it would require careful auditing as some users really require it and
> + * others use the flag to avoid lowmem reserves in ZONE_DMA and treat the
> + * lowest zone as a type of emergency reserve.
> + *
> + * GFP_DMA32 is similar to GFP_DMA except that the caller requires a 32-bit
> + * address.
> + *
> + * GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not
> + * need direct access to but can use kmap() when access is required. They
> + * are expected to be movable via page reclaim or page migration. Typically,
> + * pages on the LRU would also be allocated with GFP_HIGHUSER_MOVABLE.
Move GFP_HIGHUSER_MOVABLE right below GFP_HIGHUSER?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Vlastimil Babka <vbabka@suse.cz>
To: Mel Gorman <mgorman@techsingularity.net>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Rik van Riel <riel@redhat.com>,
David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Michal Hocko <mhocko@kernel.org>, Linux-MM <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 06/10] mm, page_alloc: Rename __GFP_WAIT to __GFP_RECLAIM
Date: Thu, 1 Oct 2015 10:39:16 +0200 [thread overview]
Message-ID: <560CF134.2060107@suse.cz> (raw)
In-Reply-To: <20150929133721.GJ3068@techsingularity.net>
On 09/29/2015 03:37 PM, Mel Gorman wrote:
> mm: page_alloc: Hide some GFP internals and document the bits and flag combinations
>
> Andrew started the following
>
> We have quite a history of remote parts of the kernel using
> weird/wrong/inexplicable combinations of __GFP_ flags. I tend
> to think that this is because we didn't adequately explain the
> interface.
>
> And I don't think that gfp.h really improved much in this area as
> a result of this patchset. Could you go through it some time and
> decide if we've adequately documented all this stuff?
>
> This patches first moves some GFP flag combinations that are part of the MM
> internals to mm/internal.h. The rest of the patch documents the __GFP_FOO
> bits under various headings and then documents the flag combinations. It
> will not help callers that are brain damaged but the clarity might motivate
> some fixes and avoid future mistakes.
>
> Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
With some nitpicks below.
> +/*
> + * Reclaim modifiers
> + *
> + * __GFP_IO can start physical IO.
> + *
> + * __GFP_FS can call down to the low-level FS. Avoids the allocator
"Clearing the flag avoids..."? Avoids confusion.
> + * recursing into the filesystem which might already be holding locks.
> + *
> + * __GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim.
> + * This flag can be cleared to avoid unnecessary delays when a fallback
> + * option is available.
> + *
> + * __GFP_KSWAPD_RECLAIM indicates that the caller wants kswapd when the low
s/wants/wakes/? or "wants kswapd woken up"?
> + * GFP_USER is for userspace allocations that also need to be directly
> + * accessibly by the kernel or hardware. It is typically used by hardware
> + * for buffers that are mapped to userspace (e.g. graphics) that hardware
> + * still must DMA to. cpuset limits are enforced for these allocations.
> + *
> + * GFP_HIGHUSER is for userspace allocations that may be mapped to userspace,
> + * do not need to be directly accessible by the kernel but that cannot
> + * move once in use. An example may be a hardware allocation that maps
> + * data directly into userspace but has no addressing limitations.
> + *
> + * GFP_DMA exists for historical reasons and should be avoided where possible.
> + * The flags indicates that the caller requires that the lowest zone be
> + * used (ZONE_DMA or 16M on x86-64). Ideally, this would be removed but
> + * it would require careful auditing as some users really require it and
> + * others use the flag to avoid lowmem reserves in ZONE_DMA and treat the
> + * lowest zone as a type of emergency reserve.
> + *
> + * GFP_DMA32 is similar to GFP_DMA except that the caller requires a 32-bit
> + * address.
> + *
> + * GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not
> + * need direct access to but can use kmap() when access is required. They
> + * are expected to be movable via page reclaim or page migration. Typically,
> + * pages on the LRU would also be allocated with GFP_HIGHUSER_MOVABLE.
Move GFP_HIGHUSER_MOVABLE right below GFP_HIGHUSER?
next prev parent reply other threads:[~2015-10-01 8:39 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-21 10:52 [PATCH 00/10] Remove zonelist cache and high-order watermark checking v4 Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-21 10:52 ` [PATCH 01/10] mm, page_alloc: Remove unnecessary parameter from zone_watermark_ok_safe Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-24 20:01 ` Johannes Weiner
2015-09-24 20:01 ` Johannes Weiner
2015-09-21 10:52 ` [PATCH 02/10] mm, page_alloc: Remove unnecessary recalculations for dirty zone balancing Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-24 20:05 ` Johannes Weiner
2015-09-24 20:05 ` Johannes Weiner
2015-09-21 10:52 ` [PATCH 03/10] mm, page_alloc: Remove unnecessary taking of a seqlock when cpusets are disabled Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-24 20:06 ` Johannes Weiner
2015-09-24 20:06 ` Johannes Weiner
2015-09-30 22:22 ` David Rientjes
2015-09-30 22:22 ` David Rientjes
2015-10-01 7:35 ` Vlastimil Babka
2015-10-01 7:35 ` Vlastimil Babka
2015-09-21 10:52 ` [PATCH 04/10] mm, page_alloc: Use masks and shifts when converting GFP flags to migrate types Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-24 20:34 ` Johannes Weiner
2015-09-24 20:34 ` Johannes Weiner
2015-09-25 12:50 ` Mel Gorman
2015-09-25 12:50 ` Mel Gorman
2015-09-25 13:56 ` Johannes Weiner
2015-09-25 13:56 ` Johannes Weiner
2015-09-21 10:52 ` [PATCH 05/10] mm, page_alloc: Distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-24 13:51 ` Michal Hocko
2015-09-24 13:51 ` Michal Hocko
2015-09-24 20:55 ` Johannes Weiner
2015-09-24 20:55 ` Johannes Weiner
2015-09-25 12:51 ` Mel Gorman
2015-09-25 12:51 ` Mel Gorman
2015-09-25 19:01 ` Johannes Weiner
2015-09-25 19:01 ` Johannes Weiner
2015-09-29 13:35 ` Mel Gorman
2015-09-29 13:35 ` Mel Gorman
2015-09-30 12:26 ` Vlastimil Babka
2015-09-30 12:26 ` Vlastimil Babka
2015-09-30 13:17 ` Mel Gorman
2015-09-30 13:17 ` Mel Gorman
2015-10-01 3:04 ` Drokin, Oleg
2015-10-01 3:04 ` Drokin, Oleg
2015-10-02 12:30 ` Mel Gorman
2015-10-02 12:30 ` Mel Gorman
2015-09-21 10:52 ` [PATCH 06/10] mm, page_alloc: Rename __GFP_WAIT to __GFP_RECLAIM Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-25 19:03 ` Johannes Weiner
2015-09-25 19:03 ` Johannes Weiner
2015-09-28 23:55 ` Andrew Morton
2015-09-28 23:55 ` Andrew Morton
2015-09-29 13:37 ` Mel Gorman
2015-09-29 13:37 ` Mel Gorman
2015-10-01 8:39 ` Vlastimil Babka [this message]
2015-10-01 8:39 ` Vlastimil Babka
2015-10-02 13:03 ` [PATCH] mm: page_alloc: Hide some GFP internals and document the bits and flag combinations -fix Mel Gorman
2015-10-02 13:03 ` Mel Gorman
2015-10-01 14:06 ` [PATCH 06/10] mm, page_alloc: Rename __GFP_WAIT to __GFP_RECLAIM Michal Hocko
2015-10-01 14:06 ` Michal Hocko
2015-09-30 22:25 ` David Rientjes
2015-09-30 22:25 ` David Rientjes
2015-09-21 10:52 ` [PATCH 07/10] mm, page_alloc: Delete the zonelist_cache Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-25 19:09 ` Johannes Weiner
2015-09-25 19:09 ` Johannes Weiner
2015-09-21 10:52 ` [PATCH 08/10] mm, page_alloc: Remove MIGRATE_RESERVE Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-21 10:52 ` [PATCH 09/10] mm, page_alloc: Reserve pageblocks for high-order atomic allocations on demand Mel Gorman
2015-09-21 10:52 ` Mel Gorman
2015-09-24 13:50 ` Michal Hocko
2015-09-24 13:50 ` Michal Hocko
2015-09-25 19:22 ` Johannes Weiner
2015-09-25 19:22 ` Johannes Weiner
2015-09-29 21:01 ` Andrew Morton
2015-09-29 21:01 ` Andrew Morton
2015-09-30 8:27 ` Mel Gorman
2015-09-30 8:27 ` Mel Gorman
2015-09-30 14:02 ` Vlastimil Babka
2015-09-30 14:02 ` Vlastimil Babka
2015-09-21 12:03 ` [PATCH 10/10] mm, page_alloc: Only enforce watermarks for order-0 allocations Mel Gorman
2015-09-21 12:03 ` Mel Gorman
2015-09-25 19:32 ` Johannes Weiner
2015-09-25 19:32 ` Johannes Weiner
2015-09-29 21:05 ` Andrew Morton
2015-09-29 21:05 ` Andrew Morton
2015-09-30 8:46 ` Mel Gorman
2015-09-30 8:46 ` Mel Gorman
2015-09-30 14:17 ` Vlastimil Babka
2015-09-30 14:17 ` Vlastimil Babka
2015-09-30 15:12 ` Mel Gorman
2015-09-30 15:12 ` Mel Gorman
2015-09-30 20:37 ` Andrew Morton
2015-09-30 20:37 ` Andrew Morton
2015-09-30 14:11 ` Vlastimil Babka
2015-09-30 14:11 ` Vlastimil Babka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=560CF134.2060107@suse.cz \
--to=vbabka@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=iamjoonsoo.kim@lge.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@kernel.org \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.