[PATCH v2 57/68] ml/cnxk: use memcpy for fixed size data
Stephen Hemminger
stephen at networkplumber.org
Fri Aug 21 21:24:52 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 58eebbf076..03817384dd 100644
--- a/drivers/ml/cnxk/cn10k_ml_model.c
+++ b/drivers/ml/cnxk/cn10k_ml_model.c
@@ -565,7 +565,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]);
@@ -584,7 +584,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;
@@ -597,7 +598,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 ffe3356720..07b767eded 100644
--- a/drivers/ml/cnxk/cn10k_ml_ops.c
+++ b/drivers/ml/cnxk/cn10k_ml_ops.c
@@ -669,7 +669,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 */
@@ -746,11 +747,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 01493077bb..b00cec3bcc 100644
--- a/drivers/ml/cnxk/tvmrt_ml_ops.c
+++ b/drivers/ml/cnxk/tvmrt_ml_ops.c
@@ -230,7 +230,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);
@@ -239,7 +239,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);
@@ -248,7 +248,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