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 <[email protected]>
Reviewed-by: Daniel Baluta <[email protected]>
Reviewed-by: Iuliana Prodan <[email protected]>
---
changes in v2:
- refine commit message.

 drivers/remoteproc/imx_dsp_rproc.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/remoteproc/imx_dsp_rproc.c 
b/drivers/remoteproc/imx_dsp_rproc.c
index d03017d6b214..ac8aa71aa56c 100644
--- a/drivers/remoteproc/imx_dsp_rproc.c
+++ b/drivers/remoteproc/imx_dsp_rproc.c
@@ -984,9 +984,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);
-- 
2.34.1


Reply via email to