ering local apic.
Signed-off-by: Gu Zheng <guz.f...@cn.fujitsu.com>
Signed-off-by: Tang Chen <tangc...@cn.fujitsu.com>
---
arch/x86/include/asm/mpspec.h | 1 +
arch/x86/kernel/acpi/boot.c | 6 ++---
arch/x86/kernel/apic/apic.c | 53 ---
3 files
et best near online node for CPUs on memory-less nodes
inside alloc_pages_node() and alloc_pages_exact_node() to avoid memory
allocation
failure.
Signed-off-by: Gu Zheng <guz.f...@cn.fujitsu.com>
Signed-off-by: Tang Chen <tangc...@cn.fujitsu.com>
---
arch/x86/mm/numa.c | 3 +--
Will call this function earlier in next coming patches.
So simply move its definition forward. And also, add comments for it.
Signed-off-by: Tang Chen <tangc...@cn.fujitsu.com>
---
arch/x86/mm/numa.c | 47 +--
1 file changed, 29 insertions(
The current code ignores disabled processors and returns -ENODEV.
After this patch, a new parameter will be added to MADT APIs so that caller
is able to control if disabled processors are ignored.
Signed-off-by: Gu Zheng <guz.f...@cn.fujitsu.com>
Signed-off-by: Tang Chen <tangc...@cn.fujitsu
On 08/24/2015 07:24 PM, Xishi Qiu wrote:
..
[ 2007.584000] On node 5 totalpages: 0
[ 2007.585000] Built 5 zonelists in Node order, mobility grouping on. Total
pages: 32588823
[ 2007.594000] Policy zone: Normal
[ 2007.598000] init_memory_mapping: [mem 0x600-0x607]
And
On 08/25/2015 09:09 AM, Xishi Qiu wrote:
On 2015/8/24 17:22, Xishi Qiu wrote:
On 2015/8/24 1:06, Tang Chen wrote:
The commit below adds hot-added memory range to memblock, after
creating pgdat for new node.
commit f9126ab9241f66562debf69c2c9d8fee32ddcc53
Author: Xishi Qiu
Date: Fri Aug
On 08/25/2015 09:09 AM, Xishi Qiu wrote:
On 2015/8/24 17:22, Xishi Qiu wrote:
On 2015/8/24 1:06, Tang Chen wrote:
The commit below adds hot-added memory range to memblock, after
creating pgdat for new node.
commit f9126ab9241f66562debf69c2c9d8fee32ddcc53
Author: Xishi Qiu qiuxi
On 08/24/2015 07:24 PM, Xishi Qiu wrote:
..
[ 2007.584000] On node 5 totalpages: 0
[ 2007.585000] Built 5 zonelists in Node order, mobility grouping on. Total
pages: 32588823
[ 2007.594000] Policy zone: Normal
[ 2007.598000] init_memory_mapping: [mem 0x600-0x607]
And
On 08/24/2015 05:17 PM, Xishi Qiu wrote:
On 2015/8/23 18:28, Tang Chen wrote:
Hi Shi,
Sorry for the late reply. I hope it won't be too late.
NON-ACK by me, I think.
I noticed that your first has been merged. But it won't fix the problem
these code intended to fix.
After your patch 1
On 08/24/2015 05:17 PM, Xishi Qiu wrote:
On 2015/8/23 18:28, Tang Chen wrote:
Hi Shi,
Sorry for the late reply. I hope it won't be too late.
NON-ACK by me, I think.
I noticed that your first has been merged. But it won't fix the problem
these code intended to fix.
After your patch 1
on. Total
pages: 32588823
[ 2007.594000] Policy zone: Normal
[ 2007.598000] init_memory_mapping: [mem 0x600-0x607]
The solution is simple, just add the memory range to memblock a little earlier,
before hotadd_new_pgdat().
Signed-off-by: Tang Chen
---
mm/memory_hotplug.c | 10
Hi Shi,
Sorry for the late reply. I hope it won't be too late.
NON-ACK by me, I think.
I noticed that your first has been merged. But it won't fix the problem
these code intended to fix.
After your patch 1, zone's spanned/present won't be set to 0 because:
free_area_init_node()
|-->
on. Total
pages: 32588823
[ 2007.594000] Policy zone: Normal
[ 2007.598000] init_memory_mapping: [mem 0x600-0x607]
The solution is simple, just add the memory range to memblock a little earlier,
before hotadd_new_pgdat().
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
---
mm
Hi Shi,
Sorry for the late reply. I hope it won't be too late.
NON-ACK by me, I think.
I noticed that your first has been merged. But it won't fix the problem
these code intended to fix.
After your patch 1, zone's spanned/present won't be set to 0 because:
free_area_init_node()
|--
On 08/18/2015 02:59 PM, Jiang Liu wrote:
...
}
@@ -739,6 +746,22 @@ void __init init_cpu_to_node(void)
if (!node_online(node))
node = find_near_online_node(node);
Hi Liu,
If cpu-less, memory-less and normal node will all be online anyway,
I think we don't
On 08/17/2015 11:18 AM, Jiang Liu wrote:
This is the third version to enable memoryless node support on x86
platforms. The previous version (https://lkml.org/lkml/2014/7/11/75)
blindly replaces numa_node_id()/cpu_to_node() with numa_mem_id()/
cpu_to_mem(). That's not the right solution as
Hi Liu,
On 08/17/2015 11:19 AM, Jiang Liu wrote:
..
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b3a1a5d77d92..5d7ad70ace0d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2069,6 +2069,9 @@ config USE_PERCPU_NUMA_NODE_ID
def_bool y
depends on NUMA
Hi Liu,
On 08/17/2015 11:19 AM, Jiang Liu wrote:
..
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b3a1a5d77d92..5d7ad70ace0d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2069,6 +2069,9 @@ config USE_PERCPU_NUMA_NODE_ID
def_bool y
depends on NUMA
On 08/18/2015 02:59 PM, Jiang Liu wrote:
...
}
@@ -739,6 +746,22 @@ void __init init_cpu_to_node(void)
if (!node_online(node))
node = find_near_online_node(node);
Hi Liu,
If cpu-less, memory-less and normal node will all be online anyway,
I think we don't
On 08/17/2015 11:18 AM, Jiang Liu wrote:
This is the third version to enable memoryless node support on x86
platforms. The previous version (https://lkml.org/lkml/2014/7/11/75)
blindly replaces numa_node_id()/cpu_to_node() with numa_mem_id()/
cpu_to_mem(). That's not the right solution as
ink "if (ret)" is enough.
The code looks good.
Reviewed-by: Tang Chen
Thanks.
+ release_memory_resource(res);
+ return ret;
+}
EXPORT_SYMBOL_GPL(add_memory);
#ifdef CONFIG_MEMORY_HOTREMOVE
--
To unsubscribe from this list: send the line "unsubscri
);
+ if (ret 0)
Not a big deal, but I think if (ret) is enough.
The code looks good.
Reviewed-by: Tang Chen tangc...@cn.fujitsu.com
Thanks.
+ release_memory_resource(res);
+ return ret;
+}
EXPORT_SYMBOL_GPL(add_memory);
#ifdef CONFIG_MEMORY_HOTREMOVE
--
To unsubscribe
wrote:
On 2015/8/4 11:36, Tang Chen wrote:
Hi TJ,
Sorry for the late reply.
On 07/16/2015 05:48 AM, Tejun Heo wrote:
..
so in initialization pharse makes no sense any more. The best near online
node for each cpu should be cached somewhere.
I'm not really following. Is this because the now
wrote:
On 2015/8/4 11:36, Tang Chen wrote:
Hi TJ,
Sorry for the late reply.
On 07/16/2015 05:48 AM, Tejun Heo wrote:
..
so in initialization pharse makes no sense any more. The best near online
node for each cpu should be cached somewhere.
I'm not really following. Is this because the now
On 08/04/2015 04:05 PM, Jiang Liu wrote:
..
But,
1) in cpu_up(), it will try to online a node, and it doesn't check if
the node has memory.
2) in try_offline_node(), it offlines CPUs first, and then the memory.
This behavior looks a little wired, or let's say it is ambiguous. It
seems
On 08/04/2015 04:05 PM, Jiang Liu wrote:
..
But,
1) in cpu_up(), it will try to online a node, and it doesn't check if
the node has memory.
2) in try_offline_node(), it offlines CPUs first, and then the memory.
This behavior looks a little wired, or let's say it is ambiguous. It
seems
Hi TJ,
Sorry for the late reply.
On 07/16/2015 05:48 AM, Tejun Heo wrote:
..
so in initialization pharse makes no sense any more. The best near online
node for each cpu should be cached somewhere.
I'm not really following. Is this because the now offline node can
later come online and
Hi TJ,
Sorry for the late reply.
On 07/16/2015 05:48 AM, Tejun Heo wrote:
..
so in initialization pharse makes no sense any more. The best near online
node for each cpu should be cached somewhere.
I'm not really following. Is this because the now offline node can
later come online and
On 07/16/2015 06:13 AM, Tejun Heo wrote:
Hello,
On Tue, Jul 07, 2015 at 05:30:20PM +0800, Tang Chen wrote:
[Solution]
To fix this problem, we establish cpuid <-> nodeid mapping for all the possible
cpus at boot time, and make it invariable. And according to init_cpu_to_node(),
On 07/16/2015 06:13 AM, Tejun Heo wrote:
Hello,
On Tue, Jul 07, 2015 at 05:30:20PM +0800, Tang Chen wrote:
[Solution]
To fix this problem, we establish cpuid - nodeid mapping for all the possible
cpus at boot time, and make it invariable. And according to init_cpu_to_node(),
cpuid - nodeid
node4 CPU(s): 62-76,190-204
NUMA node5 CPU(s): 78-92,206-220
Signed-off-by: Tang Chen
Reviewed-by: Yasuaki Ishimatsu
---
arch/x86/mm/numa.c | 6 --
include/linux/memblock.h | 2 ++
mm/memblock.c| 2 +-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git
node2 CPU(s): 31-45,159-173
NUMA node3 CPU(s): 46-60,174-188
NUMA node4 CPU(s): 62-76,190-204
NUMA node5 CPU(s): 78-92,206-220
Tang Chen (2):
memblock: Make memblock_overlaps_region() return bool.
mem-hotplug: Handle node hole when initializing numa_meminfo.
arch/x86/mm
-by: Tang Chen
---
include/linux/memblock.h | 2 +-
mm/memblock.c| 10 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index cc4b019..d312ae3 100644
--- a/include/linux/memblock.h
+++ b/include/linux
On 07/16/2015 05:20 AM, Tejun Heo wrote:
On Wed, Jul 01, 2015 at 11:16:54AM +0800, Tang Chen wrote:
...
- /* and there's no empty block */
- if (bi->start >= bi->end)
+ /* and there's no empty or non-exist block */
+ if (bi->
On 07/16/2015 05:20 AM, Tejun Heo wrote:
On Wed, Jul 01, 2015 at 11:16:54AM +0800, Tang Chen wrote:
...
- /* and there's no empty block */
- if (bi-start = bi-end)
+ /* and there's no empty or non-exist block */
+ if (bi-start = bi-end
node2 CPU(s): 31-45,159-173
NUMA node3 CPU(s): 46-60,174-188
NUMA node4 CPU(s): 62-76,190-204
NUMA node5 CPU(s): 78-92,206-220
Tang Chen (2):
memblock: Make memblock_overlaps_region() return bool.
mem-hotplug: Handle node hole when initializing numa_meminfo.
arch/x86/mm
-by: Tang Chen tangc...@cn.fujitsu.com
---
include/linux/memblock.h | 2 +-
mm/memblock.c| 10 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index cc4b019..d312ae3 100644
--- a/include/linux/memblock.h
+++ b
node4 CPU(s): 62-76,190-204
NUMA node5 CPU(s): 78-92,206-220
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
Reviewed-by: Yasuaki Ishimatsu isimatu.yasu...@jp.fujitsu.com
---
arch/x86/mm/numa.c | 6 --
include/linux/memblock.h | 2 ++
mm/memblock.c| 2 +-
3 files
On 07/16/2015 05:20 AM, Tejun Heo wrote:
On Wed, Jul 01, 2015 at 11:16:54AM +0800, Tang Chen wrote:
...
- /* and there's no empty block */
- if (bi->start >= bi->end)
+ /* and there's no empty or non-exist block */
+ if (bi->
On 07/15/2015 01:35 PM, Jiang Liu wrote:
On 2015/7/15 11:33, Tang Chen wrote:
Hi Mika,
On 07/07/2015 07:14 PM, Mika Penttilä wrote:
I think you forgot to reserve CPU 0 for BSP in cpuid mask.
Sorry for the late reply.
I'm not familiar with BSP. Do you mean in get_cpuid(),
I should reserve
On 07/16/2015 05:20 AM, Tejun Heo wrote:
On Wed, Jul 01, 2015 at 11:16:54AM +0800, Tang Chen wrote:
...
- /* and there's no empty block */
- if (bi-start = bi-end)
+ /* and there's no empty or non-exist block */
+ if (bi-start = bi-end
On 07/15/2015 01:35 PM, Jiang Liu wrote:
On 2015/7/15 11:33, Tang Chen wrote:
Hi Mika,
On 07/07/2015 07:14 PM, Mika Penttilä wrote:
I think you forgot to reserve CPU 0 for BSP in cpuid mask.
Sorry for the late reply.
I'm not familiar with BSP. Do you mean in get_cpuid(),
I should reserve
.
--Mika
On Tue, Jul 7, 2015 at 12:30 PM, Tang Chen wrote:
From: Gu Zheng
In this patch, we introduce a new static array named apicid_to_cpuid[],
which is large enough to store info for all possible cpus.
And then, we modify the cpuid calculation. In generic_processor_info(),
it simply finds
.
--Mika
On Tue, Jul 7, 2015 at 12:30 PM, Tang Chen tangc...@cn.fujitsu.com wrote:
From: Gu Zheng guz.f...@cn.fujitsu.com
In this patch, we introduce a new static array named apicid_to_cpuid[],
which is large enough to store info for all possible cpus.
And then, we modify the cpuid calculation
.
Signed-off-by: Gu Zheng
Signed-off-by: Tang Chen
---
drivers/acpi/acpi_processor.c | 5 +++-
drivers/acpi/processor_core.c | 57 +++
2 files changed, 40 insertions(+), 22 deletions(-)
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
s_node() and alloc_pages_exact_node().
Signed-off-by: Gu Zheng
Signed-off-by: Tang Chen
---
arch/x86/include/asm/topology.h | 2 ++
arch/x86/mm/numa.c | 57 ++---
include/linux/gfp.h | 12 -
3 files changed, 50 insertions(+), 21 deletions(-)
From: Gu Zheng
This patch set the persistent cpuid <-> nodeid mapping for all enabled/disabled
processors at boot time via an additional acpi namespace walk for processors.
Signed-off-by: Gu Zheng
Signed-off-by: Tang Chen
---
arch/ia64/kernel/acpi.c | 2 +-
arch/x86/kerne
cpuid <-> apicid mapping is established at local apic registeration time.
But non-present or disabled cpus are ignored.
In this patch, we establish all possible cpuid <-> apicid mapping when
registering local apic.
Signed-off-by: Gu Zheng
Signed-off-by: Tang Chen
---
arch/x86/include
t the
caller
control if disabled cpus are ignored.
5. Establish all possible cpuid <-> nodeid mapping.
This is done via an additional acpi namespace walk for processors.
This patch finished step 1.
Signed-off-by: Gu Zheng
Signed-off-by: Tang Chen
---
arch/x86/kernel/apic/apic.c
[Problem]
cpuid <-> nodeid mapping is firstly established at boot time. And workqueue
caches
the mapping in wq_numa_possible_cpumask in wq_numa_init() at boot time.
When doing node online/offline, cpuid <-> nodeid mapping is
established/destroyed,
which means, cpuid <-> nodeid mapping will
On 07/07/2015 12:42 AM, Yasuaki Ishimatsu wrote:
On Fri, 3 Jul 2015 09:26:05 +0800
Tang Chen wrote:
On 07/02/2015 11:02 PM, Yasuaki Ishimatsu wrote:
Hi Tang,
On my box, if I run lscpu, the output looks like this:
NUMA node0 CPU(s): 0-14,128-142
NUMA node1 CPU(s): 15-29,143-157
On 07/07/2015 12:42 AM, Yasuaki Ishimatsu wrote:
On Fri, 3 Jul 2015 09:26:05 +0800
Tang Chen tangc...@cn.fujitsu.com wrote:
On 07/02/2015 11:02 PM, Yasuaki Ishimatsu wrote:
Hi Tang,
On my box, if I run lscpu, the output looks like this:
NUMA node0 CPU(s): 0-14,128-142
NUMA node1 CPU(s
.
cpuid - apicid mapping is established at local apic registeration time.
But non-present or disabled cpus are ignored.
In this patch, we establish all possible cpuid - apicid mapping when
registering local apic.
Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com
Signed-off-by: Tang Chen tangc
- nodeid mapping.
This is done via an additional acpi namespace walk for processors.
This patch finished step 1.
Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
---
arch/x86/kernel/apic/apic.c | 26 +++---
1 file changed, 19
From: Gu Zheng guz.f...@cn.fujitsu.com
This patch set the persistent cpuid - nodeid mapping for all enabled/disabled
processors at boot time via an additional acpi namespace walk for processors.
Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
in alloc_pages_node() and alloc_pages_exact_node().
Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
---
arch/x86/include/asm/topology.h | 2 ++
arch/x86/mm/numa.c | 57 ++---
include/linux/gfp.h | 12
[Problem]
cpuid - nodeid mapping is firstly established at boot time. And workqueue
caches
the mapping in wq_numa_possible_cpumask in wq_numa_init() at boot time.
When doing node online/offline, cpuid - nodeid mapping is
established/destroyed,
which means, cpuid - nodeid mapping will change if
processors are ignored.
Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
---
drivers/acpi/acpi_processor.c | 5 +++-
drivers/acpi/processor_core.c | 57 +++
2 files changed, 40 insertions(+), 22 deletions(-)
diff
is removed,
but holes between nodes are not removed.
I think libraries are not able to handle this problem since nodes are
set online in kernel.
Seeing from user space, there is no hole.
Thanks.
Thanks,
Yasuaki Ishimatsu
On Wed, 1 Jul 2015 15:55:30 +0800
Tang Chen wrote:
On 07/01/2015 02:25
is removed,
but holes between nodes are not removed.
I think libraries are not able to handle this problem since nodes are
set online in kernel.
Seeing from user space, there is no hole.
Thanks.
Thanks,
Yasuaki Ishimatsu
On Wed, 1 Jul 2015 15:55:30 +0800
Tang Chen tangc...@cn.fujitsu.com wrote
On 07/01/2015 02:25 PM, Xishi Qiu wrote:
On 2015/7/1 11:16, Tang Chen wrote:
When parsing SRAT, all memory ranges are added into numa_meminfo.
In numa_init(), before entering numa_cleanup_meminfo(), all possible
memory ranges are in numa_meminfo. And numa_cleanup_meminfo() removes
all ranges
On 07/01/2015 02:25 PM, Xishi Qiu wrote:
On 2015/7/1 11:16, Tang Chen wrote:
When parsing SRAT, all memory ranges are added into numa_meminfo.
In numa_init(), before entering numa_cleanup_meminfo(), all possible
memory ranges are in numa_meminfo. And numa_cleanup_meminfo() removes
all ranges
.
In this patch, we use memblock_overlaps_region() to check if ranges in
numa_meminfo overlap with ranges in memory_block. Since memory_block contains
all available memory at boot time, if they overlap, it means the ranges
exist. If not, then remove them from numa_meminfo.
Signed-off-by: Tang Chen
.
In this patch, we use memblock_overlaps_region() to check if ranges in
numa_meminfo overlap with ranges in memory_block. Since memory_block contains
all available memory at boot time, if they overlap, it means the ranges
exist. If not, then remove them from numa_meminfo.
Signed-off-by: Tang Chen tangc
Thanks for the sharing. Will do more tests. :)
On 11/14/2014 07:39 AM, Wanpeng Li wrote:
Hi Tang,
On Tue, Nov 11, 2014 at 01:35:29PM +0800, Tang Chen wrote:
Hi Wanpeng,
Sorry for the late.
I think I have totally missed this thread.
I opened lockdep and RCU debug, and tried on 3.18-rc1
Thanks for the sharing. Will do more tests. :)
On 11/14/2014 07:39 AM, Wanpeng Li wrote:
Hi Tang,
On Tue, Nov 11, 2014 at 01:35:29PM +0800, Tang Chen wrote:
Hi Wanpeng,
Sorry for the late.
I think I have totally missed this thread.
I opened lockdep and RCU debug, and tried on 3.18-rc1
Sorry, please ignore this series. Sent by mistake.
On 11/12/2014 04:36 PM, Tang Chen wrote:
There are two problems when calculating node meminfo:
1. When hot-adding a node without onlining any page, MemTotal corrupted.
# hot-add node2 (memory not onlined)
# cat /sys/device/system/node/node2
in patch 2/2.
2. Add Cc: sta...@vger.kernel.org # 3.16+ since it is urgent.
Change log v1 -> v2:
1. Replace patch 2/2 with a new one. It provides the simplest way to
fix problem 2.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Reset nod
_pages() to
reset_all_zones_managed_pages()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen
Signed-off-by: Yasuaki Ishimatsu
Cc: sta...@vger.kernel.org # 3.16+
---
include/linux/bootmem.h | 1 +
mm/bootmem.c
..
spanned 8388608
present 8388608
managed 0
When we online memory on node2:
# cat /proc/zoneinfo
..
Node 2, zone Movable
..
spanned 8388608
present 16777216
managed 8388608
Signed-off-by: Tang Chen
Reviewed-by: Yasuaki Ishimatsu
Cc
emUsed: 0 kB
..
This patch-set fixes them.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Fix wrong check for zone->pageset initialization in
online_pages().
include/linux/bootmem.h | 1 +
include/linux/mm.h |
..
spanned 8388608
present 8388608
managed 0
When we online memory on node2:
# cat /proc/zoneinfo
..
Node 2, zone Movable
..
spanned 8388608
present 16777216
managed 8388608
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
Reviewed
: 0 kB
..
This patch-set fixes them.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Fix wrong check for zone-pageset initialization in
online_pages().
include/linux/bootmem.h | 1 +
include/linux/mm.h | 1 +
mm/bootmem.c
()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
Signed-off-by: Yasuaki Ishimatsu isimatu.yasu...@jp.fujitsu.com
Cc: sta...@vger.kernel.org # 3.16+
---
include
. Add Cc: sta...@vger.kernel.org # 3.16+ since it is urgent.
Change log v1 - v2:
1. Replace patch 2/2 with a new one. It provides the simplest way to
fix problem 2.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Reset node present pages when
Sorry, please ignore this series. Sent by mistake.
On 11/12/2014 04:36 PM, Tang Chen wrote:
There are two problems when calculating node meminfo:
1. When hot-adding a node without onlining any page, MemTotal corrupted.
# hot-add node2 (memory not onlined)
# cat /sys/device/system/node/node2
Hi Wanpeng,
I think I have totally missed this thread.
I opened lockdep and RCU debug, and tried on 3.18-rc1. But I didn't get
the warning.
My steps are:
1. Use numactl to bind a qemu process to node1.
2. Offline all node1 memory. And the qemu process is still running.
Would you please tell
_pages() to
reset_all_zones_managed_pages()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen
Signed-off-by: Yasuaki Ishimatsu
---
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c
provides the simplest way to
fix problem 2.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Reset node present pages when hot-adding a new pgdat.
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c
.
Signed-off-by: Tang Chen
Reviewed-by: Yasuaki Ishimatsu
---
mm/memory_hotplug.c | 15 +++
1 file changed, 15 insertions(+)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 8aba12b..26eac61 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1067,6 +1067,
()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
Signed-off-by: Yasuaki Ishimatsu isimatu.yasu...@jp.fujitsu.com
---
include/linux/bootmem.h | 1 +
mm/bootmem.c
the simplest way to
fix problem 2.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Reset node present pages when hot-adding a new pgdat.
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c | 24
-by: Tang Chen tangc...@cn.fujitsu.com
Reviewed-by: Yasuaki Ishimatsu isimatu.yasu...@jp.fujitsu.com
---
mm/memory_hotplug.c | 15 +++
1 file changed, 15 insertions(+)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 8aba12b..26eac61 100644
--- a/mm/memory_hotplug.c
+++ b/mm
Hi Wanpeng,
I think I have totally missed this thread.
I opened lockdep and RCU debug, and tried on 3.18-rc1. But I didn't get
the warning.
My steps are:
1. Use numactl to bind a qemu process to node1.
2. Offline all node1 memory. And the qemu process is still running.
Would you please tell
_pages() to
reset_all_zones_managed_pages()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen
Signed-off-by: Yasuaki Ishimatsu
---
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c
provides the simplest way to
fix problem 2.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Reset node present pages when hot-adding a new pgdat.
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c
.
Signed-off-by: Tang Chen
---
mm/memory_hotplug.c | 15 +++
1 file changed, 15 insertions(+)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 8aba12b..26eac61 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1067,6 +1067,14 @@ out:
the simplest way to
fix problem 2.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Reset node present pages when hot-adding a new pgdat.
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c | 24
-by: Tang Chen tangc...@cn.fujitsu.com
---
mm/memory_hotplug.c | 15 +++
1 file changed, 15 insertions(+)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 8aba12b..26eac61 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1067,6 +1067,14 @@ out:
}
#endif
()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen tangc...@cn.fujitsu.com
Signed-off-by: Yasuaki Ishimatsu isimatu.yasu...@jp.fujitsu.com
---
include/linux/bootmem.h | 1 +
mm/bootmem.c
On 11/05/2014 09:01 AM, Kamezawa Hiroyuki wrote:
> ..
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 3ab01b2..bc0de0f 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1013,9 +1013,13 @@ int __ref online_pages(unsigned long pfn, unsigned
> long nr_pages,
On 11/04/2014 04:10 PM, Yasuaki Ishimatsu wrote:
> (2014/10/31 18:46), Tang Chen wrote:
>> When we are doing memory hot-add, the following functions are called:
>>
>> add_memory()
>> |--> hotadd_new_pgdat()
>> |--> free_area_init_node()
On 11/04/2014 04:10 PM, Yasuaki Ishimatsu wrote:
(2014/10/31 18:46), Tang Chen wrote:
When we are doing memory hot-add, the following functions are called:
add_memory()
|-- hotadd_new_pgdat()
|-- free_area_init_node()
|-- free_area_init_core()
|-- zone
On 11/05/2014 09:01 AM, Kamezawa Hiroyuki wrote:
..
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 3ab01b2..bc0de0f 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1013,9 +1013,13 @@ int __ref online_pages(unsigned long pfn, unsigned
long nr_pages, int
Hi all,
I thinks these two problems are very important and should be merged ASAP.
Would you please help to have a look at it ?
Thanks.
On 10/31/2014 05:46 PM, Tang Chen wrote:
There are two problems when calculating node meminfo:
1. When hot-adding a node without onlining any page, MemTotal
Hi all,
I thinks these two problems are very important and should be merged ASAP.
Would you please help to have a look at it ?
Thanks.
On 10/31/2014 05:46 PM, Tang Chen wrote:
There are two problems when calculating node meminfo:
1. When hot-adding a node without onlining any page, MemTotal
_pages() to
reset_all_zones_managed_pages()
2. Make reset_node_managed_pages() non-static
3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat is
initialized
Signed-off-by: Tang Chen
Signed-off-by: Yasuaki Ishimatsu
---
include/linux/bootmem.h | 1 +
mm/bootmem.c| 9 +
mm/memory_hotplug.c
emUsed: 0 kB
..
This patch-set fixes them.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Fix wrong check for zone->pageset initialization in
online_pages().
include/linux/bootmem.h | 1 +
include/linux/mm.h |
: 0 kB
..
We have to populate some zones before onlining memory, otherwise no memory
could be onlined.
So when onlining pages, we should also check if zone->pageset is pointing to
boot_pageset.
Signed-off-by: Gu Zheng
Signed-off-by: Tang Chen
---
include/linux/mm.h |
emUsed: 0 kB
..
This patch-set fixes them.
Tang Chen (2):
mem-hotplug: Reset node managed pages when hot-adding a new pgdat.
mem-hotplug: Fix wrong check for zone->pageset initialization in
online_pages().
include/linux/bootmem.h | 1 +
include/linux/mm.h |
101 - 200 of 2061 matches
Mail list logo