Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7f80530 authored by Seth Jennings's avatar Seth Jennings Committed by Greg Kroah-Hartman
Browse files

drivers: base: unshare add_memory_section() from hotplug



add_memory_section() is currently called from both boot time and run
time via hotplug and there is a lot of nastiness to allow for shared
code including an enum parameter to convey the calling context to
add_memory_section().

This patch is the first step in breaking up the messy code sharing by
pulling the hotplug path for add_memory_section() directly into
register_new_memory().

Signed-off-by: default avatarSeth Jennings <sjenning@linux.vnet.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent df2b717c
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -647,12 +647,25 @@ static int add_memory_section(int nid, struct mem_section *section,
 */
int register_new_memory(int nid, struct mem_section *section)
{
	int ret;
	int ret = 0;
	struct memory_block *mem;

	mutex_lock(&mem_sysfs_mutex);
	ret = add_memory_section(nid, section, NULL, MEM_OFFLINE, HOTPLUG);
	mutex_unlock(&mem_sysfs_mutex);

	mem = find_memory_block(section);
	if (mem) {
		mem->section_count++;
		put_device(&mem->dev);
	} else {
		ret = init_memory_block(&mem, section, MEM_OFFLINE);
		if (ret)
			goto out;
	}

	if (mem->section_count == sections_per_block)
		ret = register_mem_sect_under_node(mem, nid);
out:
	mutex_unlock(&mem_sysfs_mutex);
	return ret;
}