When doing memory hot add via the 'probe' interface in sysfs we do not need to loop through and add memory one section at a time. I think this was originally done for powerpc, but is not needed. This patch removes the loop and just calls add_memory for all of the memory to be added. Signed-off-by: Nathan Fontenot <nfont@xxxxxxxxxxxxxxxxxx> --- drivers/base/memory.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) Index: linux/drivers/base/memory.c =================================================================== --- linux.orig/drivers/base/memory.c +++ linux/drivers/base/memory.c @@ -427,8 +427,8 @@ memory_probe_store(struct device *dev, s const char *buf, size_t count) { u64 phys_addr; - int nid; - int i, ret; + int nid, ret; + unsigned long block_size; unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block; phys_addr = simple_strtoull(buf, NULL, 0); @@ -436,19 +436,11 @@ memory_probe_store(struct device *dev, s if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1)) return -EINVAL; - for (i = 0; i < sections_per_block; i++) { - nid = memory_add_physaddr_to_nid(phys_addr); - ret = add_memory(nid, phys_addr, - PAGES_PER_SECTION << PAGE_SHIFT); - if (ret) - goto out; + block_size = get_memory_block_size(); + nid = memory_add_physaddr_to_nid(phys_addr); + ret = add_memory(nid, phys_addr, block_size); - phys_addr += MIN_MEMORY_BLOCK_SIZE; - } - - ret = count; -out: - return ret; + return ret ? ret : count; } static DEVICE_ATTR(probe, S_IWUSR, NULL, memory_probe_store); -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>