diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2017-08-07 15:16:15 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2017-08-09 15:09:35 +0200 |
commit | 3f4298427ad521fdc74fb991b17d84959513218a (patch) | |
tree | c4a9cff2e5ac1261c745b74dc3a70a644fd448bd /drivers/s390/char/vmcp.h | |
parent | s390/cpcmd,vmcp: avoid GFP_DMA allocations (diff) | |
download | linux-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.h | 3 |
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 * |