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

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
...@@ -331,6 +331,14 @@ config ARCH_POPULATES_NODE_MAP ...@@ -331,6 +331,14 @@ config ARCH_POPULATES_NODE_MAP
config ARCH_SELECT_MEMORY_MODEL config ARCH_SELECT_MEMORY_MODEL
def_bool y 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 choice
prompt "Kernel page size" prompt "Kernel page size"
default PAGE_SIZE_4KB default PAGE_SIZE_4KB
......
...@@ -265,3 +265,45 @@ void free_initrd_mem(unsigned long start, unsigned long end) ...@@ -265,3 +265,45 @@ void free_initrd_mem(unsigned long start, unsigned long end)
printk("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); printk("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
} }
#endif #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
...@@ -117,7 +117,7 @@ config MEMORY_HOTPLUG ...@@ -117,7 +117,7 @@ config MEMORY_HOTPLUG
bool "Allow for memory hot-add" bool "Allow for memory hot-add"
depends on SPARSEMEM || X86_64_ACPI_NUMA depends on SPARSEMEM || X86_64_ACPI_NUMA
depends on HOTPLUG && !SOFTWARE_SUSPEND && ARCH_ENABLE_MEMORY_HOTPLUG 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" comment "Memory hotplug is currently incompatible with Software Suspend"
depends on SPARSEMEM && HOTPLUG && SOFTWARE_SUSPEND depends on SPARSEMEM && HOTPLUG && SOFTWARE_SUSPEND
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment