From f5fd674f1817afeaca58933a71ff106c59dafa9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= Date: Wed, 9 Sep 2026 18:23:16 +0200 Subject: [PATCH] lib: sbi_timer: add TSA annotations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Thread Safety Analysis (TSA) annotations for the timer implementation. This includes indicating which fields are protected by a spinlock, and annotating which functions must be called under a spinlock. Exclude sbi_timer_init(), as the spinlock cannot be acquired before it is initialized. Signed-off-by: Carlos López Reviewed-by: Anup Patel Link: https://lore.kernel.org/r/20260909162322.29778-9-carlos.lopezr4096@gmail.com Signed-off-by: Anup Patel --- lib/sbi/sbi_timer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/sbi/sbi_timer.c b/lib/sbi/sbi_timer.c index 8abb5e7b..78aaa32e 100644 --- a/lib/sbi/sbi_timer.c +++ b/lib/sbi/sbi_timer.c @@ -23,7 +23,7 @@ struct timer_state { u64 time_delta; spinlock_t event_list_lock; - struct sbi_dlist event_list; + struct sbi_dlist event_list GUARDED_BY(&event_list_lock); struct sbi_timer_event smode_ev; }; @@ -160,6 +160,7 @@ void sbi_timer_set_delta_upper(ulong delta_upper) #endif static void __sbi_timer_update_device(struct timer_state *tstate) + MUST_HOLD(&tstate->event_list_lock) { struct sbi_timer_event *ev; @@ -188,6 +189,7 @@ static void __sbi_timer_event_stop(struct sbi_timer_event *ev) static void __sbi_timer_event_start(struct timer_state *tstate, struct sbi_timer_event *ev, u64 next_event) + MUST_HOLD(&tstate->event_list_lock) { struct sbi_timer_event *tev, *next_ev = NULL; @@ -350,6 +352,7 @@ void sbi_timer_set_device(const struct sbi_timer_device *dev) } int sbi_timer_init(struct sbi_scratch *scratch, bool cold_boot) + NO_THREAD_SAFETY_ANALYSIS { const struct sbi_platform *plat = sbi_platform_ptr(scratch); struct timer_state *tstate;