aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Léger <cleger@rivosinc.com>2024-04-09 12:02:06 +0200
committerAnup Patel <anup@brainfault.org>2024-05-07 17:28:44 +0530
commitce3c82cb2e2d6e41912b97c4f99e8567fadf445e (patch)
tree7165773e71c2f2ea9fe8c825a984a53396c8b7ff
parentd528dbfd4ba674dabb0a7b4466112e64c6ada3c6 (diff)
downloadopensbi-ce3c82cb2e2d6e41912b97c4f99e8567fadf445e.zip
opensbi-ce3c82cb2e2d6e41912b97c4f99e8567fadf445e.tar.gz
opensbi-ce3c82cb2e2d6e41912b97c4f99e8567fadf445e.tar.bz2
lib: sbi: sse: call enable callback before sending IPI
Move the enable callback call before sending the IPI. Even though the event is locked and no race condition can happen, this is more logical. Signed-off-by: Clément Léger <cleger@rivosinc.com> Reported-by: Samuel Holland <samuel.holland@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org>
-rw-r--r--lib/sbi/sbi_sse.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/sbi/sbi_sse.c b/lib/sbi/sbi_sse.c
index 2c7f78d..fb327f0 100644
--- a/lib/sbi/sbi_sse.c
+++ b/lib/sbi/sbi_sse.c
@@ -686,12 +686,12 @@ static int sse_event_enable(struct sbi_sse_event *e)
sse_event_set_state(e, SBI_SSE_STATE_ENABLED);
sse_event_add_to_list(e);
- if (sse_event_pending(e))
+ sse_event_invoke_cb(e, enable_cb);
+
+ if (sse_event_is_global(e) && sse_event_pending(e))
sbi_ipi_send_many(1, e->attrs.hartid, sse_ipi_inject_event,
NULL);
- sse_event_invoke_cb(e, enable_cb);
-
return SBI_OK;
}