diff options
author | Dennis Zhou <dennisszhou@gmail.com> | 2018-02-16 12:09:58 -0600 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2018-02-18 05:33:01 -0800 |
commit | 554fef1c39ee148623a496e04569dabb11463406 (patch) | |
tree | f1d187aad200c97bdf4b0b9f2c1c66735deab08a /mm/percpu-vm.c | |
parent | 47504ee04b9241548ae2c28be7d0b01cff3b7aa6 (diff) | |
download | linux-stable-554fef1c39ee148623a496e04569dabb11463406.tar.gz linux-stable-554fef1c39ee148623a496e04569dabb11463406.tar.bz2 linux-stable-554fef1c39ee148623a496e04569dabb11463406.zip |
percpu: allow select gfp to be passed to underlying allocators
The prior patch added support for passing gfp flags through to the
underlying allocators. This patch allows users to pass along gfp flags
(currently only __GFP_NORETRY and __GFP_NOWARN) to the underlying
allocators. This should allow users to decide if they are ok with
failing allocations recovering in a more graceful way.
Additionally, gfp passing was done as additional flags in the previous
patch. Instead, change this to caller passed semantics. GFP_KERNEL is
also removed as the default flag. It continues to be used for internally
caused underlying percpu allocations.
V2:
Removed gfp_percpu_mask in favor of doing it inline.
Removed GFP_KERNEL as a default flag for __alloc_percpu_gfp.
Signed-off-by: Dennis Zhou <dennisszhou@gmail.com>
Suggested-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'mm/percpu-vm.c')
-rw-r--r-- | mm/percpu-vm.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index 0af71eb2fff0..d8078de912de 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c @@ -37,7 +37,7 @@ static struct page **pcpu_get_pages(void) lockdep_assert_held(&pcpu_alloc_mutex); if (!pages) - pages = pcpu_mem_zalloc(pages_size, 0); + pages = pcpu_mem_zalloc(pages_size, GFP_KERNEL); return pages; } @@ -86,7 +86,7 @@ static int pcpu_alloc_pages(struct pcpu_chunk *chunk, unsigned int cpu, tcpu; int i; - gfp |= GFP_KERNEL | __GFP_HIGHMEM; + gfp |= __GFP_HIGHMEM; for_each_possible_cpu(cpu) { for (i = page_start; i < page_end; i++) { |