]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
remoteproc: imx_dsp_rproc: Only reset carveout memory at RPROC_OFFLINE state
authorShengjiu Wang <shengjiu.wang@nxp.com>
Thu, 18 Dec 2025 07:17:50 +0000 (15:17 +0800)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 5 Jan 2026 21:09:31 +0000 (14:09 -0700)
Do not reset memory at suspend and resume stage, because some
memory is used to save the software state for resume, if it is cleared,
the resume operation can fail.

Fixes: c4c432dfb00f ("remoteproc: imx_dsp_rproc: Add support of recovery and coredump process")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Reviewed-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Link: https://lore.kernel.org/r/20251218071750.2692132-1-shengjiu.wang@nxp.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/imx_dsp_rproc.c

index 8426d7af9c75f5618e6317e74b82e25ecc161820..008741af9f11c5a6d3117aecc48663b9b38b263d 100644 (file)
@@ -1000,9 +1000,11 @@ static int imx_dsp_rproc_load(struct rproc *rproc, const struct firmware *fw)
         * Clear buffers after pm rumtime for internal ocram is not
         * accessible if power and clock are not enabled.
         */
-       list_for_each_entry(carveout, &rproc->carveouts, node) {
-               if (carveout->va)
-                       memset(carveout->va, 0, carveout->len);
+       if (rproc->state == RPROC_OFFLINE) {
+               list_for_each_entry(carveout, &rproc->carveouts, node) {
+                       if (carveout->va)
+                               memset(carveout->va, 0, carveout->len);
+               }
        }
 
        ret = imx_dsp_rproc_elf_load_segments(rproc, fw);