mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 14:23:49 +01:00
numa: add CONFIG_MOVABLE_NODE for movable-dedicated node
We need a node which only contains movable memory. This feature is very important for node hotplug. If a node has normal/highmem, the memory may be used by the kernel and can't be offlined. If the node only contains movable memory, we can offline the memory and the node. All are prepared, we can actually introduce N_MEMORY. add CONFIG_MOVABLE_NODE make we can use it for movable-dedicated node [[email protected]: fix Kconfig text] Signed-off-by: Lai Jiangshan <[email protected]> Tested-by: Yasuaki Ishimatsu <[email protected]> Signed-off-by: Wen Congyang <[email protected]> Cc: Jiang Liu <[email protected]> Cc: KOSAKI Motohiro <[email protected]> Cc: Minchan Kim <[email protected]> Cc: Mel Gorman <[email protected]> Cc: David Rientjes <[email protected]> Cc: Yinghai Lu <[email protected]> Cc: Rusty Russell <[email protected]> Cc: Greg KH <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
1 parent
68ae564bba
commit
20b2f52b73
4 files changed
+21
No files matched your search
@@ -643,6 +643,9 @@ static struct node_attr node_state_attr[] = {
|
||||
[N_NORMAL_MEMORY] = _NODE_ATTR(has_normal_memory, N_NORMAL_MEMORY),
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
[N_HIGH_MEMORY] = _NODE_ATTR(has_high_memory, N_HIGH_MEMORY),
|
||||
#endif
|
||||
#ifdef CONFIG_MOVABLE_NODE
|
||||
[N_MEMORY] = _NODE_ATTR(has_memory, N_MEMORY),
|
||||
#endif
|
||||
[N_CPU] = _NODE_ATTR(has_cpu, N_CPU),
|
||||
};
|
||||
@@ -653,6 +656,9 @@ static struct attribute *node_state_attrs[] = {
|
||||
&node_state_attr[N_NORMAL_MEMORY].attr.attr,
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
&node_state_attr[N_HIGH_MEMORY].attr.attr,
|
||||
#endif
|
||||
#ifdef CONFIG_MOVABLE_NODE
|
||||
&node_state_attr[N_MEMORY].attr.attr,
|
||||
#endif
|
||||
&node_state_attr[N_CPU].attr.attr,
|
||||
NULL
|
||||
|
||||
@@ -380,7 +380,11 @@ enum node_states {
|
||||
#else
|
||||
N_HIGH_MEMORY = N_NORMAL_MEMORY,
|
||||
#endif
|
||||
#ifdef CONFIG_MOVABLE_NODE
|
||||
N_MEMORY, /* The node has memory(regular, high, movable) */
|
||||
#else
|
||||
N_MEMORY = N_HIGH_MEMORY,
|
||||
#endif
|
||||
N_CPU, /* The node has one or more cpus */
|
||||
NR_NODE_STATES
|
||||
};
|
||||
|
||||
@@ -143,6 +143,14 @@ config NO_BOOTMEM
|
||||
config MEMORY_ISOLATION
|
||||
boolean
|
||||
|
||||
config MOVABLE_NODE
|
||||
boolean "Enable to assign a node which has only movable memory"
|
||||
depends on HAVE_MEMBLOCK
|
||||
depends on NO_BOOTMEM
|
||||
depends on X86_64
|
||||
depends on NUMA
|
||||
default y
|
||||
|
||||
# eventually, we can have this option just 'select SPARSEMEM'
|
||||
config MEMORY_HOTPLUG
|
||||
bool "Allow for memory hot-add"
|
||||
|
||||
@@ -89,6 +89,9 @@ nodemask_t node_states[NR_NODE_STATES] __read_mostly = {
|
||||
[N_NORMAL_MEMORY] = { { [0] = 1UL } },
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
[N_HIGH_MEMORY] = { { [0] = 1UL } },
|
||||
#endif
|
||||
#ifdef CONFIG_MOVABLE_NODE
|
||||
[N_MEMORY] = { { [0] = 1UL } },
|
||||
#endif
|
||||
[N_CPU] = { { [0] = 1UL } },
|
||||
#endif /* NUMA */
|
||||
|
||||
Reference in new issue
Block a user