diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index 701614a..6b8a151 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -38,6 +38,7 @@
 #include <mlx5_glue.h>
 #include <mlx5_devx_cmds.h>
 #include <mlx5_common.h>
+#include <mlx5_malloc.h>
 
 #include "mlx5.h"
 #include "mlx5_rxtx.h"
@@ -1162,8 +1163,9 @@ int mlx5_get_module_eeprom(struct rte_eth_dev *dev,
 		rte_errno = EINVAL;
 		return -rte_errno;
 	}
-	eeprom = rte_calloc(__func__, 1,
-			    (sizeof(struct ethtool_eeprom) + info->length), 0);
+	eeprom = mlx5_malloc(MLX5_MEM_ZERO,
+			     (sizeof(struct ethtool_eeprom) + info->length), 0,
+			     SOCKET_ID_ANY);
 	if (!eeprom) {
 		DRV_LOG(WARNING, "port %u cannot allocate memory for "
 			"eeprom data", dev->data->port_id);
@@ -1182,6 +1184,6 @@ int mlx5_get_module_eeprom(struct rte_eth_dev *dev,
 			dev->data->port_id, strerror(rte_errno));
 	else
 		rte_memcpy(info->data, eeprom->data, info->length);
-	rte_free(eeprom);
+	mlx5_free(eeprom);
 	return ret;
 }
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index d5acef0..1698f2c 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -163,7 +163,7 @@
 		socket = ctrl->socket;
 	}
 	MLX5_ASSERT(data != NULL);
-	ret = rte_malloc_socket(__func__, size, alignment, socket);
+	ret = mlx5_malloc(0, size, alignment, socket);
 	if (!ret && size)
 		rte_errno = ENOMEM;
 	return ret;
@@ -181,7 +181,7 @@
 mlx5_free_verbs_buf(void *ptr, void *data __rte_unused)
 {
 	MLX5_ASSERT(data != NULL);
-	rte_free(ptr);
+	mlx5_free(ptr);
 }
 
 /**
@@ -618,9 +618,9 @@
 			mlx5_glue->port_state_str(port_attr.state),
 			port_attr.state);
 	/* Allocate private eth device data. */
-	priv = rte_zmalloc("ethdev private structure",
+	priv = mlx5_malloc(MLX5_MEM_ZERO | MLX5_MEM_RTE,
 			   sizeof(*priv),
-			   RTE_CACHE_LINE_SIZE);
+			   RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);
 	if (priv == NULL) {
 		DRV_LOG(ERR, "priv allocation failure");
 		err = ENOMEM;
@@ -1109,7 +1109,7 @@
 			mlx5_flow_id_pool_release(priv->qrss_id_pool);
 		if (own_domain_id)
 			claim_zero(rte_eth_switch_domain_free(priv->domain_id));
-		rte_free(priv);
+		mlx5_free(priv);
 		if (eth_dev != NULL)
 			eth_dev->data->dev_private = NULL;
 	}
@@ -1428,10 +1428,10 @@
 	 * Now we can determine the maximal
 	 * amount of devices to be spawned.
 	 */
-	list = rte_zmalloc("device spawn data",
-			 sizeof(struct mlx5_dev_spawn_data) *
-			 (np ? np : nd),
-			 RTE_CACHE_LINE_SIZE);
+	list = mlx5_malloc(MLX5_MEM_ZERO,
+			   sizeof(struct mlx5_dev_spawn_data) *
+			   (np ? np : nd),
+			   RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);
 	if (!list) {
 		DRV_LOG(ERR, "spawn data array allocation failure");
 		rte_errno = ENOMEM;
@@ -1722,7 +1722,7 @@
 	if (nl_route >= 0)
 		close(nl_route);
 	if (list)
-		rte_free(list);
+		mlx5_free(list);
 	MLX5_ASSERT(ibv_list);
 	mlx5_glue->free_device_list(ibv_list);
 	return ret;
@@ -2200,8 +2200,8 @@
 	/* Allocate memory to grab stat names and values. */
 	str_sz = dev_stats_n * ETH_GSTRING_LEN;
 	strings = (struct ethtool_gstrings *)
-		  rte_malloc("xstats_strings",
-			     str_sz + sizeof(struct ethtool_gstrings), 0);
+		  mlx5_malloc(0, str_sz + sizeof(struct ethtool_gstrings), 0,
+			      SOCKET_ID_ANY);
 	if (!strings) {
 		DRV_LOG(WARNING, "port %u unable to allocate memory for xstats",
 		     dev->data->port_id);
@@ -2251,7 +2251,7 @@
 	mlx5_os_read_dev_stat(priv, "out_of_buffer", &stats_ctrl->imissed_base);
 	stats_ctrl->imissed = 0;
 free:
-	rte_free(strings);
+	mlx5_free(strings);
 }
 
 /**
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index ba86c68..daf65f3 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -644,11 +644,11 @@ struct mlx5_dev_ctx_shared *
 	}
 	/* No device found, we have to create new shared context. */
 	MLX5_ASSERT(spawn->max_port);
-	sh = rte_zmalloc("ethdev shared ib context",
+	sh = mlx5_malloc(MLX5_MEM_ZERO | MLX5_MEM_RTE,
 			 sizeof(struct mlx5_dev_ctx_shared) +
 			 spawn->max_port *
 			 sizeof(struct mlx5_dev_shared_port),
-			 RTE_CACHE_LINE_SIZE);
+			 RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);
 	if (!sh) {
 		DRV_LOG(ERR, "shared context allocation failure");
 		rte_errno  = ENOMEM;
@@ -764,7 +764,7 @@ struct mlx5_dev_ctx_shared *
 		claim_zero(mlx5_glue->close_device(sh->ctx));
 	if (sh->flow_id_pool)
 		mlx5_flow_id_pool_release(sh->flow_id_pool);
-	rte_free(sh);
+	mlx5_free(sh);
 	MLX5_ASSERT(err > 0);
 	rte_errno = err;
 	return NULL;
@@ -829,7 +829,7 @@ struct mlx5_dev_ctx_shared *
 		claim_zero(mlx5_glue->close_device(sh->ctx));
 	if (sh->flow_id_pool)
 		mlx5_flow_id_pool_release(sh->flow_id_pool);
-	rte_free(sh);
+	mlx5_free(sh);
 exit:
 	pthread_mutex_unlock(&mlx5_dev_ctx_list_mutex);
 }
@@ -1089,8 +1089,8 @@ struct mlx5_dev_ctx_shared *
 	 */
 	ppriv_size =
 		sizeof(struct mlx5_proc_priv) + priv->txqs_n * sizeof(void *);
-	ppriv = rte_malloc_socket("mlx5_proc_priv", ppriv_size,
-				  RTE_CACHE_LINE_SIZE, dev->device->numa_node);
+	ppriv = mlx5_malloc(MLX5_MEM_RTE, ppriv_size, RTE_CACHE_LINE_SIZE,
+			    dev->device->numa_node);
 	if (!ppriv) {
 		rte_errno = ENOMEM;
 		return -rte_errno;
@@ -1111,7 +1111,7 @@ struct mlx5_dev_ctx_shared *
 {
 	if (!dev->process_private)
 		return;
-	rte_free(dev->process_private);
+	mlx5_free(dev->process_private);
 	dev->process_private = NULL;
 }
 
