[PATCH 3/8] Add all memory via sysfs probe interface at once
Nathan Fontenot
nfont at linux.vnet.ibm.com
Thu Jul 25 04:37:47 EST 2013
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 at 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);
More information about the Linuxppc-dev
mailing list