From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wen Congyang Subject: Re: [RFC v9 PATCH 05/21] memory-hotplug: check whether memory is present or not Date: Tue, 11 Sep 2012 10:46:25 +0800 Message-ID: <504EA601.5010704@cn.fujitsu.com> References: <1346837155-534-1-git-send-email-wency@cn.fujitsu.com> <1346837155-534-6-git-send-email-wency@cn.fujitsu.com> <504E9EBE.1040403@cn.fujitsu.com> <504EA0F7.5090805@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <504EA0F7.5090805@jp.fujitsu.com> Sender: owner-linux-mm@kvack.org To: Yasuaki Ishimatsu Cc: x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-ia64@vger.kernel.org, cmetcalf@tilera.com, sparclinux@vger.kernel.org, rientjes@google.com, liuj97@gmail.com, len.brown@intel.com, benh@kernel.crashing.org, paulus@samba.org, cl@linux.com, minchan.kim@gmail.com, akpm@linux-foundation.org, kosaki.motohiro@jp.fujitsu.com List-Id: linux-acpi@vger.kernel.org At 09/11/2012 10:24 AM, Yasuaki Ishimatsu Wrote: > Hi Wen, > > 2012/09/11 11:15, Wen Congyang wrote: >> Hi, ishimatsu >> >> At 09/05/2012 05:25 PM, wency@cn.fujitsu.com Wrote: >>> From: Yasuaki Ishimatsu >>> >>> If system supports memory hot-remove, online_pages() may online >>> removed pages. >>> So online_pages() need to check whether onlining pages are present or >>> not. >> >> Because we use memory_block_change_state() to hotremoving memory, I think >> this patch can be removed. What do you think? > > Pleae teach me detals a little more. If we use memory_block_change_state(), > does the conflict never occur? Why? I misunderstand sth, please ignore it. Wen Congyang > > Thansk, > Yasuaki Ishimatsu > >> Thanks >> Wen Congyang >> >>> >>> CC: David Rientjes >>> CC: Jiang Liu >>> CC: Len Brown >>> CC: Benjamin Herrenschmidt >>> CC: Paul Mackerras >>> CC: Christoph Lameter >>> Cc: Minchan Kim >>> CC: Andrew Morton >>> CC: KOSAKI Motohiro >>> CC: Wen Congyang >>> Signed-off-by: Yasuaki Ishimatsu >>> --- >>> include/linux/mmzone.h | 19 +++++++++++++++++++ >>> mm/memory_hotplug.c | 13 +++++++++++++ >>> 2 files changed, 32 insertions(+), 0 deletions(-) >>> >>> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h >>> index 2daa54f..ac3ae30 100644 >>> --- a/include/linux/mmzone.h >>> +++ b/include/linux/mmzone.h >>> @@ -1180,6 +1180,25 @@ void sparse_init(void); >>> #define sparse_index_init(_sec, _nid) do {} while (0) >>> #endif /* CONFIG_SPARSEMEM */ >>> >>> +#ifdef CONFIG_SPARSEMEM >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + int i; >>> + for (i = 0; i < nr_pages; i++) { >>> + if (pfn_present(pfn + i)) >>> + continue; >>> + else >>> + return -EINVAL; >>> + } >>> + return 0; >>> +} >>> +#else >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + return 0; >>> +} >>> +#endif /* CONFIG_SPARSEMEM*/ >>> + >>> #ifdef CONFIG_NODES_SPAN_OTHER_NODES >>> bool early_pfn_in_nid(unsigned long pfn, int nid); >>> #else >>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >>> index 49f7747..299747d 100644 >>> --- a/mm/memory_hotplug.c >>> +++ b/mm/memory_hotplug.c >>> @@ -467,6 +467,19 @@ int __ref online_pages(unsigned long pfn, >>> unsigned long nr_pages) >>> struct memory_notify arg; >>> >>> lock_memory_hotplug(); >>> + /* >>> + * If system supports memory hot-remove, the memory may have been >>> + * removed. So we check whether the memory has been removed or not. >>> + * >>> + * Note: When CONFIG_SPARSEMEM is defined, pfns_present() become >>> + * effective. If CONFIG_SPARSEMEM is not defined, >>> pfns_present() >>> + * always returns 0. >>> + */ >>> + ret = pfns_present(pfn, nr_pages); >>> + if (ret) { >>> + unlock_memory_hotplug(); >>> + return ret; >>> + } >>> arg.start_pfn = pfn; >>> arg.nr_pages = nr_pages; >>> arg.status_change_nid = -1; >> > > > -- 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: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wen Congyang Date: Tue, 11 Sep 2012 02:46:25 +0000 Subject: Re: [RFC v9 PATCH 05/21] memory-hotplug: check whether memory is present or not Message-Id: <504EA601.5010704@cn.fujitsu.com> List-Id: References: <1346837155-534-1-git-send-email-wency@cn.fujitsu.com> <1346837155-534-6-git-send-email-wency@cn.fujitsu.com> <504E9EBE.1040403@cn.fujitsu.com> <504EA0F7.5090805@jp.fujitsu.com> In-Reply-To: <504EA0F7.5090805@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Yasuaki Ishimatsu Cc: x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-ia64@vger.kernel.org, cmetcalf@tilera.com, sparclinux@vger.kernel.org, rientjes@google.com, liuj97@gmail.com, len.brown@intel.com, benh@kernel.crashing.org, paulus@samba.org, cl@linux.com, minchan.kim@gmail.com, akpm@linux-foundation.org, kosaki.motohiro@jp.fujitsu.com At 09/11/2012 10:24 AM, Yasuaki Ishimatsu Wrote: > Hi Wen, > > 2012/09/11 11:15, Wen Congyang wrote: >> Hi, ishimatsu >> >> At 09/05/2012 05:25 PM, wency@cn.fujitsu.com Wrote: >>> From: Yasuaki Ishimatsu >>> >>> If system supports memory hot-remove, online_pages() may online >>> removed pages. >>> So online_pages() need to check whether onlining pages are present or >>> not. >> >> Because we use memory_block_change_state() to hotremoving memory, I think >> this patch can be removed. What do you think? > > Pleae teach me detals a little more. If we use memory_block_change_state(), > does the conflict never occur? Why? I misunderstand sth, please ignore it. Wen Congyang > > Thansk, > Yasuaki Ishimatsu > >> Thanks >> Wen Congyang >> >>> >>> CC: David Rientjes >>> CC: Jiang Liu >>> CC: Len Brown >>> CC: Benjamin Herrenschmidt >>> CC: Paul Mackerras >>> CC: Christoph Lameter >>> Cc: Minchan Kim >>> CC: Andrew Morton >>> CC: KOSAKI Motohiro >>> CC: Wen Congyang >>> Signed-off-by: Yasuaki Ishimatsu >>> --- >>> include/linux/mmzone.h | 19 +++++++++++++++++++ >>> mm/memory_hotplug.c | 13 +++++++++++++ >>> 2 files changed, 32 insertions(+), 0 deletions(-) >>> >>> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h >>> index 2daa54f..ac3ae30 100644 >>> --- a/include/linux/mmzone.h >>> +++ b/include/linux/mmzone.h >>> @@ -1180,6 +1180,25 @@ void sparse_init(void); >>> #define sparse_index_init(_sec, _nid) do {} while (0) >>> #endif /* CONFIG_SPARSEMEM */ >>> >>> +#ifdef CONFIG_SPARSEMEM >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + int i; >>> + for (i = 0; i < nr_pages; i++) { >>> + if (pfn_present(pfn + i)) >>> + continue; >>> + else >>> + return -EINVAL; >>> + } >>> + return 0; >>> +} >>> +#else >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + return 0; >>> +} >>> +#endif /* CONFIG_SPARSEMEM*/ >>> + >>> #ifdef CONFIG_NODES_SPAN_OTHER_NODES >>> bool early_pfn_in_nid(unsigned long pfn, int nid); >>> #else >>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >>> index 49f7747..299747d 100644 >>> --- a/mm/memory_hotplug.c >>> +++ b/mm/memory_hotplug.c >>> @@ -467,6 +467,19 @@ int __ref online_pages(unsigned long pfn, >>> unsigned long nr_pages) >>> struct memory_notify arg; >>> >>> lock_memory_hotplug(); >>> + /* >>> + * If system supports memory hot-remove, the memory may have been >>> + * removed. So we check whether the memory has been removed or not. >>> + * >>> + * Note: When CONFIG_SPARSEMEM is defined, pfns_present() become >>> + * effective. If CONFIG_SPARSEMEM is not defined, >>> pfns_present() >>> + * always returns 0. >>> + */ >>> + ret = pfns_present(pfn, nr_pages); >>> + if (ret) { >>> + unlock_memory_hotplug(); >>> + return ret; >>> + } >>> arg.start_pfn = pfn; >>> arg.nr_pages = nr_pages; >>> arg.status_change_nid = -1; >> > > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from song.cn.fujitsu.com (unknown [222.73.24.84]) by ozlabs.org (Postfix) with ESMTP id 4591E2C0082 for ; Tue, 11 Sep 2012 12:40:41 +1000 (EST) Message-ID: <504EA601.5010704@cn.fujitsu.com> Date: Tue, 11 Sep 2012 10:46:25 +0800 From: Wen Congyang MIME-Version: 1.0 To: Yasuaki Ishimatsu Subject: Re: [RFC v9 PATCH 05/21] memory-hotplug: check whether memory is present or not References: <1346837155-534-1-git-send-email-wency@cn.fujitsu.com> <1346837155-534-6-git-send-email-wency@cn.fujitsu.com> <504E9EBE.1040403@cn.fujitsu.com> <504EA0F7.5090805@jp.fujitsu.com> In-Reply-To: <504EA0F7.5090805@jp.fujitsu.com> Content-Type: text/plain; charset=ISO-8859-1 Cc: linux-s390@vger.kernel.org, linux-ia64@vger.kernel.org, len.brown@intel.com, linux-acpi@vger.kernel.org, linux-sh@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, cmetcalf@tilera.com, linux-mm@kvack.org, paulus@samba.org, minchan.kim@gmail.com, kosaki.motohiro@jp.fujitsu.com, rientjes@google.com, sparclinux@vger.kernel.org, cl@linux.com, linuxppc-dev@lists.ozlabs.org, akpm@linux-foundation.org, liuj97@gmail.com List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , At 09/11/2012 10:24 AM, Yasuaki Ishimatsu Wrote: > Hi Wen, > > 2012/09/11 11:15, Wen Congyang wrote: >> Hi, ishimatsu >> >> At 09/05/2012 05:25 PM, wency@cn.fujitsu.com Wrote: >>> From: Yasuaki Ishimatsu >>> >>> If system supports memory hot-remove, online_pages() may online >>> removed pages. >>> So online_pages() need to check whether onlining pages are present or >>> not. >> >> Because we use memory_block_change_state() to hotremoving memory, I think >> this patch can be removed. What do you think? > > Pleae teach me detals a little more. If we use memory_block_change_state(), > does the conflict never occur? Why? I misunderstand sth, please ignore it. Wen Congyang > > Thansk, > Yasuaki Ishimatsu > >> Thanks >> Wen Congyang >> >>> >>> CC: David Rientjes >>> CC: Jiang Liu >>> CC: Len Brown >>> CC: Benjamin Herrenschmidt >>> CC: Paul Mackerras >>> CC: Christoph Lameter >>> Cc: Minchan Kim >>> CC: Andrew Morton >>> CC: KOSAKI Motohiro >>> CC: Wen Congyang >>> Signed-off-by: Yasuaki Ishimatsu >>> --- >>> include/linux/mmzone.h | 19 +++++++++++++++++++ >>> mm/memory_hotplug.c | 13 +++++++++++++ >>> 2 files changed, 32 insertions(+), 0 deletions(-) >>> >>> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h >>> index 2daa54f..ac3ae30 100644 >>> --- a/include/linux/mmzone.h >>> +++ b/include/linux/mmzone.h >>> @@ -1180,6 +1180,25 @@ void sparse_init(void); >>> #define sparse_index_init(_sec, _nid) do {} while (0) >>> #endif /* CONFIG_SPARSEMEM */ >>> >>> +#ifdef CONFIG_SPARSEMEM >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + int i; >>> + for (i = 0; i < nr_pages; i++) { >>> + if (pfn_present(pfn + i)) >>> + continue; >>> + else >>> + return -EINVAL; >>> + } >>> + return 0; >>> +} >>> +#else >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + return 0; >>> +} >>> +#endif /* CONFIG_SPARSEMEM*/ >>> + >>> #ifdef CONFIG_NODES_SPAN_OTHER_NODES >>> bool early_pfn_in_nid(unsigned long pfn, int nid); >>> #else >>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >>> index 49f7747..299747d 100644 >>> --- a/mm/memory_hotplug.c >>> +++ b/mm/memory_hotplug.c >>> @@ -467,6 +467,19 @@ int __ref online_pages(unsigned long pfn, >>> unsigned long nr_pages) >>> struct memory_notify arg; >>> >>> lock_memory_hotplug(); >>> + /* >>> + * If system supports memory hot-remove, the memory may have been >>> + * removed. So we check whether the memory has been removed or not. >>> + * >>> + * Note: When CONFIG_SPARSEMEM is defined, pfns_present() become >>> + * effective. If CONFIG_SPARSEMEM is not defined, >>> pfns_present() >>> + * always returns 0. >>> + */ >>> + ret = pfns_present(pfn, nr_pages); >>> + if (ret) { >>> + unlock_memory_hotplug(); >>> + return ret; >>> + } >>> arg.start_pfn = pfn; >>> arg.nr_pages = nr_pages; >>> arg.status_change_nid = -1; >> > > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757836Ab2IKCkp (ORCPT ); Mon, 10 Sep 2012 22:40:45 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:21696 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1753206Ab2IKCkn (ORCPT ); Mon, 10 Sep 2012 22:40:43 -0400 X-IronPort-AV: E=Sophos;i="4.80,401,1344182400"; d="scan'208";a="5817317" Message-ID: <504EA601.5010704@cn.fujitsu.com> Date: Tue, 11 Sep 2012 10:46:25 +0800 From: Wen Congyang User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100413 Fedora/3.0.4-2.fc13 Thunderbird/3.0.4 MIME-Version: 1.0 To: Yasuaki Ishimatsu CC: x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-ia64@vger.kernel.org, cmetcalf@tilera.com, sparclinux@vger.kernel.org, rientjes@google.com, liuj97@gmail.com, len.brown@intel.com, benh@kernel.crashing.org, paulus@samba.org, cl@linux.com, minchan.kim@gmail.com, akpm@linux-foundation.org, kosaki.motohiro@jp.fujitsu.com Subject: Re: [RFC v9 PATCH 05/21] memory-hotplug: check whether memory is present or not References: <1346837155-534-1-git-send-email-wency@cn.fujitsu.com> <1346837155-534-6-git-send-email-wency@cn.fujitsu.com> <504E9EBE.1040403@cn.fujitsu.com> <504EA0F7.5090805@jp.fujitsu.com> In-Reply-To: <504EA0F7.5090805@jp.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2012/09/11 10:40:06, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2012/09/11 10:40:07, Serialize complete at 2012/09/11 10:40:07 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At 09/11/2012 10:24 AM, Yasuaki Ishimatsu Wrote: > Hi Wen, > > 2012/09/11 11:15, Wen Congyang wrote: >> Hi, ishimatsu >> >> At 09/05/2012 05:25 PM, wency@cn.fujitsu.com Wrote: >>> From: Yasuaki Ishimatsu >>> >>> If system supports memory hot-remove, online_pages() may online >>> removed pages. >>> So online_pages() need to check whether onlining pages are present or >>> not. >> >> Because we use memory_block_change_state() to hotremoving memory, I think >> this patch can be removed. What do you think? > > Pleae teach me detals a little more. If we use memory_block_change_state(), > does the conflict never occur? Why? I misunderstand sth, please ignore it. Wen Congyang > > Thansk, > Yasuaki Ishimatsu > >> Thanks >> Wen Congyang >> >>> >>> CC: David Rientjes >>> CC: Jiang Liu >>> CC: Len Brown >>> CC: Benjamin Herrenschmidt >>> CC: Paul Mackerras >>> CC: Christoph Lameter >>> Cc: Minchan Kim >>> CC: Andrew Morton >>> CC: KOSAKI Motohiro >>> CC: Wen Congyang >>> Signed-off-by: Yasuaki Ishimatsu >>> --- >>> include/linux/mmzone.h | 19 +++++++++++++++++++ >>> mm/memory_hotplug.c | 13 +++++++++++++ >>> 2 files changed, 32 insertions(+), 0 deletions(-) >>> >>> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h >>> index 2daa54f..ac3ae30 100644 >>> --- a/include/linux/mmzone.h >>> +++ b/include/linux/mmzone.h >>> @@ -1180,6 +1180,25 @@ void sparse_init(void); >>> #define sparse_index_init(_sec, _nid) do {} while (0) >>> #endif /* CONFIG_SPARSEMEM */ >>> >>> +#ifdef CONFIG_SPARSEMEM >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + int i; >>> + for (i = 0; i < nr_pages; i++) { >>> + if (pfn_present(pfn + i)) >>> + continue; >>> + else >>> + return -EINVAL; >>> + } >>> + return 0; >>> +} >>> +#else >>> +static inline int pfns_present(unsigned long pfn, unsigned long >>> nr_pages) >>> +{ >>> + return 0; >>> +} >>> +#endif /* CONFIG_SPARSEMEM*/ >>> + >>> #ifdef CONFIG_NODES_SPAN_OTHER_NODES >>> bool early_pfn_in_nid(unsigned long pfn, int nid); >>> #else >>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >>> index 49f7747..299747d 100644 >>> --- a/mm/memory_hotplug.c >>> +++ b/mm/memory_hotplug.c >>> @@ -467,6 +467,19 @@ int __ref online_pages(unsigned long pfn, >>> unsigned long nr_pages) >>> struct memory_notify arg; >>> >>> lock_memory_hotplug(); >>> + /* >>> + * If system supports memory hot-remove, the memory may have been >>> + * removed. So we check whether the memory has been removed or not. >>> + * >>> + * Note: When CONFIG_SPARSEMEM is defined, pfns_present() become >>> + * effective. If CONFIG_SPARSEMEM is not defined, >>> pfns_present() >>> + * always returns 0. >>> + */ >>> + ret = pfns_present(pfn, nr_pages); >>> + if (ret) { >>> + unlock_memory_hotplug(); >>> + return ret; >>> + } >>> arg.start_pfn = pfn; >>> arg.nr_pages = nr_pages; >>> arg.status_change_nid = -1; >> > > >