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

Commit 33d63bd8 authored by Paul Mundt's avatar Paul Mundt Committed by Paul Mundt
Browse files

sh: memory hot-add for sparsemem users support.



This enables simple hotplug support for sparsemem users. Presently
this only permits memory being added in to node 0 on ZONE_NORMAL.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 05a11784
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -331,6 +331,14 @@ config ARCH_POPULATES_NODE_MAP
config ARCH_SELECT_MEMORY_MODEL
	def_bool y

config ARCH_ENABLE_MEMORY_HOTPLUG
	def_bool y
	depends on SPARSEMEM

config ARCH_MEMORY_PROBE
	def_bool y
	depends on MEMORY_HOTPLUG

choice
	prompt "Kernel page size"
	default PAGE_SIZE_4KB
+42 −0
Original line number Diff line number Diff line
@@ -265,3 +265,45 @@ void free_initrd_mem(unsigned long start, unsigned long end)
	printk("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
}
#endif

#ifdef CONFIG_MEMORY_HOTPLUG
void online_page(struct page *page)
{
	ClearPageReserved(page);
	init_page_count(page);
	__free_page(page);
	totalram_pages++;
	num_physpages++;
}

int arch_add_memory(int nid, u64 start, u64 size)
{
	pg_data_t *pgdat;
	unsigned long start_pfn = start >> PAGE_SHIFT;
	unsigned long nr_pages = size >> PAGE_SHIFT;
	int ret;

	pgdat = NODE_DATA(nid);

	/* We only have ZONE_NORMAL, so this is easy.. */
	ret = __add_pages(pgdat->node_zones + ZONE_NORMAL, start_pfn, nr_pages);
	if (unlikely(ret))
		printk("%s: Failed, __add_pages() == %d\n", __FUNCTION__, ret);

	return ret;
}
EXPORT_SYMBOL_GPL(arch_add_memory);

int remove_memory(u64 start, u64 size)
{
	return -EINVAL;
}
EXPORT_SYMBOL_GPL(remove_memory);

int memory_add_physaddr_to_nid(u64 addr)
{
	/* Node 0 for now.. */
	return 0;
}
EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
#endif
+1 −1
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@ config MEMORY_HOTPLUG
	bool "Allow for memory hot-add"
	depends on SPARSEMEM || X86_64_ACPI_NUMA
	depends on HOTPLUG && !SOFTWARE_SUSPEND && ARCH_ENABLE_MEMORY_HOTPLUG
	depends on (IA64 || X86 || PPC64)
	depends on (IA64 || X86 || PPC64 || SUPERH)

comment "Memory hotplug is currently incompatible with Software Suspend"
	depends on SPARSEMEM && HOTPLUG && SOFTWARE_SUSPEND