misc: fastrpc: Add fastrpc_remote_heap_alloc
Split fastrpc_buf_alloc in such a way it allows allocation of remote heap too and add fastrpc_remote_heap_alloc to do so. Co-developed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Abel Vesa <abel.vesa@linaro.org> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20221125071405.148786-5-srinivas.kandagatla@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1ce91d45ba
commit
6f18c7e845
@ -369,7 +369,7 @@ static void fastrpc_buf_free(struct fastrpc_buf *buf)
|
||||
kfree(buf);
|
||||
}
|
||||
|
||||
static int fastrpc_buf_alloc(struct fastrpc_user *fl, struct device *dev,
|
||||
static int __fastrpc_buf_alloc(struct fastrpc_user *fl, struct device *dev,
|
||||
u64 size, struct fastrpc_buf **obuf)
|
||||
{
|
||||
struct fastrpc_buf *buf;
|
||||
@ -397,14 +397,37 @@ static int fastrpc_buf_alloc(struct fastrpc_user *fl, struct device *dev,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (fl->sctx && fl->sctx->sid)
|
||||
buf->phys += ((u64)fl->sctx->sid << 32);
|
||||
|
||||
*obuf = buf;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fastrpc_buf_alloc(struct fastrpc_user *fl, struct device *dev,
|
||||
u64 size, struct fastrpc_buf **obuf)
|
||||
{
|
||||
int ret;
|
||||
struct fastrpc_buf *buf;
|
||||
|
||||
ret = __fastrpc_buf_alloc(fl, dev, size, obuf);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
buf = *obuf;
|
||||
|
||||
if (fl->sctx && fl->sctx->sid)
|
||||
buf->phys += ((u64)fl->sctx->sid << 32);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fastrpc_remote_heap_alloc(struct fastrpc_user *fl, struct device *dev,
|
||||
u64 size, struct fastrpc_buf **obuf)
|
||||
{
|
||||
struct device *rdev = &fl->cctx->rpdev->dev;
|
||||
|
||||
return __fastrpc_buf_alloc(fl, rdev, size, obuf);
|
||||
}
|
||||
|
||||
static void fastrpc_channel_ctx_free(struct kref *ref)
|
||||
{
|
||||
struct fastrpc_channel_ctx *cctx;
|
||||
|
Loading…
Reference in New Issue
Block a user