summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRahul Pathak <rahul.pathak@oss.qualcomm.com>2026-08-20 17:43:09 +0530
committerAnup Patel <anup@brainfault.org>2026-09-05 12:53:15 +0530
commit3593a5facc4c6938b90429a6973ba9ee21fc5899 (patch)
treef933b0b6148c2a1e4467435aa2f1eae6af619e8e /lib
parent35af7c8c7ee00869afc6e9e0aca64086888bd03f (diff)
downloadopensbi-master.tar.gz
opensbi-master.zip
lib: sbi_domain: Rename per-domain data to per-domain stateHEADmaster
The per-domain sbi_domain_data hold each domain associated state like hart context in sbi_domain_context, mpxy state in sbi_mpxy, and others like each domain backed by the corresponding MPT (SMMPT). DATA reads as a generic name, while every use stores state. Rename functions and macros appropriately. There are no functional changes. Signed-off-by: Rahul Pathak <rahul.pathak@oss.qualcomm.com> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20260820121309.2551296-3-rahul.pathak@oss.qualcomm.com Signed-off-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbi/objects.mk2
-rw-r--r--lib/sbi/sbi_domain.c6
-rw-r--r--lib/sbi/sbi_domain_context.c14
-rw-r--r--lib/sbi/sbi_domain_data.c138
-rw-r--r--lib/sbi/sbi_domain_state.c138
-rw-r--r--lib/sbi/sbi_mpxy.c32
6 files changed, 165 insertions, 165 deletions
diff --git a/lib/sbi/objects.mk b/lib/sbi/objects.mk
index c29c888f..ae27d0c5 100644
--- a/lib/sbi/objects.mk
+++ b/lib/sbi/objects.mk
@@ -68,7 +68,7 @@ libsbi-objs-y += sbi_bitmap.o
libsbi-objs-y += sbi_bitops.o
libsbi-objs-y += sbi_console.o
libsbi-objs-y += sbi_domain_context.o
-libsbi-objs-y += sbi_domain_data.o
+libsbi-objs-y += sbi_domain_state.o
libsbi-objs-y += sbi_domain.o
libsbi-objs-y += sbi_double_trap.o
libsbi-objs-y += sbi_emulate_csr.o
diff --git a/lib/sbi/sbi_domain.c b/lib/sbi/sbi_domain.c
index fa69170b..79d61c54 100644
--- a/lib/sbi/sbi_domain.c
+++ b/lib/sbi/sbi_domain.c
@@ -687,10 +687,10 @@ int sbi_domain_register(struct sbi_domain *dom,
}
}
- /* Setup data for the discovered domain */
- rc = sbi_domain_setup_data(dom);
+ /* Setup state for the discovered domain */
+ rc = sbi_domain_setup_state(dom);
if (rc) {
- sbi_printf("%s: domain data setup failed for %s (error %d)\n",
+ sbi_printf("%s: domain state setup failed for %s (error %d)\n",
__func__, dom->name, rc);
sbi_list_del(&dom->node);
return rc;
diff --git a/lib/sbi/sbi_domain_context.c b/lib/sbi/sbi_domain_context.c
index 0861d541..37cbe175 100644
--- a/lib/sbi/sbi_domain_context.c
+++ b/lib/sbi/sbi_domain_context.c
@@ -64,14 +64,14 @@ struct hart_context {
bool initialized;
};
-static struct sbi_domain_data dcpriv;
+static struct sbi_domain_state dcstate;
static inline struct hart_context *hart_context_get(struct sbi_domain *dom,
u32 hartindex)
{
struct hart_context **dom_hartindex_to_context_table;
- dom_hartindex_to_context_table = sbi_domain_data_ptr(dom, &dcpriv);
+ dom_hartindex_to_context_table = sbi_domain_state_ptr(dom, &dcstate);
if (!dom_hartindex_to_context_table || !sbi_hartindex_valid(hartindex))
return NULL;
@@ -83,7 +83,7 @@ static void hart_context_set(struct sbi_domain *dom, u32 hartindex,
{
struct hart_context **dom_hartindex_to_context_table;
- dom_hartindex_to_context_table = sbi_domain_data_ptr(dom, &dcpriv);
+ dom_hartindex_to_context_table = sbi_domain_state_ptr(dom, &dcstate);
if (!dom_hartindex_to_context_table || !sbi_hartindex_valid(hartindex))
return;
@@ -314,15 +314,15 @@ int sbi_domain_context_init(void)
/**
* Allocate per-domain and per-hart context data.
* The data type is "struct hart_context **" whose memory space will be
- * dynamically allocated by domain_setup_data_one(). Calculate needed
+ * dynamically allocated by domain_setup_state_one(). Calculate needed
* size of memory space here.
*/
- dcpriv.data_size = sizeof(struct hart_context *) * sbi_hart_count();
+ dcstate.state_size = sizeof(struct hart_context *) * sbi_hart_count();
- return sbi_domain_register_data(&dcpriv);
+ return sbi_domain_register_state(&dcstate);
}
void sbi_domain_context_deinit(void)
{
- sbi_domain_unregister_data(&dcpriv);
+ sbi_domain_unregister_state(&dcstate);
}
diff --git a/lib/sbi/sbi_domain_data.c b/lib/sbi/sbi_domain_data.c
deleted file mode 100644
index 04f0edf9..00000000
--- a/lib/sbi/sbi_domain_data.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright (c) 2024 Ventana Micro Systems Inc.
- */
-
-#include <sbi/sbi_bitmap.h>
-#include <sbi/sbi_domain.h>
-#include <sbi/sbi_error.h>
-#include <sbi/sbi_heap.h>
-
-static SBI_LIST_HEAD(data_list);
-static DECLARE_BITMAP(data_idx_bmap, SBI_DOMAIN_MAX_DATA_PTRS);
-
-void *sbi_domain_data_ptr(struct sbi_domain *dom, struct sbi_domain_data *data)
-{
- if (dom && data && data->data_idx < SBI_DOMAIN_MAX_DATA_PTRS)
- return dom->data_priv.idx_to_data_ptr[data->data_idx];
-
- return NULL;
-}
-
-static int domain_setup_data_one(struct sbi_domain *dom,
- struct sbi_domain_data *data)
-{
- struct sbi_domain_data_priv *priv = &dom->data_priv;
- void *data_ptr;
- int rc;
-
- if (priv->idx_to_data_ptr[data->data_idx])
- return SBI_EALREADY;
-
- data_ptr = sbi_zalloc(data->data_size);
- if (!data_ptr) {
- sbi_domain_cleanup_data(dom);
- return SBI_ENOMEM;
- }
-
- if (data->data_setup) {
- rc = data->data_setup(dom, data, data_ptr);
- if (rc) {
- sbi_free(data_ptr);
- return rc;
- }
- }
-
- priv->idx_to_data_ptr[data->data_idx] = data_ptr;
- return 0;
-}
-
-static void domain_cleanup_data_one(struct sbi_domain *dom,
- struct sbi_domain_data *data)
-{
- struct sbi_domain_data_priv *priv = &dom->data_priv;
- void *data_ptr;
-
- data_ptr = priv->idx_to_data_ptr[data->data_idx];
- if (!data_ptr)
- return;
-
- if (data->data_cleanup)
- data->data_cleanup(dom, data, data_ptr);
-
- sbi_free(data_ptr);
- priv->idx_to_data_ptr[data->data_idx] = NULL;
-}
-
-int sbi_domain_setup_data(struct sbi_domain *dom)
-{
- struct sbi_domain_data *data;
- int rc;
-
- if (!dom)
- return SBI_EINVAL;
-
- sbi_list_for_each_entry(data, &data_list, head) {
- rc = domain_setup_data_one(dom, data);
- if (rc) {
- sbi_domain_cleanup_data(dom);
- return rc;
- }
- }
-
- return 0;
-}
-
-void sbi_domain_cleanup_data(struct sbi_domain *dom)
-{
- struct sbi_domain_data *data;
-
- if (!dom)
- return;
-
- sbi_list_for_each_entry(data, &data_list, head)
- domain_cleanup_data_one(dom, data);
-}
-
-int sbi_domain_register_data(struct sbi_domain_data *data)
-{
- struct sbi_domain *dom;
- u32 data_idx;
- int rc;
-
- if (!data || !data->data_size)
- return SBI_EINVAL;
-
- for (data_idx = 0; data_idx < SBI_DOMAIN_MAX_DATA_PTRS; data_idx++) {
- if (!bitmap_test(data_idx_bmap, data_idx))
- break;
- }
- if (SBI_DOMAIN_MAX_DATA_PTRS <= data_idx)
- return SBI_ENOSPC;
- bitmap_set(data_idx_bmap, data_idx, 1);
-
- data->data_idx = data_idx;
- sbi_list_add_tail(&data->head, &data_list);
-
- sbi_domain_for_each(dom) {
- rc = domain_setup_data_one(dom, data);
- if (rc) {
- sbi_domain_unregister_data(data);
- return rc;
- }
- }
-
- return 0;
-}
-
-void sbi_domain_unregister_data(struct sbi_domain_data *data)
-{
- struct sbi_domain *dom;
-
- sbi_domain_for_each(dom)
- domain_cleanup_data_one(dom, data);
-
- sbi_list_del(&data->head);
- bitmap_clear(data_idx_bmap, data->data_idx, 1);
-}
diff --git a/lib/sbi/sbi_domain_state.c b/lib/sbi/sbi_domain_state.c
new file mode 100644
index 00000000..2d1f30e3
--- /dev/null
+++ b/lib/sbi/sbi_domain_state.c
@@ -0,0 +1,138 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2024 Ventana Micro Systems Inc.
+ */
+
+#include <sbi/sbi_bitmap.h>
+#include <sbi/sbi_domain.h>
+#include <sbi/sbi_error.h>
+#include <sbi/sbi_heap.h>
+
+static SBI_LIST_HEAD(state_list);
+static DECLARE_BITMAP(state_idx_bmap, SBI_DOMAIN_MAX_STATE_PTRS);
+
+void *sbi_domain_state_ptr(struct sbi_domain *dom, struct sbi_domain_state *state)
+{
+ if (dom && state && state->state_idx < SBI_DOMAIN_MAX_STATE_PTRS)
+ return dom->state_priv.idx_to_state_ptr[state->state_idx];
+
+ return NULL;
+}
+
+static int domain_setup_state_one(struct sbi_domain *dom,
+ struct sbi_domain_state *state)
+{
+ struct sbi_domain_state_priv *priv = &dom->state_priv;
+ void *state_ptr;
+ int rc;
+
+ if (priv->idx_to_state_ptr[state->state_idx])
+ return SBI_EALREADY;
+
+ state_ptr = sbi_zalloc(state->state_size);
+ if (!state_ptr) {
+ sbi_domain_cleanup_state(dom);
+ return SBI_ENOMEM;
+ }
+
+ if (state->state_setup) {
+ rc = state->state_setup(dom, state, state_ptr);
+ if (rc) {
+ sbi_free(state_ptr);
+ return rc;
+ }
+ }
+
+ priv->idx_to_state_ptr[state->state_idx] = state_ptr;
+ return 0;
+}
+
+static void domain_cleanup_state_one(struct sbi_domain *dom,
+ struct sbi_domain_state *state)
+{
+ struct sbi_domain_state_priv *priv = &dom->state_priv;
+ void *state_ptr;
+
+ state_ptr = priv->idx_to_state_ptr[state->state_idx];
+ if (!state_ptr)
+ return;
+
+ if (state->state_cleanup)
+ state->state_cleanup(dom, state, state_ptr);
+
+ sbi_free(state_ptr);
+ priv->idx_to_state_ptr[state->state_idx] = NULL;
+}
+
+int sbi_domain_setup_state(struct sbi_domain *dom)
+{
+ struct sbi_domain_state *state;
+ int rc;
+
+ if (!dom)
+ return SBI_EINVAL;
+
+ sbi_list_for_each_entry(state, &state_list, head) {
+ rc = domain_setup_state_one(dom, state);
+ if (rc) {
+ sbi_domain_cleanup_state(dom);
+ return rc;
+ }
+ }
+
+ return 0;
+}
+
+void sbi_domain_cleanup_state(struct sbi_domain *dom)
+{
+ struct sbi_domain_state *state;
+
+ if (!dom)
+ return;
+
+ sbi_list_for_each_entry(state, &state_list, head)
+ domain_cleanup_state_one(dom, state);
+}
+
+int sbi_domain_register_state(struct sbi_domain_state *state)
+{
+ struct sbi_domain *dom;
+ u32 state_idx;
+ int rc;
+
+ if (!state || !state->state_size)
+ return SBI_EINVAL;
+
+ for (state_idx = 0; state_idx < SBI_DOMAIN_MAX_STATE_PTRS; state_idx++) {
+ if (!bitmap_test(state_idx_bmap, state_idx))
+ break;
+ }
+ if (SBI_DOMAIN_MAX_STATE_PTRS <= state_idx)
+ return SBI_ENOSPC;
+ bitmap_set(state_idx_bmap, state_idx, 1);
+
+ state->state_idx = state_idx;
+ sbi_list_add_tail(&state->head, &state_list);
+
+ sbi_domain_for_each(dom) {
+ rc = domain_setup_state_one(dom, state);
+ if (rc) {
+ sbi_domain_unregister_state(state);
+ return rc;
+ }
+ }
+
+ return 0;
+}
+
+void sbi_domain_unregister_state(struct sbi_domain_state *state)
+{
+ struct sbi_domain *dom;
+
+ sbi_domain_for_each(dom)
+ domain_cleanup_state_one(dom, state);
+
+ sbi_list_del(&state->head);
+ bitmap_clear(state_idx_bmap, state->state_idx, 1);
+}
diff --git a/lib/sbi/sbi_mpxy.c b/lib/sbi/sbi_mpxy.c
index 41fea0ae..2b9ad351 100644
--- a/lib/sbi/sbi_mpxy.c
+++ b/lib/sbi/sbi_mpxy.c
@@ -267,11 +267,11 @@ int sbi_mpxy_register_channel(struct sbi_mpxy_channel *channel)
}
/** Setup per domain MPXY state data */
-static int domain_mpxy_state_data_setup(struct sbi_domain *dom,
- struct sbi_domain_data *data,
- void *data_ptr)
+static int domain_mpxy_state_setup(struct sbi_domain *dom,
+ struct sbi_domain_state *state,
+ void *state_ptr)
{
- struct mpxy_state **dom_hartindex_to_mpxy_state_table = data_ptr;
+ struct mpxy_state **dom_hartindex_to_mpxy_state_table = state_ptr;
struct mpxy_state *ms;
u32 i;
@@ -296,20 +296,20 @@ static int domain_mpxy_state_data_setup(struct sbi_domain *dom,
}
/** Cleanup per domain MPXY state data */
-static void domain_mpxy_state_data_cleanup(struct sbi_domain *dom,
- struct sbi_domain_data *data,
- void *data_ptr)
+static void domain_mpxy_state_cleanup(struct sbi_domain *dom,
+ struct sbi_domain_state *state,
+ void *state_ptr)
{
- struct mpxy_state **dom_hartindex_to_mpxy_state_table = data_ptr;
+ struct mpxy_state **dom_hartindex_to_mpxy_state_table = state_ptr;
u32 i;
sbi_hartmask_for_each_hartindex(i, dom->possible_harts)
sbi_free(dom_hartindex_to_mpxy_state_table[i]);
}
-static struct sbi_domain_data dmspriv = {
- .data_setup = domain_mpxy_state_data_setup,
- .data_cleanup = domain_mpxy_state_data_cleanup,
+static struct sbi_domain_state dmstate = {
+ .state_setup = domain_mpxy_state_setup,
+ .state_cleanup = domain_mpxy_state_cleanup,
};
/**
@@ -324,7 +324,7 @@ static struct mpxy_state *sbi_domain_get_mpxy_state(struct sbi_domain *dom,
{
struct mpxy_state **dom_hartindex_to_mpxy_state_table;
- dom_hartindex_to_mpxy_state_table = sbi_domain_data_ptr(dom, &dmspriv);
+ dom_hartindex_to_mpxy_state_table = sbi_domain_state_ptr(dom, &dmstate);
if (!dom_hartindex_to_mpxy_state_table ||
!sbi_hartindex_valid(hartindex))
return NULL;
@@ -339,12 +339,12 @@ int sbi_mpxy_init(struct sbi_scratch *scratch)
/**
* Allocate per-domain and per-hart MPXY state data.
* The data type is "struct mpxy_state **" whose memory space will be
- * dynamically allocated by domain_setup_data_one() and
- * domain_mpxy_state_data_setup(). Calculate needed size of memory space
+ * dynamically allocated by domain_setup_state_one() and
+ * domain_mpxy_state_setup(). Calculate needed size of memory space
* here.
*/
- dmspriv.data_size = sizeof(struct mpxy_state *) * sbi_hart_count();
- ret = sbi_domain_register_data(&dmspriv);
+ dmstate.state_size = sizeof(struct mpxy_state *) * sbi_hart_count();
+ ret = sbi_domain_register_state(&dmstate);
if (ret)
return ret;