diff mbox series

remoteproc: stm32: Improve crash recovery time

Message ID 20211221143129.18415-1-arnaud.pouliquen@foss.st.com (mailing list archive)
State Accepted
Headers show
Series remoteproc: stm32: Improve crash recovery time | expand

Commit Message

Arnaud POULIQUEN Dec. 21, 2021, 2:31 p.m. UTC
When a stop is requested on a crash, it is useless to try to shutdown it
gracefully, it is crashed.

In this case don't send the STM32_MBX_SHUTDOWN mailbox message that
will block the recovery during 500 ms, waiting an answer from the
coprocessor.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
---
 drivers/remoteproc/stm32_rproc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mathieu Poirier Jan. 3, 2022, 6:52 p.m. UTC | #1
On Tue, Dec 21, 2021 at 03:31:29PM +0100, Arnaud Pouliquen wrote:
> When a stop is requested on a crash, it is useless to try to shutdown it
> gracefully, it is crashed.
>

Right

> In this case don't send the STM32_MBX_SHUTDOWN mailbox message that
> will block the recovery during 500 ms, waiting an answer from the
> coprocessor.
> 
> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
> ---
>  drivers/remoteproc/stm32_rproc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
> index b643efcf995a..7d782ed9e589 100644
> --- a/drivers/remoteproc/stm32_rproc.c
> +++ b/drivers/remoteproc/stm32_rproc.c
> @@ -494,7 +494,7 @@ static int stm32_rproc_stop(struct rproc *rproc)
>  	int err, idx;
>  
>  	/* request shutdown of the remote processor */
> -	if (rproc->state != RPROC_OFFLINE) {
> +	if (rproc->state != RPROC_OFFLINE && rproc->state != RPROC_CRASHED) {
>  		idx = stm32_rproc_mbox_idx(rproc, STM32_MBX_SHUTDOWN);
>  		if (idx >= 0 && ddata->mb[idx].chan) {
>  			err = mbox_send_message(ddata->mb[idx].chan, "detach");

I have applied this patch.

Thanks,
Mathieu

> -- 
> 2.17.1
>
diff mbox series

Patch

diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
index b643efcf995a..7d782ed9e589 100644
--- a/drivers/remoteproc/stm32_rproc.c
+++ b/drivers/remoteproc/stm32_rproc.c
@@ -494,7 +494,7 @@  static int stm32_rproc_stop(struct rproc *rproc)
 	int err, idx;
 
 	/* request shutdown of the remote processor */
-	if (rproc->state != RPROC_OFFLINE) {
+	if (rproc->state != RPROC_OFFLINE && rproc->state != RPROC_CRASHED) {
 		idx = stm32_rproc_mbox_idx(rproc, STM32_MBX_SHUTDOWN);
 		if (idx >= 0 && ddata->mb[idx].chan) {
 			err = mbox_send_message(ddata->mb[idx].chan, "detach");