|
@@ -450,8 +450,7 @@ memory_probe_store(struct device *dev, struct device_attribute *attr,
|
|
|
const char *buf, size_t count)
|
|
|
{
|
|
|
u64 phys_addr;
|
|
|
- int nid;
|
|
|
- int i, ret;
|
|
|
+ int nid, ret;
|
|
|
unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block;
|
|
|
|
|
|
ret = kstrtoull(buf, 0, &phys_addr);
|
|
@@ -461,15 +460,12 @@ memory_probe_store(struct device *dev, struct device_attribute *attr,
|
|
|
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;
|
|
|
+ nid = memory_add_physaddr_to_nid(phys_addr);
|
|
|
+ ret = add_memory(nid, phys_addr,
|
|
|
+ MIN_MEMORY_BLOCK_SIZE * sections_per_block);
|
|
|
|
|
|
- phys_addr += MIN_MEMORY_BLOCK_SIZE;
|
|
|
- }
|
|
|
+ if (ret)
|
|
|
+ goto out;
|
|
|
|
|
|
ret = count;
|
|
|
out:
|