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 <[email protected]>
---
 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);


_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to