[PATCH 50/61] ml/cnxk: use memcpy for fixed size data
Stephen Hemminger
stephen at networkplumber.org
Thu Aug 20 07:12:40 CEST 2026
The regular libc memcpy is inline for fix sizes and has
better analysis coverage.
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
drivers/ml/cnxk/cn10k_ml_model.c | 8 +++++---
drivers/ml/cnxk/cn10k_ml_ops.c | 8 +++++---
drivers/ml/cnxk/tvmrt_ml_model.c | 9 +++++----
drivers/ml/cnxk/tvmrt_ml_ops.c | 6 +++---
4 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/drivers/ml/cnxk/cn10k_ml_model.c b/drivers/ml/cnxk/cn10k_ml_model.c
index fa978529f5..7e2c460fb4 100644
--- a/drivers/ml/cnxk/cn10k_ml_model.c
+++ b/drivers/ml/cnxk/cn10k_ml_model.c
@@ -564,7 +564,7 @@ cn10k_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set model info */
memset(info, 0, sizeof(struct rte_ml_model_info));
- rte_memcpy(info->name, metadata->model.name, MRVL_ML_MODEL_NAME_LEN);
+ memcpy(info->name, metadata->model.name, MRVL_ML_MODEL_NAME_LEN);
snprintf(info->version, RTE_ML_STR_MAX, "%u.%u.%u.%u", metadata->model.version[0],
metadata->model.version[1], metadata->model.version[2],
metadata->model.version[3]);
@@ -583,7 +583,8 @@ cn10k_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set input info */
for (i = 0; i < info->nb_inputs; i++) {
- rte_memcpy(input[i].name, io_info->input[i].name, MRVL_ML_INPUT_NAME_LEN);
+ memcpy(input[i].name, io_info->input[i].name,
+ MRVL_ML_INPUT_NAME_LEN);
input[i].nb_dims = io_info->input[i].nb_dims;
input[i].shape = &io_info->input[i].shape[0];
input[i].type = io_info->input[i].qtype;
@@ -596,7 +597,8 @@ cn10k_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set output info */
for (i = 0; i < info->nb_outputs; i++) {
- rte_memcpy(output[i].name, io_info->output[i].name, MRVL_ML_INPUT_NAME_LEN);
+ memcpy(output[i].name, io_info->output[i].name,
+ MRVL_ML_INPUT_NAME_LEN);
output[i].nb_dims = io_info->output[i].nb_dims;
output[i].shape = &io_info->output[i].shape[0];
output[i].type = io_info->output[i].qtype;
diff --git a/drivers/ml/cnxk/cn10k_ml_ops.c b/drivers/ml/cnxk/cn10k_ml_ops.c
index 597806b787..79a03dc10b 100644
--- a/drivers/ml/cnxk/cn10k_ml_ops.c
+++ b/drivers/ml/cnxk/cn10k_ml_ops.c
@@ -668,7 +668,8 @@ cn10k_ml_layer_load(void *device, uint16_t model_id, const char *layer_name, uin
}
/* Copy metadata to internal buffer */
- rte_memcpy(&layer->glow.metadata, buffer, sizeof(struct cn10k_ml_model_metadata));
+ memcpy(&layer->glow.metadata, buffer,
+ sizeof(struct cn10k_ml_model_metadata));
cn10k_ml_model_metadata_update(&layer->glow.metadata);
/* Enable support for batch_size of 256 */
@@ -745,11 +746,12 @@ cn10k_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
model->subtype = ML_CNXK_MODEL_SUBTYPE_GLOW_MRVL;
/* Copy metadata to internal buffer */
- rte_memcpy(&model->glow.metadata, params->addr, sizeof(struct cn10k_ml_model_metadata));
+ memcpy(&model->glow.metadata, params->addr,
+ sizeof(struct cn10k_ml_model_metadata));
cn10k_ml_model_metadata_update(&model->glow.metadata);
/* Set model name */
- rte_memcpy(model->name, (char *)model->glow.metadata.model.name, 64);
+ memcpy(model->name, (char *)model->glow.metadata.model.name, 64);
/* Enable support for batch_size of 256 */
if (model->glow.metadata.model.batch_size == 0)
diff --git a/drivers/ml/cnxk/tvmrt_ml_model.c b/drivers/ml/cnxk/tvmrt_ml_model.c
index 319c53a05b..f0bc616148 100644
--- a/drivers/ml/cnxk/tvmrt_ml_model.c
+++ b/drivers/ml/cnxk/tvmrt_ml_model.c
@@ -848,7 +848,7 @@ tvmrt_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
if (model->subtype == ML_CNXK_MODEL_SUBTYPE_TVM_MRVL)
goto tvm_mrvl_model;
- rte_memcpy(info->name, model->name, RTE_ML_STR_MAX);
+ memcpy(info->name, model->name, RTE_ML_STR_MAX);
snprintf(info->version, RTE_ML_STR_MAX, "%u.%u.%u.%u", 0, 0, 0, 0);
info->model_id = model->model_id;
info->device_id = cnxk_mldev->mldev->data->dev_id;
@@ -863,7 +863,8 @@ tvmrt_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set input info */
for (i = 0; i < info->nb_inputs; i++) {
- rte_memcpy(input[i].name, model->tvmrt.info.input[i].name, MRVL_ML_INPUT_NAME_LEN);
+ memcpy(input[i].name, model->tvmrt.info.input[i].name,
+ MRVL_ML_INPUT_NAME_LEN);
input[i].nb_dims = model->tvmrt.info.input[i].nb_dims;
input[i].shape = &model->tvmrt.info.input[i].shape[0];
input[i].type = model->tvmrt.info.input[i].qtype;
@@ -876,8 +877,8 @@ tvmrt_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set output info */
for (i = 0; i < info->nb_outputs; i++) {
- rte_memcpy(output[i].name, model->tvmrt.info.output[i].name,
- MRVL_ML_OUTPUT_NAME_LEN);
+ memcpy(output[i].name, model->tvmrt.info.output[i].name,
+ MRVL_ML_OUTPUT_NAME_LEN);
output[i].nb_dims = model->tvmrt.info.output[i].nb_dims;
output[i].shape = &model->tvmrt.info.output[i].shape[0];
output[i].type = model->tvmrt.info.output[i].qtype;
diff --git a/drivers/ml/cnxk/tvmrt_ml_ops.c b/drivers/ml/cnxk/tvmrt_ml_ops.c
index f6b3a51c51..191f93486a 100644
--- a/drivers/ml/cnxk/tvmrt_ml_ops.c
+++ b/drivers/ml/cnxk/tvmrt_ml_ops.c
@@ -229,7 +229,7 @@ tvmrt_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
/* Copy mod.so */
model->tvmrt.so.buffer = mz->addr;
model->tvmrt.so.size = object[0].size;
- rte_memcpy(model->tvmrt.so.name, object[0].name, RTE_ML_STR_MAX);
+ memcpy(model->tvmrt.so.name, object[0].name, RTE_ML_STR_MAX);
rte_memcpy(model->tvmrt.so.buffer, object[0].buffer, object[0].size);
rte_free(object[0].buffer);
@@ -238,7 +238,7 @@ tvmrt_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
RTE_PTR_ADD(model->tvmrt.so.buffer,
RTE_ALIGN_CEIL(model->tvmrt.so.size, RTE_CACHE_LINE_MIN_SIZE));
model->tvmrt.json.size = object[1].size;
- rte_memcpy(model->tvmrt.json.name, object[1].name, RTE_ML_STR_MAX);
+ memcpy(model->tvmrt.json.name, object[1].name, RTE_ML_STR_MAX);
rte_memcpy(model->tvmrt.json.buffer, object[1].buffer, object[1].size);
rte_free(object[1].buffer);
@@ -247,7 +247,7 @@ tvmrt_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
RTE_PTR_ADD(model->tvmrt.json.buffer,
RTE_ALIGN_CEIL(model->tvmrt.json.size, RTE_CACHE_LINE_MIN_SIZE));
model->tvmrt.params.size = object[2].size;
- rte_memcpy(model->tvmrt.params.name, object[2].name, RTE_ML_STR_MAX);
+ memcpy(model->tvmrt.params.name, object[2].name, RTE_ML_STR_MAX);
rte_memcpy(model->tvmrt.params.buffer, object[2].buffer, object[2].size);
rte_free(object[2].buffer);
--
2.53.0
More information about the dev
mailing list