Message ID | 50126F21.803@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Wen, 2012/07/27 19:36, Wen Congyang wrote: > From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> > > The patch adds node_set_offline() and unregister_one_node() to remove_memory() > for removing sysfs file of node. > > CC: David Rientjes <rientjes@google.com> > CC: Jiang Liu <liuj97@gmail.com> > CC: Len Brown <len.brown@intel.com> > CC: Benjamin Herrenschmidt <benh@kernel.crashing.org> > CC: Paul Mackerras <paulus@samba.org> > CC: Christoph Lameter <cl@linux.com> > Cc: Minchan Kim <minchan.kim@gmail.com> > CC: Andrew Morton <akpm@linux-foundation.org> > CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> > CC: Wen Congyang <wency@cn.fujitsu.com> > Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> > --- > mm/memory_hotplug.c | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index 5ac035f..5681968 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -1267,6 +1267,11 @@ int __ref remove_memory(int nid, u64 start, u64 size) > /* remove memmap entry */ > firmware_map_remove(start, start + size, "System RAM"); > > + if (!node_present_pages(nid)) { Applying [PATCH v5 17/19], pgdat->node_spanned_pages can become 0 when all memory of the pgdat is removed. When pgdat->node_spanned_pages is 0, it means the pgdat has no memory. So I think node_spanned_pages() is better. Thanks, Yasuaki Ishimatsu > + node_set_offline(nid); > + unregister_one_node(nid); > + } > + > arch_remove_memory(start, size); > out: > unlock_memory_hotplug(); > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
At 07/27/2012 06:45 PM, Yasuaki Ishimatsu Wrote: > Hi Wen, > > 2012/07/27 19:36, Wen Congyang wrote: >> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> >> >> The patch adds node_set_offline() and unregister_one_node() to >> remove_memory() >> for removing sysfs file of node. >> >> CC: David Rientjes <rientjes@google.com> >> CC: Jiang Liu <liuj97@gmail.com> >> CC: Len Brown <len.brown@intel.com> >> CC: Benjamin Herrenschmidt <benh@kernel.crashing.org> >> CC: Paul Mackerras <paulus@samba.org> >> CC: Christoph Lameter <cl@linux.com> >> Cc: Minchan Kim <minchan.kim@gmail.com> >> CC: Andrew Morton <akpm@linux-foundation.org> >> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> >> CC: Wen Congyang <wency@cn.fujitsu.com> >> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> >> --- >> mm/memory_hotplug.c | 5 +++++ >> 1 files changed, 5 insertions(+), 0 deletions(-) >> >> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >> index 5ac035f..5681968 100644 >> --- a/mm/memory_hotplug.c >> +++ b/mm/memory_hotplug.c >> @@ -1267,6 +1267,11 @@ int __ref remove_memory(int nid, u64 start, u64 >> size) >> /* remove memmap entry */ >> firmware_map_remove(start, start + size, "System RAM"); >> >> + if (!node_present_pages(nid)) { > > Applying [PATCH v5 17/19], pgdat->node_spanned_pages can become 0 when > all memory of the pgdat is removed. When pgdat->node_spanned_pages is 0, > it means the pgdat has no memory. So I think node_spanned_pages() is > better. node_spanned_pages = present_pages + hole_pages So present_pages is always less or equal than spanned_pages, and I think checking present pages is better. Thanks Wen Congyang > > Thanks, > Yasuaki Ishimatsu > >> + node_set_offline(nid); >> + unregister_one_node(nid); >> + } >> + >> arch_remove_memory(start, size); >> out: >> unlock_memory_hotplug(); >> > > > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
At 07/27/2012 06:45 PM, Yasuaki Ishimatsu Wrote: > Hi Wen, > > 2012/07/27 19:36, Wen Congyang wrote: >> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> >> >> The patch adds node_set_offline() and unregister_one_node() to >> remove_memory() >> for removing sysfs file of node. >> >> CC: David Rientjes <rientjes@google.com> >> CC: Jiang Liu <liuj97@gmail.com> >> CC: Len Brown <len.brown@intel.com> >> CC: Benjamin Herrenschmidt <benh@kernel.crashing.org> >> CC: Paul Mackerras <paulus@samba.org> >> CC: Christoph Lameter <cl@linux.com> >> Cc: Minchan Kim <minchan.kim@gmail.com> >> CC: Andrew Morton <akpm@linux-foundation.org> >> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> >> CC: Wen Congyang <wency@cn.fujitsu.com> >> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> >> --- >> mm/memory_hotplug.c | 5 +++++ >> 1 files changed, 5 insertions(+), 0 deletions(-) >> >> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >> index 5ac035f..5681968 100644 >> --- a/mm/memory_hotplug.c >> +++ b/mm/memory_hotplug.c >> @@ -1267,6 +1267,11 @@ int __ref remove_memory(int nid, u64 start, u64 >> size) >> /* remove memmap entry */ >> firmware_map_remove(start, start + size, "System RAM"); >> >> + if (!node_present_pages(nid)) { > > Applying [PATCH v5 17/19], pgdat->node_spanned_pages can become 0 when > all memory of the pgdat is removed. When pgdat->node_spanned_pages is 0, > it means the pgdat has no memory. So I think node_spanned_pages() is > better. Hmm, if the node contains cpu, and the cpu is onlined, can we offline this node? Thanks Wen Congyang > > Thanks, > Yasuaki Ishimatsu > >> + node_set_offline(nid); >> + unregister_one_node(nid); >> + } >> + >> arch_remove_memory(start, size); >> out: >> unlock_memory_hotplug(); >> > > > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 5ac035f..5681968 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1267,6 +1267,11 @@ int __ref remove_memory(int nid, u64 start, u64 size) /* remove memmap entry */ firmware_map_remove(start, start + size, "System RAM"); + if (!node_present_pages(nid)) { + node_set_offline(nid); + unregister_one_node(nid); + } + arch_remove_memory(start, size); out: unlock_memory_hotplug();