remoteproc: qcom: Introduce panic handler for PAS and ADSP
authorBjorn Andersson <bjorn.andersson@linaro.org>
Tue, 24 Mar 2020 05:29:04 +0000 (22:29 -0700)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 26 Mar 2020 05:29:45 +0000 (22:29 -0700)
Make the PAS and ADSP/CDSP remoteproc drivers implement the panic
handler that will invoke a stop to prepare the remoteprocs for post
mortem debugging.

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20200324052904.738594-5-bjorn.andersson@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/remoteproc/qcom_q6v5_adsp.c
drivers/remoteproc/qcom_q6v5_pas.c

index 2b01f228206249cf5cd3199d71e95d6f85a27901..24a3db961d5ea67bd4c7ef1399b936d7df8e8f0a 100644 (file)
@@ -282,12 +282,20 @@ static void *adsp_da_to_va(struct rproc *rproc, u64 da, size_t len)
        return adsp->mem_region + offset;
 }
 
+static unsigned long adsp_panic(struct rproc *rproc)
+{
+       struct qcom_adsp *adsp = rproc->priv;
+
+       return qcom_q6v5_panic(&adsp->q6v5);
+}
+
 static const struct rproc_ops adsp_ops = {
        .start = adsp_start,
        .stop = adsp_stop,
        .da_to_va = adsp_da_to_va,
        .parse_fw = qcom_register_dump_segments,
        .load = adsp_load,
+       .panic = adsp_panic,
 };
 
 static int adsp_init_clock(struct qcom_adsp *adsp, const char **clk_ids)
index a41860d2243a4a3d28e58cf8f9fc58a8a144157c..7a63efb854052968c0267d88a2e9fcd4ab03703d 100644 (file)
@@ -234,12 +234,20 @@ static void *adsp_da_to_va(struct rproc *rproc, u64 da, size_t len)
        return adsp->mem_region + offset;
 }
 
+static unsigned long adsp_panic(struct rproc *rproc)
+{
+       struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
+
+       return qcom_q6v5_panic(&adsp->q6v5);
+}
+
 static const struct rproc_ops adsp_ops = {
        .start = adsp_start,
        .stop = adsp_stop,
        .da_to_va = adsp_da_to_va,
        .parse_fw = qcom_register_dump_segments,
        .load = adsp_load,
+       .panic = adsp_panic,
 };
 
 static int adsp_init_clock(struct qcom_adsp *adsp)