From: Michal Hocko <mhocko@kernel.org> To: <linux-mm@kvack.org> Cc: Andrew Morton <akpm@linux-foundation.org>, Mel Gorman <mgorman@suse.de>, Johannes Weiner <hannes@cmpxchg.org>, Vlastimil Babka <vbabka@suse.cz>, LKML <linux-kernel@vger.kernel.org>, Michal Hocko <mhocko@suse.com>, joonsoo kim <js1304@gmail.com>, Shaohua Li <shaohua.li@intel.com> Subject: [PATCH 9/9] mm, sparse, page_ext: drop ugly N_HIGH_MEMORY branches for allocations Date: Fri, 14 Jul 2017 10:00:06 +0200 [thread overview] Message-ID: <20170714080006.7250-10-mhocko@kernel.org> (raw) In-Reply-To: <20170714080006.7250-1-mhocko@kernel.org> From: Michal Hocko <mhocko@suse.com> f52407ce2dea ("memory hotplug: alloc page from other node in memory online") has introduced N_HIGH_MEMORY checks to only use NUMA aware allocations when there is some memory present because the respective node might not have any memory yet at the time and so it could fail or even OOM. Things have changed since then though. Zonelists are now always initialized before we do any allocations even for hotplug (see 959ecc48fc75 ("mm/memory_hotplug.c: fix building of node hotplug zonelist")). Therefore these checks are not really needed. In fact caller of the allocator should never care about whether the node is populated because that might change at any time. Cc: Shaohua Li <shaohua.li@intel.com> Cc: joonsoo kim <js1304@gmail.com> Signed-off-by: Michal Hocko <mhocko@suse.com> --- mm/page_ext.c | 5 +---- mm/sparse-vmemmap.c | 11 +++-------- mm/sparse.c | 10 +++------- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/mm/page_ext.c b/mm/page_ext.c index 88ccc044b09a..714ce79256c5 100644 --- a/mm/page_ext.c +++ b/mm/page_ext.c @@ -222,10 +222,7 @@ static void *__meminit alloc_page_ext(size_t size, int nid) return addr; } - if (node_state(nid, N_HIGH_MEMORY)) - addr = vzalloc_node(size, nid); - else - addr = vzalloc(size); + addr = vzalloc_node(size, nid); return addr; } diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index c50b1a14d55e..d1a39b8051e0 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -54,14 +54,9 @@ void * __meminit vmemmap_alloc_block(unsigned long size, int node) if (slab_is_available()) { struct page *page; - if (node_state(node, N_HIGH_MEMORY)) - page = alloc_pages_node( - node, GFP_KERNEL | __GFP_ZERO | __GFP_RETRY_MAYFAIL, - get_order(size)); - else - page = alloc_pages( - GFP_KERNEL | __GFP_ZERO | __GFP_RETRY_MAYFAIL, - get_order(size)); + page = alloc_pages_node(node, + GFP_KERNEL | __GFP_ZERO | __GFP_RETRY_MAYFAIL, + get_order(size)); if (page) return page_address(page); return NULL; diff --git a/mm/sparse.c b/mm/sparse.c index 7b4be3fd5cac..a9783acf2bb9 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -65,14 +65,10 @@ static noinline struct mem_section __ref *sparse_index_alloc(int nid) unsigned long array_size = SECTIONS_PER_ROOT * sizeof(struct mem_section); - if (slab_is_available()) { - if (node_state(nid, N_HIGH_MEMORY)) - section = kzalloc_node(array_size, GFP_KERNEL, nid); - else - section = kzalloc(array_size, GFP_KERNEL); - } else { + if (slab_is_available()) + section = kzalloc_node(array_size, GFP_KERNEL, nid); + else section = memblock_virt_alloc_node(array_size, nid); - } return section; } -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org> To: linux-mm@kvack.org Cc: Andrew Morton <akpm@linux-foundation.org>, Mel Gorman <mgorman@suse.de>, Johannes Weiner <hannes@cmpxchg.org>, Vlastimil Babka <vbabka@suse.cz>, LKML <linux-kernel@vger.kernel.org>, Michal Hocko <mhocko@suse.com>, joonsoo kim <js1304@gmail.com>, Shaohua Li <shaohua.li@intel.com> Subject: [PATCH 9/9] mm, sparse, page_ext: drop ugly N_HIGH_MEMORY branches for allocations Date: Fri, 14 Jul 2017 10:00:06 +0200 [thread overview] Message-ID: <20170714080006.7250-10-mhocko@kernel.org> (raw) In-Reply-To: <20170714080006.7250-1-mhocko@kernel.org> From: Michal Hocko <mhocko@suse.com> f52407ce2dea ("memory hotplug: alloc page from other node in memory online") has introduced N_HIGH_MEMORY checks to only use NUMA aware allocations when there is some memory present because the respective node might not have any memory yet at the time and so it could fail or even OOM. Things have changed since then though. Zonelists are now always initialized before we do any allocations even for hotplug (see 959ecc48fc75 ("mm/memory_hotplug.c: fix building of node hotplug zonelist")). Therefore these checks are not really needed. In fact caller of the allocator should never care about whether the node is populated because that might change at any time. Cc: Shaohua Li <shaohua.li@intel.com> Cc: joonsoo kim <js1304@gmail.com> Signed-off-by: Michal Hocko <mhocko@suse.com> --- mm/page_ext.c | 5 +---- mm/sparse-vmemmap.c | 11 +++-------- mm/sparse.c | 10 +++------- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/mm/page_ext.c b/mm/page_ext.c index 88ccc044b09a..714ce79256c5 100644 --- a/mm/page_ext.c +++ b/mm/page_ext.c @@ -222,10 +222,7 @@ static void *__meminit alloc_page_ext(size_t size, int nid) return addr; } - if (node_state(nid, N_HIGH_MEMORY)) - addr = vzalloc_node(size, nid); - else - addr = vzalloc(size); + addr = vzalloc_node(size, nid); return addr; } diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index c50b1a14d55e..d1a39b8051e0 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -54,14 +54,9 @@ void * __meminit vmemmap_alloc_block(unsigned long size, int node) if (slab_is_available()) { struct page *page; - if (node_state(node, N_HIGH_MEMORY)) - page = alloc_pages_node( - node, GFP_KERNEL | __GFP_ZERO | __GFP_RETRY_MAYFAIL, - get_order(size)); - else - page = alloc_pages( - GFP_KERNEL | __GFP_ZERO | __GFP_RETRY_MAYFAIL, - get_order(size)); + page = alloc_pages_node(node, + GFP_KERNEL | __GFP_ZERO | __GFP_RETRY_MAYFAIL, + get_order(size)); if (page) return page_address(page); return NULL; diff --git a/mm/sparse.c b/mm/sparse.c index 7b4be3fd5cac..a9783acf2bb9 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -65,14 +65,10 @@ static noinline struct mem_section __ref *sparse_index_alloc(int nid) unsigned long array_size = SECTIONS_PER_ROOT * sizeof(struct mem_section); - if (slab_is_available()) { - if (node_state(nid, N_HIGH_MEMORY)) - section = kzalloc_node(array_size, GFP_KERNEL, nid); - else - section = kzalloc(array_size, GFP_KERNEL); - } else { + if (slab_is_available()) + section = kzalloc_node(array_size, GFP_KERNEL, nid); + else section = memblock_virt_alloc_node(array_size, nid); - } return section; } -- 2.11.0 -- 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>
next prev parent reply other threads:[~2017-07-14 8:00 UTC|newest] Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-07-14 7:59 [PATCH 0/9] cleanup zonelists initialization Michal Hocko 2017-07-14 7:59 ` Michal Hocko 2017-07-14 7:59 ` Michal Hocko 2017-07-14 7:59 ` [PATCH 1/9] mm, page_alloc: rip out ZONELIST_ORDER_ZONE Michal Hocko 2017-07-14 7:59 ` Michal Hocko 2017-07-14 9:36 ` Mel Gorman 2017-07-14 9:36 ` Mel Gorman 2017-07-14 9:36 ` Mel Gorman 2017-07-14 10:47 ` Michal Hocko 2017-07-14 10:47 ` Michal Hocko 2017-07-14 11:16 ` Mel Gorman 2017-07-14 11:16 ` Mel Gorman 2017-07-14 11:16 ` Mel Gorman 2017-07-14 11:38 ` Michal Hocko 2017-07-14 11:38 ` Michal Hocko 2017-07-14 11:38 ` Michal Hocko 2017-07-14 12:56 ` Mel Gorman 2017-07-14 12:56 ` Mel Gorman 2017-07-14 13:01 ` Mel Gorman 2017-07-14 13:01 ` Mel Gorman 2017-07-14 13:01 ` Mel Gorman 2017-07-14 13:08 ` Michal Hocko 2017-07-14 13:08 ` Michal Hocko 2017-07-19 9:33 ` Vlastimil Babka 2017-07-19 9:33 ` Vlastimil Babka 2017-07-19 9:33 ` Vlastimil Babka 2017-07-19 13:44 ` Michal Hocko 2017-07-19 13:44 ` Michal Hocko 2017-07-19 13:44 ` Michal Hocko 2017-07-14 7:59 ` [PATCH 2/9] mm, page_alloc: remove boot pageset initialization from memory hotplug Michal Hocko 2017-07-14 7:59 ` Michal Hocko 2017-07-14 9:39 ` Mel Gorman 2017-07-14 9:39 ` Mel Gorman 2017-07-19 13:15 ` Vlastimil Babka 2017-07-19 13:15 ` Vlastimil Babka 2017-07-14 8:00 ` [PATCH 3/9] mm, page_alloc: do not set_cpu_numa_mem on empty nodes initialization Michal Hocko 2017-07-14 8:00 ` Michal Hocko 2017-07-14 9:48 ` Mel Gorman 2017-07-14 9:48 ` Mel Gorman 2017-07-14 10:50 ` Michal Hocko 2017-07-14 10:50 ` Michal Hocko 2017-07-14 12:32 ` Mel Gorman 2017-07-14 12:32 ` Mel Gorman 2017-07-14 12:39 ` Michal Hocko 2017-07-14 12:39 ` Michal Hocko 2017-07-14 12:56 ` Mel Gorman 2017-07-14 12:56 ` Mel Gorman 2017-07-19 13:19 ` Vlastimil Babka 2017-07-19 13:19 ` Vlastimil Babka 2017-07-14 8:00 ` [PATCH 4/9] mm, memory_hotplug: drop zone from build_all_zonelists Michal Hocko 2017-07-14 8:00 ` Michal Hocko 2017-07-19 13:33 ` Vlastimil Babka 2017-07-19 13:33 ` Vlastimil Babka 2017-07-20 8:15 ` Michal Hocko 2017-07-20 8:15 ` Michal Hocko 2017-07-14 8:00 ` [PATCH 5/9] mm, memory_hotplug: remove explicit build_all_zonelists from try_online_node Michal Hocko 2017-07-14 8:00 ` Michal Hocko 2017-07-14 12:14 ` Michal Hocko 2017-07-14 12:14 ` Michal Hocko 2017-07-20 6:13 ` Vlastimil Babka 2017-07-20 6:13 ` Vlastimil Babka 2017-07-14 8:00 ` [PATCH 6/9] mm, page_alloc: simplify zonelist initialization Michal Hocko 2017-07-14 8:00 ` Michal Hocko 2017-07-14 9:55 ` Mel Gorman 2017-07-14 9:55 ` Mel Gorman 2017-07-14 10:51 ` Michal Hocko 2017-07-14 10:51 ` Michal Hocko 2017-07-14 12:46 ` Mel Gorman 2017-07-14 12:46 ` Mel Gorman 2017-07-14 13:02 ` Michal Hocko 2017-07-14 13:02 ` Michal Hocko 2017-07-14 14:18 ` Mel Gorman 2017-07-14 14:18 ` Mel Gorman 2017-07-17 6:06 ` Michal Hocko 2017-07-17 6:06 ` Michal Hocko 2017-07-17 8:07 ` Mel Gorman 2017-07-17 8:07 ` Mel Gorman 2017-07-17 8:19 ` Michal Hocko 2017-07-17 8:19 ` Michal Hocko 2017-07-17 8:58 ` Mel Gorman 2017-07-17 8:58 ` Mel Gorman 2017-07-17 9:15 ` Michal Hocko 2017-07-17 9:15 ` Michal Hocko 2017-07-20 6:55 ` Vlastimil Babka 2017-07-20 6:55 ` Vlastimil Babka 2017-07-20 7:19 ` Michal Hocko 2017-07-20 7:19 ` Michal Hocko 2017-07-14 8:00 ` [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Michal Hocko 2017-07-14 8:00 ` Michal Hocko 2017-07-14 9:59 ` Mel Gorman 2017-07-14 9:59 ` Mel Gorman 2017-07-14 11:00 ` Michal Hocko 2017-07-14 11:00 ` Michal Hocko 2017-07-14 12:47 ` Mel Gorman 2017-07-14 12:47 ` Mel Gorman 2017-07-14 11:29 ` Vlastimil Babka 2017-07-14 11:29 ` Vlastimil Babka 2017-07-14 11:43 ` Michal Hocko 2017-07-14 11:43 ` Michal Hocko 2017-07-14 11:45 ` Michal Hocko 2017-07-14 11:45 ` Michal Hocko 2017-07-20 6:16 ` Vlastimil Babka 2017-07-20 6:16 ` Vlastimil Babka 2017-07-20 7:24 ` Vlastimil Babka 2017-07-20 7:24 ` Vlastimil Babka 2017-07-20 9:21 ` Michal Hocko 2017-07-20 9:21 ` Michal Hocko 2017-07-14 8:00 ` [PATCH 8/9] mm, memory_hotplug: get rid of zonelists_mutex Michal Hocko 2017-07-14 8:00 ` Michal Hocko 2017-07-14 8:00 ` Michal Hocko [this message] 2017-07-14 8:00 ` [PATCH 9/9] mm, sparse, page_ext: drop ugly N_HIGH_MEMORY branches for allocations Michal Hocko 2017-07-20 8:04 ` Vlastimil Babka 2017-07-20 8:04 ` Vlastimil Babka 2017-07-21 14:39 [PATCH -v1 0/9] cleanup zonelists initialization Michal Hocko 2017-07-21 14:39 ` [PATCH 9/9] mm, sparse, page_ext: drop ugly N_HIGH_MEMORY branches for allocations Michal Hocko 2017-07-21 14:39 ` Michal Hocko
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=20170714080006.7250-10-mhocko@kernel.org \ --to=mhocko@kernel.org \ --cc=akpm@linux-foundation.org \ --cc=hannes@cmpxchg.org \ --cc=js1304@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@suse.de \ --cc=mhocko@suse.com \ --cc=shaohua.li@intel.com \ --cc=vbabka@suse.cz \ /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: linkBe 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.