diff options
Diffstat (limited to 'drivers/base/memory.c')
| -rw-r--r-- | drivers/base/memory.c | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 2f869151119..933442f4032 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -22,6 +22,7 @@  #include <linux/mm.h>  #include <linux/mutex.h>  #include <linux/stat.h> +#include <linux/slab.h>  #include <asm/atomic.h>  #include <asm/uaccess.h> @@ -312,7 +313,7 @@ static ssize_t  print_block_size(struct sysdev_class *class, struct sysdev_class_attribute *attr,  		 char *buf)  { -	return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE); +	return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);  }  static SYSDEV_CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL); @@ -429,12 +430,16 @@ static inline int memory_fail_init(void)   * differentiation between which *physical* devices each   * section belongs to...   */ +int __weak arch_get_memory_phys_device(unsigned long start_pfn) +{ +	return 0; +}  static int add_memory_block(int nid, struct mem_section *section, -			unsigned long state, int phys_device, -			enum mem_add_context context) +			unsigned long state, enum mem_add_context context)  {  	struct memory_block *mem = kzalloc(sizeof(*mem), GFP_KERNEL); +	unsigned long start_pfn;  	int ret = 0;  	if (!mem) @@ -443,7 +448,8 @@ static int add_memory_block(int nid, struct mem_section *section,  	mem->phys_index = __section_nr(section);  	mem->state = state;  	mutex_init(&mem->state_mutex); -	mem->phys_device = phys_device; +	start_pfn = section_nr_to_pfn(mem->phys_index); +	mem->phys_device = arch_get_memory_phys_device(start_pfn);  	ret = register_memory(mem, section);  	if (!ret) @@ -515,7 +521,7 @@ int remove_memory_block(unsigned long node_id, struct mem_section *section,   */  int register_new_memory(int nid, struct mem_section *section)  { -	return add_memory_block(nid, section, MEM_OFFLINE, 0, HOTPLUG); +	return add_memory_block(nid, section, MEM_OFFLINE, HOTPLUG);  }  int unregister_memory_section(struct mem_section *section) @@ -548,7 +554,7 @@ int __init memory_dev_init(void)  		if (!present_section_nr(i))  			continue;  		err = add_memory_block(0, __nr_to_section(i), MEM_ONLINE, -					0, BOOT); +				       BOOT);  		if (!ret)  			ret = err;  	}  |