Messages in this thread Patch in this message | | | Date | Wed, 24 Jul 2013 13:37:47 -0500 | From | Nathan Fontenot <> | Subject | [PATCH 3/8] Add all memory via sysfs probe interface at once |
| |
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@linux.vnet.ibm.com> --- 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);
| |