aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/memory.c')
-rw-r--r--drivers/base/memory.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index 6d7b14c2798e..619fe584a44c 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -450,8 +450,7 @@ memory_probe_store(struct device *dev, struct device_attribute *attr,
450 const char *buf, size_t count) 450 const char *buf, size_t count)
451{ 451{
452 u64 phys_addr; 452 u64 phys_addr;
453 int nid; 453 int nid, ret;
454 int i, ret;
455 unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block; 454 unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block;
456 455
457 ret = kstrtoull(buf, 0, &phys_addr); 456 ret = kstrtoull(buf, 0, &phys_addr);
@@ -461,15 +460,12 @@ memory_probe_store(struct device *dev, struct device_attribute *attr,
461 if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1)) 460 if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1))
462 return -EINVAL; 461 return -EINVAL;
463 462
464 for (i = 0; i < sections_per_block; i++) { 463 nid = memory_add_physaddr_to_nid(phys_addr);
465 nid = memory_add_physaddr_to_nid(phys_addr); 464 ret = add_memory(nid, phys_addr,
466 ret = add_memory(nid, phys_addr, 465 MIN_MEMORY_BLOCK_SIZE * sections_per_block);
467 PAGES_PER_SECTION << PAGE_SHIFT);
468 if (ret)
469 goto out;
470 466
471 phys_addr += MIN_MEMORY_BLOCK_SIZE; 467 if (ret)
472 } 468 goto out;
473 469
474 ret = count; 470 ret = count;
475out: 471out: