[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