lib: sbi_hsm: Restor hart state to stop when fails to start
authorJoshua Yeong <joshua.yeong@starfivetech.com>
Mon, 19 Feb 2024 07:14:06 +0000 (15:14 +0800)
committerAnup Patel <anup@brainfault.org>
Sat, 24 Feb 2024 12:48:34 +0000 (18:18 +0530)
Hart state should change back to hart stop when hsm_device_hart_start()
or sbi_ipi_raw_send() fails to perform hart start.

Signed-off-by: Joshua Yeong <joshua.yeong@starfivetech.com>
Reviewed-by: Xiang W <wxjstz@126.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
lib/sbi/sbi_hsm.c

index 3d60ceb749ab014ce28f3551c6fb17feb72bab2f..be48d64eb78eebe8d87159c3b04289f4a20088b8 100644 (file)
@@ -360,6 +360,10 @@ int sbi_hsm_hart_start(struct sbi_scratch *scratch,
 
        if (!rc)
                return 0;
+
+       /* If it fails to start, change hart state back to stop */
+       __sbi_hsm_hart_change_state(hdata, SBI_HSM_STATE_START_PENDING,
+                                   SBI_HSM_STATE_STOPPED);
 err:
        hsm_start_ticket_release(hdata);
        return rc;