lkml.org 
[lkml]   [2012]   [Sep]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC v9 PATCH 05/21] memory-hotplug: check whether memory is present or not
    On 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 <isimatu.yasuaki@jp.fujitsu.com>
    >>>
    >>> 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?

    since memory hot-add or hot-remove is based on memblock, if check in
    memory_block_change_state()
    can guarantee conflict never occur?

    >
    > Thansk,
    > Yasuaki Ishimatsu
    >
    >> Thanks
    >> Wen Congyang
    >>
    >>>
    >>> 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>
    >>> ---
    >>> 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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
    >



    \
     
     \ /
      Last update: 2012-09-28 06:21    [W:4.066 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site