Message ID | 20200304194729.27979-4-sibis@codeaurora.org (mailing list archive) |
---|---|
State | Accepted |
Commit | d96f2571dc84d128cacf1944f4ecc87834c779a6 |
Headers | show |
Series | remoteproc: mss: Improve mem_assign and firmware load | expand |
Hi [This is an automated email] This commit has been processed because it contains a "Fixes:" tag fixing commit: 6c5a9dc2481b ("remoteproc: qcom: Make secure world call for mem ownership switch"). The bot has tested the following trees: v5.5.7, v5.4.23, v4.19.107. v5.5.7: Build OK! v5.4.23: Build OK! v4.19.107: Failed to apply! Possible dependencies: 0304530ddd29 ("remoteproc: qcom: q6v5-mss: Refactor mba load/unload sequence") 7dd8ade24dc2 ("remoteproc: qcom: q6v5-mss: Add custom dump function for modem") e9ad659019a6 ("remoteproc: qcom_q6v5_mss: Don't reassign mpss region on shutdown") NOTE: The patch will not be queued to stable trees until it is upstream. How should we proceed with this patch?
Hi [This is an automated email] This commit has been processed because it contains a "Fixes:" tag fixing commit: 6c5a9dc2481b ("remoteproc: qcom: Make secure world call for mem ownership switch"). The bot has tested the following trees: v5.5.7, v5.4.23, v4.19.107. v5.5.7: Build OK! v5.4.23: Build OK! v4.19.107: Failed to apply! Possible dependencies: 0304530ddd29 ("remoteproc: qcom: q6v5-mss: Refactor mba load/unload sequence") 7dd8ade24dc2 ("remoteproc: qcom: q6v5-mss: Add custom dump function for modem") e9ad659019a6 ("remoteproc: qcom_q6v5_mss: Don't reassign mpss region on shutdown") NOTE: The patch will not be queued to stable trees until it is upstream. How should we proceed with this patch?
diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c index b8a922181de8a..d7667418a62f4 100644 --- a/drivers/remoteproc/qcom_q6v5_mss.c +++ b/drivers/remoteproc/qcom_q6v5_mss.c @@ -1042,6 +1042,23 @@ static void q6v5_mba_reclaim(struct q6v5 *qproc) } } +static int q6v5_reload_mba(struct rproc *rproc) +{ + struct q6v5 *qproc = rproc->priv; + const struct firmware *fw; + int ret; + + ret = request_firmware(&fw, rproc->firmware, qproc->dev); + if (ret < 0) + return ret; + + q6v5_load(rproc, fw); + ret = q6v5_mba_load(qproc); + release_firmware(fw); + + return ret; +} + static int q6v5_mpss_load(struct q6v5 *qproc) { const struct elf32_phdr *phdrs; @@ -1221,7 +1238,7 @@ static void qcom_q6v5_dump_segment(struct rproc *rproc, /* Unlock mba before copying segments */ if (!qproc->dump_mba_loaded) { - ret = q6v5_mba_load(qproc); + ret = q6v5_reload_mba(rproc); if (!ret) { /* Reset ownership back to Linux to copy segments */ ret = q6v5_xfer_mem_ownership(qproc, &qproc->mpss_perm,
On secure devices after a wdog/fatal interrupt, the mba region has to be refreshed in order to prevent the following errors during mba load. Err Logs: remoteproc remoteproc2: stopped remote processor 4080000.remoteproc qcom-q6v5-mss 4080000.remoteproc: PBL returned unexpected status -284031232 qcom-q6v5-mss 4080000.remoteproc: PBL returned unexpected status -284031232 .... qcom-q6v5-mss 4080000.remoteproc: PBL returned unexpected status -284031232 qcom-q6v5-mss 4080000.remoteproc: MBA booted, loading mpss Fixes: 7dd8ade24dc2a ("remoteproc: qcom: q6v5-mss: Add custom dump function for modem") Cc: stable@vger.kernel.org Signed-off-by: Sibi Sankar <sibis@codeaurora.org> --- drivers/remoteproc/qcom_q6v5_mss.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)