Commit e5d709bb authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

s390/memory hotplug: provide memory_block_size_bytes() function

Commit 0c2c99b1 "memory hotplug: Allow memory blocks to span
multiple memory sections" introduced a weak memory_block_size_bytes()
function which can be used to set the size of a memory block as
seen in sysfs.
Provide an s390 specific override which makes sure that each
memory block has at least a size of 256MB or the increment size of
of a memory increment, whatever is larger.
This way we can make sure that the number of memory sysfs objects
doesn't explode for very large memory configurations.
Reported-by: default avatarGerald 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 df1bd59c
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/memory.h>
#include <linux/pfn.h> #include <linux/pfn.h>
#include <linux/poison.h> #include <linux/poison.h>
#include <linux/initrd.h> #include <linux/initrd.h>
...@@ -36,6 +37,7 @@ ...@@ -36,6 +37,7 @@
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/ctl_reg.h> #include <asm/ctl_reg.h>
#include <asm/sclp.h>
pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE))); pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE)));
...@@ -214,6 +216,15 @@ int arch_add_memory(int nid, u64 start, u64 size) ...@@ -214,6 +216,15 @@ int arch_add_memory(int nid, u64 start, u64 size)
return rc; return rc;
} }
unsigned long memory_block_size_bytes(void)
{
/*
* Make sure the memory block size is always greater
* or equal than the memory increment size.
*/
return max_t(unsigned long, MIN_MEMORY_BLOCK_SIZE, sclp_get_rzm());
}
#ifdef CONFIG_MEMORY_HOTREMOVE #ifdef CONFIG_MEMORY_HOTREMOVE
int arch_remove_memory(u64 start, u64 size) int arch_remove_memory(u64 start, u64 size)
{ {
......
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