Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1652448 > unrolled thread
| Started by | Michal Hocko <mhocko@kernel.org> |
|---|---|
| First post | 2017-05-29 13:50 +0200 |
| Last post | 2017-05-30 17:10 +0200 |
| Articles | 4 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 0/2] remove CONFIG_MOVABLE_NODE Michal Hocko <mhocko@kernel.org> - 2017-05-29 13:50 +0200
[PATCH 3/3] mm, memory_hotplug: move movable_node to the hotplug proper Michal Hocko <mhocko@kernel.org> - 2017-05-29 13:50 +0200
Re: [PATCH 3/3] mm, memory_hotplug: move movable_node to the hotplug proper Vlastimil Babka <vbabka@suse.cz> - 2017-05-29 14:10 +0200
Re: [PATCH 3/3] mm, memory_hotplug: move movable_node to the hotplug proper Reza Arbab <arbab@linux.vnet.ibm.com> - 2017-05-30 17:10 +0200
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2017-05-29 13:50 +0200 |
| Subject | [PATCH 0/2] remove CONFIG_MOVABLE_NODE |
| Message-ID | <tMrln-7Ii-5@gated-at.bofh.it> |
Hi,
this has been previously posted as an RFC [1]. As it hasn't met any
disagreement, I have integrated the feedback and resending it without
RFC and hope for a soon merging (ideally along with other memory hotplug
pile).
I am continuing to cleanup the memory hotplug code and
CONFIG_MOVABLE_NODE seems dubious at best. The following two patches
simply removes the flag and make it de-facto always enabled.
The current semantic of the config option is twofold 1) it automatically
binds hotplugable nodes to have memory in zone_movable by default when
movable_node is enabled 2) forbids memory hotplug to online all the memory
as movable when !CONFIG_MOVABLE_NODE.
The later restriction is quite dubious because there is no clear cut of
how much normal memory do we need for a reasonable system operation. A
single memory block which is sufficient to allow further movable
onlines is far from sufficient (e.g a node with >2GB and memblocks
128MB will fill up this zone with struct pages leaving nothing for
other allocations). Removing the config option will not only reduce the
configuration space it also removes quite some code.
The semantic of the movable_node command line parameter is preserved.
The first patch removes the restriction mentioned above and the second
one simply removes all the CONFIG_MOVABLE_NODE related stuff. The last
patch moves movable_node flag handling to memory_hotplug proper where
it belongs.
[1] http://lkml.kernel.org/r/20170524122411.25212-1-mhocko@kernel.org
Shortlog
Michal Hocko (3):
mm, memory_hotplug: drop artificial restriction on online/offline
mm, memory_hotplug: drop CONFIG_MOVABLE_NODE
mm, memory_hotplug: move movable_node to the hotplug proper
Diffstat:
Documentation/admin-guide/kernel-parameters.txt | 7 ++-
drivers/base/node.c | 4 --
include/linux/memblock.h | 25 ----------
include/linux/memory_hotplug.h | 10 ++++
include/linux/nodemask.h | 4 --
mm/Kconfig | 26 ----------
mm/memblock.c | 3 --
mm/memory_hotplug.c | 64 ++-----------------------
mm/page_alloc.c | 2 -
9 files changed, 19 insertions(+), 126 deletions(-)
[toc] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2017-05-29 13:50 +0200 |
| Subject | [PATCH 3/3] mm, memory_hotplug: move movable_node to the hotplug proper |
| Message-ID | <tMrlo-7Ii-23@gated-at.bofh.it> |
| In reply to | #1652448 |
From: Michal Hocko <mhocko@suse.com>
movable_node_is_enabled is defined in memblock proper while it
is initialized from the memory hotplug proper. This is quite messy
and it makes a dependency between the two so move movable_node along
with the helper functions to memory_hotplug.
To make it more entertaining the kernel parameter is ignored unless
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y because we do not have the node
information for each memblock otherwise. So let's warn when the option
is disabled.
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Michal Hocko <mhocko@suse.com>
---
include/linux/memblock.h | 7 -------
include/linux/memory_hotplug.h | 10 ++++++++++
mm/memblock.c | 1 -
mm/memory_hotplug.c | 6 ++++++
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 9622fb8c101b..071692894254 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -57,8 +57,6 @@ struct memblock {
extern struct memblock memblock;
extern int memblock_debug;
-/* If movable_node boot option specified */
-extern bool movable_node_enabled;
#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
#define __init_memblock __meminit
@@ -171,11 +169,6 @@ static inline bool memblock_is_hotpluggable(struct memblock_region *m)
return m->flags & MEMBLOCK_HOTPLUG;
}
-static inline bool __init_memblock movable_node_is_enabled(void)
-{
- return movable_node_enabled;
-}
-
static inline bool memblock_is_mirror(struct memblock_region *m)
{
return m->flags & MEMBLOCK_MIRROR;
diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
index 9e0249d0f5e4..d6e5e63b31d5 100644
--- a/include/linux/memory_hotplug.h
+++ b/include/linux/memory_hotplug.h
@@ -115,6 +115,12 @@ extern void __online_page_free(struct page *page);
extern int try_online_node(int nid);
extern bool memhp_auto_online;
+/* If movable_node boot option specified */
+extern bool movable_node_enabled;
+static inline bool movable_node_is_enabled(void)
+{
+ return movable_node_enabled;
+}
#ifdef CONFIG_MEMORY_HOTREMOVE
extern bool is_pageblock_removable_nolock(struct page *page);
@@ -266,6 +272,10 @@ static inline void put_online_mems(void) {}
static inline void mem_hotplug_begin(void) {}
static inline void mem_hotplug_done(void) {}
+static inline bool movable_node_is_enabled(void)
+{
+ return false;
+}
#endif /* ! CONFIG_MEMORY_HOTPLUG */
#ifdef CONFIG_MEMORY_HOTREMOVE
diff --git a/mm/memblock.c b/mm/memblock.c
index 4895f5a6cf7e..8c52fb11510c 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -54,7 +54,6 @@ struct memblock memblock __initdata_memblock = {
};
int memblock_debug __initdata_memblock;
-bool movable_node_enabled __initdata_memblock = false;
static bool system_has_some_mirror __initdata_memblock = false;
static int memblock_can_resize __initdata_memblock;
static int memblock_memory_in_slab __initdata_memblock = 0;
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 2a14f8c18a22..1a148b35e8a3 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -79,6 +79,8 @@ static struct {
#define memhp_lock_acquire() lock_map_acquire(&mem_hotplug.dep_map)
#define memhp_lock_release() lock_map_release(&mem_hotplug.dep_map)
+bool movable_node_enabled = false;
+
#ifndef CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE
bool memhp_auto_online;
#else
@@ -1561,7 +1563,11 @@ check_pages_isolated(unsigned long start_pfn, unsigned long end_pfn)
static int __init cmdline_parse_movable_node(char *p)
{
+#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
movable_node_enabled = true;
+#else
+ pr_warn("movable_node parameter depends on CONFIG_HAVE_MEMBLOCK_NODE_MAP to work properly\n");
+#endif
return 0;
}
early_param("movable_node", cmdline_parse_movable_node);
--
2.11.0
[toc] | [prev] | [next] | [standalone]
| From | Vlastimil Babka <vbabka@suse.cz> |
|---|---|
| Date | 2017-05-29 14:10 +0200 |
| Subject | Re: [PATCH 3/3] mm, memory_hotplug: move movable_node to the hotplug proper |
| Message-ID | <tMrEK-865-37@gated-at.bofh.it> |
| In reply to | #1652449 |
On 05/29/2017 01:41 PM, Michal Hocko wrote: > From: Michal Hocko <mhocko@suse.com> > > movable_node_is_enabled is defined in memblock proper while it > is initialized from the memory hotplug proper. This is quite messy > and it makes a dependency between the two so move movable_node along > with the helper functions to memory_hotplug. > > To make it more entertaining the kernel parameter is ignored unless > CONFIG_HAVE_MEMBLOCK_NODE_MAP=y because we do not have the node > information for each memblock otherwise. So let's warn when the option > is disabled. > > Acked-by: Vlastimil Babka <vbabka@suse.cz> > Signed-off-by: Michal Hocko <mhocko@suse.com> Acked-by: Vlastimil Babka <vbabka@suse.cz>
[toc] | [prev] | [next] | [standalone]
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2017-05-30 17:10 +0200 |
| Subject | Re: [PATCH 3/3] mm, memory_hotplug: move movable_node to the hotplug proper |
| Message-ID | <tMQWu-wG-31@gated-at.bofh.it> |
| In reply to | #1652449 |
On Mon, May 29, 2017 at 01:41:41PM +0200, Michal Hocko wrote: >movable_node_is_enabled is defined in memblock proper while it >is initialized from the memory hotplug proper. This is quite messy >and it makes a dependency between the two so move movable_node along >with the helper functions to memory_hotplug. > >To make it more entertaining the kernel parameter is ignored unless >CONFIG_HAVE_MEMBLOCK_NODE_MAP=y because we do not have the node >information for each memblock otherwise. So let's warn when the option >is disabled. Acked-by: Reza Arbab <arbab@linux.vnet.ibm.com> -- Reza Arbab
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web