s390/vmcp: make use of contiguous memory allocator
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 7 Aug 2017 13:16:15 +0000 (15:16 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 9 Aug 2017 13:09:35 +0000 (09:09 -0400)
commit3f4298427ad521fdc74fb991b17d84959513218a
treec4a9cff2e5ac1261c745b74dc3a70a644fd448bd
parentcd4386a931b6310b05559d2e28efda04d30ab593
s390/vmcp: make use of contiguous memory allocator

If memory is fragmented it is unlikely that large order memory
allocations succeed. This has been an issue with the vmcp device
driver since a long time, since it requires large physical contiguous
memory ares for large responses.

To hopefully resolve this issue make use of the contiguous memory
allocator (cma). This patch adds a vmcp specific vmcp cma area with a
default size of 4MB. The size can be changed either via the
VMCP_CMA_SIZE config option at compile time or with the "vmcp_cma"
kernel parameter (e.g. "vmcp_cma=16m").

For any vmcp response buffers larger than 16k memory from the cma area
will be allocated. If such an allocation fails, there is a fallback to
the buddy allocator.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Documentation/admin-guide/kernel-parameters.txt
arch/s390/include/asm/setup.h
arch/s390/kernel/setup.c
drivers/s390/char/Kconfig
drivers/s390/char/vmcp.c
drivers/s390/char/vmcp.h