aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2019-07-15 02:40:02 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2019-07-15 02:40:02 -0700
commit14b23cb158b14503944a8595ed09abdca0d2cfe6 (patch)
tree19a124c1fce7bbe631c254ae0975c8905855151e
parent66bebdca60f0e662f15ffd67724b27e871beeaed (diff)
parent8d567af92483ca0be4e4f6c0a2fb4613c2b61da4 (diff)
Merge "msm: ADSPRPC: Assign memory to MDSP during process start"LA.UM.7.6.2.c1-00600-89xx.0
-rw-r--r--drivers/char/adsprpc.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c
index 6ba5010fc7b0..a7fe093a63dc 100644
--- a/drivers/char/adsprpc.c
+++ b/drivers/char/adsprpc.c
@@ -2826,6 +2826,7 @@ static int fastrpc_session_alloc_locked(struct fastrpc_channel_ctx *chan,
{
struct fastrpc_apps *me = &gfa;
int idx = 0, err = 0;
+ int cid = 0;
if (chan->sesscount) {
for (idx = 0; idx < chan->sesscount; ++idx) {
@@ -2842,11 +2843,24 @@ static int fastrpc_session_alloc_locked(struct fastrpc_channel_ctx *chan,
goto bail;
chan->session[idx].smmu.faults = 0;
} else {
- VERIFY(err, me->mdev != NULL);
- if (err)
- goto bail;
- chan->session[0].dev = me->mdev;
- chan->session[0].smmu.dev = me->mdev;
+ cid = chan - &gcinfo[0];
+ if (cid == MDSP_DOMAIN_ID) {
+ VERIFY(err, me->mdev != NULL);
+ if (err) {
+ pr_info("ADSPRPC: mdsprpc-mem not initialized\n");
+ goto bail;
+ }
+ chan->session[0].dev = me->mdev;
+ chan->session[0].smmu.dev = me->mdev;
+ } else {
+ VERIFY(err, me->dev != NULL);
+ if (err) {
+ pr_info("ADSPRPC: adsprpc-mem not initialized\n");
+ goto bail;
+ }
+ chan->session[0].dev = me->dev;
+ chan->session[0].smmu.dev = me->dev;
+ }
}
*session = &chan->session[idx];
@@ -3572,7 +3586,7 @@ static int fastrpc_get_info(struct fastrpc_file *fl, uint32_t *info)
srcVM, 1, destVM, destVMperm, 3));
if (err)
goto bail;
- (fl->apps->channel[cid].memshareenabled)++;
+ fl->apps->channel[cid].memshareenabled = 2;
}
VERIFY(err, !fastrpc_session_alloc_locked(
&fl->apps->channel[cid], 0, fl->sharedcb, &fl->sctx));