From a25fc74699feb9409e44344dff742d525f315e5c Mon Sep 17 00:00:00 2001 From: Nick Hu Date: Fri, 1 Dec 2023 17:51:47 +0800 Subject: [PATCH] lib: sbi_hsm: Put the resume_pending hart in the interruptible hart mask Current interruptible hart mask doesn't include the hart which HSM state is SBI_HSM_STATE_RESUME_PENDING. So when there is a request to send an IPI to the hart which is in the resume process, this hart would miss the IPI forever. Put the SBI_HSM_STATE_RESUME_PENDING hart in the interruptible hart mask to fix the issue. Signed-off-by: Nick Hu Reviewed-by: Xiang W Reviewed-by: Anup Patel --- lib/sbi/sbi_hsm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/sbi/sbi_hsm.c b/lib/sbi/sbi_hsm.c index 147f954e..3d60ceb7 100644 --- a/lib/sbi/sbi_hsm.c +++ b/lib/sbi/sbi_hsm.c @@ -128,7 +128,8 @@ int sbi_hsm_hart_interruptible_mask(const struct sbi_domain *dom, hstate = __sbi_hsm_hart_get_state(hbase + i); if (hstate == SBI_HSM_STATE_STARTED || - hstate == SBI_HSM_STATE_SUSPENDED) + hstate == SBI_HSM_STATE_SUSPENDED || + hstate == SBI_HSM_STATE_RESUME_PENDING) *out_hmask |= hmask; }