Commit 421c175c authored by Heiko Carstens's avatar Heiko Carstens

[S390] Add support for memory hot-add.

Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 0788fea4
...@@ -313,6 +313,10 @@ config ARCH_SPARSEMEM_DEFAULT ...@@ -313,6 +313,10 @@ config ARCH_SPARSEMEM_DEFAULT
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
source "mm/Kconfig" source "mm/Kconfig"
comment "I/O subsystem configuration" comment "I/O subsystem configuration"
......
...@@ -202,3 +202,22 @@ void free_initrd_mem(unsigned long start, unsigned long end) ...@@ -202,3 +202,22 @@ void free_initrd_mem(unsigned long start, unsigned long end)
} }
} }
#endif #endif
#ifdef CONFIG_MEMORY_HOTPLUG
int arch_add_memory(int nid, u64 start, u64 size)
{
struct pglist_data *pgdat;
struct zone *zone;
int rc;
pgdat = NODE_DATA(nid);
zone = pgdat->node_zones + ZONE_NORMAL;
rc = vmem_add_mapping(start, size);
if (rc)
return rc;
rc = __add_pages(zone, PFN_DOWN(start), PFN_DOWN(size));
if (rc)
vmem_remove_mapping(start, size);
return rc;
}
#endif /* CONFIG_MEMORY_HOTPLUG */
#ifndef _ASM_S390_SPARSEMEM_H #ifndef _ASM_S390_SPARSEMEM_H
#define _ASM_S390_SPARSEMEM_H #define _ASM_S390_SPARSEMEM_H
#define SECTION_SIZE_BITS 25
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
#define SECTION_SIZE_BITS 28
#define MAX_PHYSADDR_BITS 42 #define MAX_PHYSADDR_BITS 42
#define MAX_PHYSMEM_BITS 42 #define MAX_PHYSMEM_BITS 42
#else #else
#define SECTION_SIZE_BITS 25
#define MAX_PHYSADDR_BITS 31 #define MAX_PHYSADDR_BITS 31
#define MAX_PHYSMEM_BITS 31 #define MAX_PHYSMEM_BITS 31
......
...@@ -129,7 +129,7 @@ config MEMORY_HOTPLUG ...@@ -129,7 +129,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 && !HIBERNATION && ARCH_ENABLE_MEMORY_HOTPLUG depends on HOTPLUG && !HIBERNATION && ARCH_ENABLE_MEMORY_HOTPLUG
depends on (IA64 || X86 || PPC64 || SUPERH) depends on (IA64 || X86 || PPC64 || SUPERH || S390)
comment "Memory hotplug is currently incompatible with Software Suspend" comment "Memory hotplug is currently incompatible with Software Suspend"
depends on SPARSEMEM && HOTPLUG && HIBERNATION depends on SPARSEMEM && HOTPLUG && HIBERNATION
......
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