On 7/19/2024 3:36 PM, Dmitry Baryshkov wrote: > On Fri, Jul 19, 2024 at 02:27:08PM GMT, Ekansh Gupta wrote: >> For user PD initialization, initmem is allocated and sent to DSP for >> initial memory requirements like shell loading. This size is the shell >> size that is passed by user space and is checked against a max size. >> For unsigned PD offloading requirement, additional memory is required >> because of additional static heap initialization. Without this >> additional memory, PD initialization would fail. Increase the initmem >> size by 2MB for unsigned PD initmem buffer allocation. Any additional >> memory sent to DSP during PD init is used as the PD heap. >> >> Fixes: 7f1f481263c3 ("misc: fastrpc: check before loading process to the DSP") >> Cc: stable <stable@xxxxxxxxxx> >> Signed-off-by: Ekansh Gupta <quic_ekangupt@xxxxxxxxxxx> >> --- >> Changes in v2: >> - Modified commit text. >> - Removed size check instead of updating max file size. >> Changes in v3: >> - Added bound check again with a higher max size definition. >> - Modified commit text accordingly. >> Changes in v4: >> - Defined new initmem specific MACROs. >> - Adding extra memory for unsigned PD. >> - Added comment suggesting the reason for this change. >> - Modified commit text. >> >> drivers/misc/fastrpc.c | 10 +++++++++- >> 1 file changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c >> index a7a2bcedb37e..18668b020a87 100644 >> --- a/drivers/misc/fastrpc.c >> +++ b/drivers/misc/fastrpc.c >> @@ -39,6 +39,8 @@ >> #define FASTRPC_DSP_UTILITIES_HANDLE 2 >> #define FASTRPC_CTXID_MASK (0xFF0) >> #define INIT_FILELEN_MAX (2 * 1024 * 1024) >> +#define FASTRPC_INITLEN_MIN (3 * 1024 * 1024) >> +#define FASTRPC_STATIC_HEAP_LEN (2 * 1024 * 1024) >> #define INIT_FILE_NAMELEN_MAX (128) >> #define FASTRPC_DEVICE_NAME "fastrpc" >> >> @@ -1410,8 +1412,14 @@ static int fastrpc_init_create_process(struct fastrpc_user *fl, >> goto err; >> } >> >> - memlen = ALIGN(max(INIT_FILELEN_MAX, (int)init.filelen * 4), >> + /* Allocate buffer in kernel for donating to remote process. >> + * Unsigned PD requires additional memory because of the >> + * additional static heap initialized within the process. >> + */ >> + memlen = ALIGN(max(FASTRPC_INITLEN_MIN, (int)init.filelen * 4), >> 1024 * 1024); > Ok, here you have two changes in the same patch. First one changes > the allocated memory size for the signed usecase and another one adds > separate handling for the unsigned case. Please split them into two > separate commits. Sure, will be splitting the patches. Thanks. --Ekansh > >> + if (unsigned_module) >> + memlen += FASTRPC_STATIC_HEAP_LEN; >> err = fastrpc_buf_alloc(fl, fl->sctx->dev, memlen, >> &imem); >> if (err) >> -- >> 2.34.1 >>