mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-09-20 15:21:42 +01:00
lib: sbi_sse: inline enable event locking
In preparation to add TSA annotations, inline sse_enabled_event_lock() and sse_enabled_event_unlock(). This will help the compiler reason about locking of the hart state by explicitly acquiring the spinlock in the callers. Signed-off-by: Carlos López <carlos.lopezr4096@gmail.com> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20260909162322.29778-12-carlos.lopezr4096@gmail.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
+8
-26
@@ -265,28 +265,6 @@ static struct sse_global_event *sse_get_global_event(struct sbi_sse_event *e)
|
|||||||
return container_of(e, struct sse_global_event, event);
|
return container_of(e, struct sse_global_event, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* If event is global, must be called under enabled event lock
|
|
||||||
*/
|
|
||||||
static void sse_enabled_event_lock(struct sbi_sse_event *e)
|
|
||||||
{
|
|
||||||
struct sse_hart_state *shs;
|
|
||||||
|
|
||||||
shs = sse_get_hart_state(e);
|
|
||||||
spin_lock(&shs->enabled_event_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If event is global, must be called under enabled event lock
|
|
||||||
*/
|
|
||||||
static void sse_enabled_event_unlock(struct sbi_sse_event *e)
|
|
||||||
{
|
|
||||||
struct sse_hart_state *shs;
|
|
||||||
|
|
||||||
shs = sse_get_hart_state(e);
|
|
||||||
spin_unlock(&shs->enabled_event_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sse_event_set_state(struct sbi_sse_event *e,
|
static void sse_event_set_state(struct sbi_sse_event *e,
|
||||||
unsigned long new_state)
|
unsigned long new_state)
|
||||||
{
|
{
|
||||||
@@ -865,14 +843,16 @@ int sbi_sse_enable(uint32_t event_id)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct sbi_sse_event *e;
|
struct sbi_sse_event *e;
|
||||||
|
struct sse_hart_state *shs;
|
||||||
|
|
||||||
ret = sse_event_get(event_id, &e);
|
ret = sse_event_get(event_id, &e);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
sse_enabled_event_lock(e);
|
shs = sse_get_hart_state(e);
|
||||||
|
spin_lock(&shs->enabled_event_lock);
|
||||||
ret = sse_event_enable(e);
|
ret = sse_event_enable(e);
|
||||||
sse_enabled_event_unlock(e);
|
spin_unlock(&shs->enabled_event_lock);
|
||||||
sse_event_put(e);
|
sse_event_put(e);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -882,14 +862,16 @@ int sbi_sse_disable(uint32_t event_id)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct sbi_sse_event *e;
|
struct sbi_sse_event *e;
|
||||||
|
struct sse_hart_state *shs;
|
||||||
|
|
||||||
ret = sse_event_get(event_id, &e);
|
ret = sse_event_get(event_id, &e);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
sse_enabled_event_lock(e);
|
shs = sse_get_hart_state(e);
|
||||||
|
spin_lock(&shs->enabled_event_lock);
|
||||||
ret = sse_event_disable(e);
|
ret = sse_event_disable(e);
|
||||||
sse_enabled_event_unlock(e);
|
spin_unlock(&shs->enabled_event_lock);
|
||||||
|
|
||||||
sse_event_put(e);
|
sse_event_put(e);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user