From 1be85e552da8719a3b3f14388ce5715281a8fbc7 Mon Sep 17 00:00:00 2001 From: Himateja Reddy Date: Mon, 12 Oct 2020 18:55:07 -0700 Subject: [PATCH] msm: adsprpc: Donate 5MB of DMA memory for Unsigned process Current code has 4MB of memory being donated to the User process in DSP for both Signed and Unsigned process. Unsigned process has extra static heap which requires more memory. Donate 5MB of DMA memory for creating Unsigned process. Change-Id: Ib1f75580d9ec61d416a0c268880395e1f3ab10fb Signed-off-by: Himateja Reddy --- drivers/char/adsprpc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c index 6413118edcb3..a162617d882e 100644 --- a/drivers/char/adsprpc.c +++ b/drivers/char/adsprpc.c @@ -3360,6 +3360,7 @@ static int fastrpc_init_create_dynamic_process(struct fastrpc_file *fl, remote_arg_t ra[6]; int fds[6]; unsigned int gid = 0, one_mb = 1024*1024; + unsigned int dsp_userpd_memlen = 3 * one_mb; struct fastrpc_buf *init_mem; struct { @@ -3443,8 +3444,13 @@ static int fastrpc_init_create_dynamic_process(struct fastrpc_file *fl, locked = 0; } - /* Allocate DMA buffer in kernel for donating to remote process */ - memlen = ALIGN(max(3*one_mb, init->filelen * 4), one_mb); + /* Allocate DMA buffer in kernel for donating to remote process + * Unsigned PD requires additional memory because of the + * additional static heap initialized within the process. + */ + if (uproc->attrs & FASTRPC_MODE_UNSIGNED_MODULE) + dsp_userpd_memlen += 2*one_mb; + memlen = ALIGN(max(dsp_userpd_memlen, init->filelen * 4), one_mb); imem_dma_attr = DMA_ATTR_EXEC_MAPPING | DMA_ATTR_DELAYED_UNMAP | DMA_ATTR_NO_KERNEL_MAPPING;