mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-07 17:48:02 +07:00
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: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
05a117847b
commit
33d63bd83b
@ -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)
|
|||||||
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
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user