diff options
| author | Stephan Gerhold <stephan.gerhold@linaro.org> | 2025-08-20 18:02:34 +0200 |
|---|---|---|
| committer | Bjorn Andersson <andersson@kernel.org> | 2025-09-22 08:33:06 -0500 |
| commit | 54898664e1eb6b5b3e6cdd9343c6eb15da776153 (patch) | |
| tree | 91f7a4522f2fc54fa9232393901492defed01ffc | |
| parent | 110be46f5afe27b66caa2d12473a84cd397b1925 (diff) | |
remoteproc: qcom: q6v5: Avoid handling handover twice
A remoteproc could theoretically signal handover twice. This is unexpected
and would break the reference counting for the handover resources (power
domains, clocks, regulators, etc), so add a check to prevent that from
happening.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Link: https://lore.kernel.org/r/20250820-rproc-qcom-q6v5-fixes-v2-2-910b1a3aff71@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
| -rw-r--r-- | drivers/remoteproc/qcom_q6v5.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c index 769c6d6d6a73..58d5b85e58cd 100644 --- a/drivers/remoteproc/qcom_q6v5.c +++ b/drivers/remoteproc/qcom_q6v5.c @@ -164,6 +164,11 @@ static irqreturn_t q6v5_handover_interrupt(int irq, void *data) { struct qcom_q6v5 *q6v5 = data; + if (q6v5->handover_issued) { + dev_err(q6v5->dev, "Handover signaled, but it already happened\n"); + return IRQ_HANDLED; + } + if (q6v5->handover) q6v5->handover(q6v5); |
