summaryrefslogtreecommitdiffstats
path: root/drivers/s390/char/vmcp.h
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2017-08-07 15:16:15 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2017-08-09 15:09:35 +0200
commit3f4298427ad521fdc74fb991b17d84959513218a (patch)
treec4a9cff2e5ac1261c745b74dc3a70a644fd448bd /drivers/s390/char/vmcp.h
parents390/cpcmd,vmcp: avoid GFP_DMA allocations (diff)
downloadlinux-3f4298427ad521fdc74fb991b17d84959513218a.tar.xz
linux-3f4298427ad521fdc74fb991b17d84959513218a.zip
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>
Diffstat (limited to 'drivers/s390/char/vmcp.h')
-rw-r--r--drivers/s390/char/vmcp.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/char/vmcp.h b/drivers/s390/char/vmcp.h
index 1e29b0418382..4e725edf449f 100644
--- a/drivers/s390/char/vmcp.h
+++ b/drivers/s390/char/vmcp.h
@@ -20,8 +20,9 @@
#define VMCP_GETSIZE _IOR(0x10, 3, int)
struct vmcp_session {
- unsigned int bufsize;
char *response;
+ unsigned int bufsize;
+ unsigned int cma_alloc : 1;
int resp_size;
int resp_code;
/* As we use copy_from/to_user, which might *