On Mon, Jan 27, 2025 at 10:12:39AM +0530, Ekansh Gupta wrote:
> DSP needs last 4 bits of context id to be 0 for polling mode to be
> supported as setting of last 8 is intended for async mode(not yet
> supported on upstream driver) and setting these bits restrics
> writing to poll memory from DSP. Modify context id mask to ensure
> polling mode is supported.

Shouldn't this commit come before the previous one?

> 
> Signed-off-by: Ekansh Gupta <quic_ekang...@quicinc.com>
> ---
>  drivers/misc/fastrpc.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
> index 257a741af115..ef56c793c564 100644
> --- a/drivers/misc/fastrpc.c
> +++ b/drivers/misc/fastrpc.c
> @@ -40,7 +40,7 @@
>  #define FASTRPC_INIT_HANDLE  1
>  #define FASTRPC_DSP_UTILITIES_HANDLE 2
>  #define FASTRPC_MAX_STATIC_HANDLE (20)
> -#define FASTRPC_CTXID_MASK (0xFF0)
> +#define FASTRPC_CTXID_MASK (0xFF0000)
>  #define INIT_FILELEN_MAX (2 * 1024 * 1024)
>  #define INIT_FILE_NAMELEN_MAX (128)
>  #define FASTRPC_DEVICE_NAME  "fastrpc"
> @@ -524,7 +524,7 @@ static void fastrpc_context_free(struct kref *ref)
>               fastrpc_buf_free(ctx->buf);
>  
>       spin_lock_irqsave(&cctx->lock, flags);
> -     idr_remove(&cctx->ctx_idr, ctx->ctxid >> 4);
> +     idr_remove(&cctx->ctx_idr, ctx->ctxid >> 16);
>       spin_unlock_irqrestore(&cctx->lock, flags);
>  
>       kfree(ctx->maps);
> @@ -664,7 +664,7 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc(
>               spin_unlock_irqrestore(&cctx->lock, flags);
>               goto err_idr;
>       }
> -     ctx->ctxid = ret << 4;
> +     ctx->ctxid = ret << 16;
>       spin_unlock_irqrestore(&cctx->lock, flags);
>  
>       kref_init(&ctx->refcount);
> @@ -2675,7 +2675,7 @@ static int fastrpc_rpmsg_callback(struct rpmsg_device 
> *rpdev, void *data,
>       if (len < sizeof(*rsp))
>               return -EINVAL;
>  
> -     ctxid = ((rsp->ctx & FASTRPC_CTXID_MASK) >> 4);
> +     ctxid = ((rsp->ctx & FASTRPC_CTXID_MASK) >> 16);
>  
>       spin_lock_irqsave(&cctx->lock, flags);
>       ctx = idr_find(&cctx->ctx_idr, ctxid);
> -- 
> 2.34.1
> 

-- 
With best wishes
Dmitry

Reply via email to