aboutsummaryrefslogtreecommitdiffci
path: root/patches/remoteproc/0010-remoteproc-qcom_q6v5-Send-SMP2P-stop-signal-in-attac.patch
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'patches/remoteproc/0010-remoteproc-qcom_q6v5-Send-SMP2P-stop-signal-in-attac.patch')
-rw-r--r--patches/remoteproc/0010-remoteproc-qcom_q6v5-Send-SMP2P-stop-signal-in-attac.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/patches/remoteproc/0010-remoteproc-qcom_q6v5-Send-SMP2P-stop-signal-in-attac.patch b/patches/remoteproc/0010-remoteproc-qcom_q6v5-Send-SMP2P-stop-signal-in-attac.patch
new file mode 100644
index 0000000..4f04538
--- /dev/null
+++ b/patches/remoteproc/0010-remoteproc-qcom_q6v5-Send-SMP2P-stop-signal-in-attac.patch
@@ -0,0 +1,31 @@
+If we stop the q6v5 remoteproc while it is in RPROC_ATTACHED or
+RPROC_DETACHED state, we still want to send the stop signal to shut it down
+cleanly.
+
+The main goal of the check in qcom_q6v5_request_stop() is to avoid sending
+duplicate shutdown/stop signals during crash or shutdown via sysmon, so
+check for RPROC_CRASHED to handle all of RPROC_RUNNING, RPROC_ATTACHED and
+RPROC_DETACHED. It does not make sense to call the function while in
+RPROC_OFFLINE state.
+
+Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
+Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
+---
+ drivers/remoteproc/qcom_q6v5.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c
+index 94c75d9cc..ed1b578a8 100644
+--- a/drivers/remoteproc/qcom_q6v5.c
++++ b/drivers/remoteproc/qcom_q6v5.c
+@@ -231,8 +231,8 @@ int qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5, struct qcom_sysmon *sysmon)
+
+ q6v5->running = false;
+
+- /* A watchdog/fatal IRQ clears running; logical crashes still need a stop. */
+- if (!was_running || qcom_sysmon_shutdown_acked(sysmon))
++ /* A watchdog/fatal IRQ clears running; logical crashes still need a stop. */
++ if (q6v5->rproc->state == RPROC_CRASHED || qcom_sysmon_shutdown_acked(sysmon))
+ return 0;
+
+ qcom_smem_state_update_bits(q6v5->state,