diff options
Diffstat (limited to 'drivers/base/memory.c')
| -rw-r--r-- | drivers/base/memory.c | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 71b4a32b171..3da6a43b775 100644 --- a/drivers/base/memory.c +++ b/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;  |