Hi Jiang,

Thank you for your feedback.

2012/07/01 0:46, Jiang Liu wrote:
> On 06/27/2012 01:44 PM, Yasuaki Ishimatsu wrote:
>> When offline_pages() is called to offlined memory, the function fails since
>> all memory has been offlined. In this case, the function should succeed.
>> The patch adds the check function into offline_pages().
>>
>> CC: Len Brown <len.br...@intel.com>
>> CC: Benjamin Herrenschmidt <b...@kernel.crashing.org>
>> CC: Paul Mackerras <pau...@samba.org>
>> CC: Christoph Lameter <c...@linux.com>
>> Cc: Minchan Kim <minchan....@gmail.com>
>> CC: Andrew Morton <a...@linux-foundation.org>
>> CC: KOSAKI Motohiro <kosaki.motoh...@jp.fujitsu.com>
>> CC: Wen Congyang <we...@cn.fujitsu.com>
>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasu...@jp.fujitsu.com>
>>
>> ---
>>   drivers/base/memory.c  |   20 ++++++++++++++++++++
>>   include/linux/memory.h |    1 +
>>   mm/memory_hotplug.c    |    5 +++++
>>   3 files changed, 26 insertions(+)
>>
>> Index: linux-3.5-rc4/drivers/base/memory.c
>> ===================================================================
>> --- linux-3.5-rc4.orig/drivers/base/memory.c 2012-06-26 13:28:16.726211752 
>> +0900
>> +++ linux-3.5-rc4/drivers/base/memory.c      2012-06-26 13:34:22.423639904 
>> +0900
>> @@ -70,6 +70,26 @@ void unregister_memory_isolate_notifier(
>>   }
>>   EXPORT_SYMBOL(unregister_memory_isolate_notifier);
>>
>> +bool memory_is_offline(unsigned long start_pfn, unsigned long end_pfn)
>> +{
>> +    struct memory_block *mem;
>> +    struct mem_section *section;
>> +    unsigned long pfn, section_nr;
>> +
>> +    for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
>> +            section_nr = pfn_to_section_nr(pfn);
>> +            section = __nr_to_section(section_nr);
> Is it possible for __nr_to_section return NULL here?

Yes. I'll add NULL check.

> 
>> +            mem = find_memory_block(section);
>> +            if (!mem)
>> +                    continue;
>> +            if (mem->state == MEM_OFFLINE)
>> +                    continue;
>> +            return false;
>> +    }
>> +
>> +    return true;
>> +}
> Need a put_dev(&mem->dev) for the last memory block device handled before 
> return.

Thanks.
I think kobject_put(&mem->dev.kobj) should be handled for all memory block
devices found by find_memory_block(). I'll update it.

Thanks,
Yasuaki Ishimatsu

> 
>> +
>>   /*
>>    * register_memory - Setup a sysfs device for a memory block
>>    */
>> Index: linux-3.5-rc4/include/linux/memory.h
>> ===================================================================
>> --- linux-3.5-rc4.orig/include/linux/memory.h        2012-06-25 
>> 04:53:04.000000000 +0900
>> +++ linux-3.5-rc4/include/linux/memory.h     2012-06-26 13:34:22.424639891 
>> +0900
>> @@ -120,6 +120,7 @@ extern int memory_isolate_notify(unsigne
>>   extern struct memory_block *find_memory_block_hinted(struct mem_section *,
>>                                                      struct memory_block *);
>>   extern struct memory_block *find_memory_block(struct mem_section *);
>> +extern bool memory_is_offline(unsigned long start_pfn, unsigned long 
>> end_pfn);
>>   #define CONFIG_MEM_BLOCK_SIZE      (PAGES_PER_SECTION<<PAGE_SHIFT)
>>   enum mem_add_context { BOOT, HOTPLUG };
>>   #endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
>> Index: linux-3.5-rc4/mm/memory_hotplug.c
>> ===================================================================
>> --- linux-3.5-rc4.orig/mm/memory_hotplug.c   2012-06-26 13:28:16.743211538 
>> +0900
>> +++ linux-3.5-rc4/mm/memory_hotplug.c        2012-06-26 13:48:38.264940468 
>> +0900
>> @@ -887,6 +887,11 @@ static int __ref offline_pages(unsigned
>>
>>      lock_memory_hotplug();
>>
>> +    if (memory_is_offline(start_pfn, end_pfn)) {
>> +            ret = 0;
>> +            goto out;
>> +    }
>> +
>>      zone = page_zone(pfn_to_page(start_pfn));
>>      node = zone_to_nid(zone);
>>      nr_pages = end_pfn - start_pfn;
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
>> the body of a message to majord...@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
> 
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majord...@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"d...@kvack.org";> em...@kvack.org </a>
> 



_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to