[PATCH v5 31/34] ml/cnxk: add generic ML malloc and free callback
Srikanth Yalavarthi
syalavarthi at marvell.com
Wed Oct 18 08:47:59 CEST 2023
Implemented generic ML malloc and free callbacks
Signed-off-by: Srikanth Yalavarthi <syalavarthi at marvell.com>
---
drivers/ml/cnxk/cn10k_ml_ops.c | 30 ++++++++++++++++++++++++++++++
drivers/ml/cnxk/cn10k_ml_ops.h | 3 +++
drivers/ml/cnxk/mvtvm_ml_ops.c | 2 ++
3 files changed, 35 insertions(+)
diff --git a/drivers/ml/cnxk/cn10k_ml_ops.c b/drivers/ml/cnxk/cn10k_ml_ops.c
index 7802425c87..01b0a44caa 100644
--- a/drivers/ml/cnxk/cn10k_ml_ops.c
+++ b/drivers/ml/cnxk/cn10k_ml_ops.c
@@ -1497,3 +1497,33 @@ cn10k_ml_io_free(void *device, uint16_t model_id, const char *layer_name)
return plt_memzone_free(mz);
}
+
+int
+cn10k_ml_malloc(const char *name, size_t size, uint32_t align, void **addr)
+{
+ const struct plt_memzone *mz;
+
+ mz = plt_memzone_reserve_aligned(name, size, 0, align);
+ if (mz == NULL) {
+ plt_err("ml_malloc failed: Unable to allocate memory: name = %s", name);
+ return -ENOMEM;
+ }
+
+ *addr = mz->addr;
+
+ return 0;
+}
+
+int
+cn10k_ml_free(const char *name)
+{
+ const struct plt_memzone *mz;
+
+ mz = plt_memzone_lookup(name);
+ if (mz == NULL) {
+ plt_err("ml_free failed: Memzone not found: name = %s", name);
+ return -EINVAL;
+ }
+
+ return plt_memzone_free(mz);
+}
diff --git a/drivers/ml/cnxk/cn10k_ml_ops.h b/drivers/ml/cnxk/cn10k_ml_ops.h
index 9c41c1c0b0..eb3e1c139c 100644
--- a/drivers/ml/cnxk/cn10k_ml_ops.h
+++ b/drivers/ml/cnxk/cn10k_ml_ops.h
@@ -333,6 +333,9 @@ int cn10k_ml_io_alloc(void *device, uint16_t model_id, const char *layer_name,
uint64_t **input_qbuffer, uint64_t **output_qbuffer);
int cn10k_ml_io_free(void *device, uint16_t model_id, const char *layer_name);
+int cn10k_ml_malloc(const char *name, size_t size, uint32_t align, void **addr);
+int cn10k_ml_free(const char *name);
+
/* xstats ops */
void cn10k_ml_xstat_model_name_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *model,
uint16_t stat_id, uint16_t entry, char *suffix);
diff --git a/drivers/ml/cnxk/mvtvm_ml_ops.c b/drivers/ml/cnxk/mvtvm_ml_ops.c
index 77c2b5bcdc..b627355917 100644
--- a/drivers/ml/cnxk/mvtvm_ml_ops.c
+++ b/drivers/ml/cnxk/mvtvm_ml_ops.c
@@ -234,6 +234,8 @@ mvtvm_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
callback->tvmrt_glow_layer_unload = cn10k_ml_layer_unload;
callback->tvmrt_io_alloc = cn10k_ml_io_alloc;
callback->tvmrt_io_free = cn10k_ml_io_free;
+ callback->tvmrt_malloc = cn10k_ml_malloc;
+ callback->tvmrt_free = cn10k_ml_free;
} else {
callback = NULL;
}
--
2.42.0
More information about the dev
mailing list