From 4e7962e8c4ab50ff61e9e32d38ad2f623036e95d Mon Sep 17 00:00:00 2001 From: Nathan Fontenot Date: Mon, 31 Jan 2011 10:55:23 -0600 Subject: [PATCH] --- yaml --- r: 235469 b: refs/heads/master c: 6add7cd618b4d4dc525731beb539c5e06e891855 h: refs/heads/master i: 235467: eda0f1af46acc5cc8ba2ce31e0337bbb142baae1 v: v3 --- [refs] | 2 +- trunk/drivers/base/memory.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 42efba341316..b8d66f2c0d3b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1dc41aa6d6172d61c10638d11933a3595a41d51a +refs/heads/master: 6add7cd618b4d4dc525731beb539c5e06e891855 diff --git a/trunk/drivers/base/memory.c b/trunk/drivers/base/memory.c index 71b4a32b1710..3da6a43b7756 100644 --- a/trunk/drivers/base/memory.c +++ b/trunk/drivers/base/memory.c @@ -387,12 +387,19 @@ memory_probe_store(struct class *class, struct class_attribute *attr, { u64 phys_addr; int nid; - int ret; + int i, ret; phys_addr = simple_strtoull(buf, NULL, 0); - nid = memory_add_physaddr_to_nid(phys_addr); - ret = add_memory(nid, phys_addr, PAGES_PER_SECTION << PAGE_SHIFT); + 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) + break; + + phys_addr += MIN_MEMORY_BLOCK_SIZE; + } if (ret) count = ret;