soc: qcom: mdt_loader: Fix unconditional call to scm_pas_mem_setup
authorChristian Marangi <ansuelsmth@gmail.com>
Fri, 26 May 2023 11:55:11 +0000 (13:55 +0200)
committerBjorn Andersson <andersson@kernel.org>
Sat, 27 May 2023 01:14:56 +0000 (18:14 -0700)
commitbcb889891371c3cf767f2b9e8768cfe2fdd3810f
treeb1e16100dac9cdf3b0b592ff5d0be150d4f23174
parent2e43c85b0d96c6ae2ab60132313bb7a814bcfb44
soc: qcom: mdt_loader: Fix unconditional call to scm_pas_mem_setup

Commit ebeb20a9cd3f ("soc: qcom: mdt_loader: Always invoke PAS
mem_setup") dropped the relocate check and made pas_mem_setup run
unconditionally. The code was later moved with commit f4e526ff7e38
("soc: qcom: mdt_loader: Extract PAS operations") to
qcom_mdt_pas_init() effectively losing track of what was actually
done.

The assumption that PAS mem_setup can be done anytime was effectively
wrong, with no good reason and this caused regression on some SoC
that use remoteproc to bringup ath11k. One example is IPQ8074 SoC that
effectively broke resulting in remoteproc silently die and ath11k not
working.

On this SoC FW relocate is not enabled and PAS mem_setup was correctly
skipped in previous kernel version resulting in correct bringup and
function of remoteproc and ath11k.

To fix the regression, reintroduce the relocate check in
qcom_mdt_pas_init() and correctly skip PAS mem_setup where relocate is
not enabled.

Fixes: ebeb20a9cd3f ("soc: qcom: mdt_loader: Always invoke PAS mem_setup")
Tested-by: Robert Marko <robimarko@gmail.com>
Co-developed-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Cc: stable@vger.kernel.org
Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230526115511.3328-1-ansuelsmth@gmail.com
drivers/soc/qcom/mdt_loader.c