get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/74037/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 74037,
    "url": "http://patches.dpdk.org/api/patches/74037/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1594785603-152773-4-git-send-email-suanmingm@mellanox.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1594785603-152773-4-git-send-email-suanmingm@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1594785603-152773-4-git-send-email-suanmingm@mellanox.com",
    "date": "2020-07-15T03:59:59",
    "name": "[3/7] net/mlx5: convert control path memory to unified malloc",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f24362d0292f1d27108321fe5fe0318b69991ba7",
    "submitter": {
        "id": 1358,
        "url": "http://patches.dpdk.org/api/people/1358/?format=api",
        "name": "Suanming Mou",
        "email": "suanmingm@mellanox.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1594785603-152773-4-git-send-email-suanmingm@mellanox.com/mbox/",
    "series": [
        {
            "id": 11031,
            "url": "http://patches.dpdk.org/api/series/11031/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=11031",
            "date": "2020-07-15T03:59:56",
            "name": "net/mlx5: add sys_mem_en devarg",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/11031/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/74037/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/74037/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id C1A9DA0540;\n\tWed, 15 Jul 2020 06:00:41 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 61B141C1E5;\n\tWed, 15 Jul 2020 06:00:18 +0200 (CEST)",
            "from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130])\n by dpdk.org (Postfix) with ESMTP id ECDB51C1C0\n for <dev@dpdk.org>; Wed, 15 Jul 2020 06:00:14 +0200 (CEST)"
        ],
        "From": "Suanming Mou <suanmingm@mellanox.com>",
        "To": "viacheslavo@mellanox.com,\n\tmatan@mellanox.com",
        "Cc": "orika@mellanox.com,\n\trasland@mellanox.com,\n\tdev@dpdk.org",
        "Date": "Wed, 15 Jul 2020 11:59:59 +0800",
        "Message-Id": "<1594785603-152773-4-git-send-email-suanmingm@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1594785603-152773-1-git-send-email-suanmingm@mellanox.com>",
        "References": "<1594785603-152773-1-git-send-email-suanmingm@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH 3/7] net/mlx5: convert control path memory to\n\tunified malloc",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This commit allocates the control path memory from unified malloc\nfunction.\n\nThe objects be changed:\n\n1. hlist;\n2. rss key;\n3. vlan vmwa;\n4. indexed pool;\n5. fdir objects;\n6. meter profile;\n7. flow counter pool;\n8. hrxq and indirect table;\n9. flow object cache resources;\n10. temporary resources in flow create;\n\nSigned-off-by: Suanming Mou <suanmingm@mellanox.com>\nAcked-by: Matan Azrad <matan@mellanox.com>\n---\n drivers/net/mlx5/mlx5.c            | 88 ++++++++++++++++++++------------------\n drivers/net/mlx5/mlx5_ethdev.c     | 15 ++++---\n drivers/net/mlx5/mlx5_flow.c       | 45 +++++++++++--------\n drivers/net/mlx5/mlx5_flow_dv.c    | 46 +++++++++++---------\n drivers/net/mlx5/mlx5_flow_meter.c | 11 ++---\n drivers/net/mlx5/mlx5_flow_verbs.c |  8 ++--\n drivers/net/mlx5/mlx5_mp.c         |  3 +-\n drivers/net/mlx5/mlx5_rss.c        | 13 ++++--\n drivers/net/mlx5/mlx5_rxq.c        | 37 +++++++++-------\n drivers/net/mlx5/mlx5_utils.c      | 60 +++++++++++++++-----------\n drivers/net/mlx5/mlx5_utils.h      |  2 +-\n drivers/net/mlx5/mlx5_vlan.c       |  8 ++--\n 12 files changed, 190 insertions(+), 146 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c\nindex 9b17266..ba86c68 100644\n--- a/drivers/net/mlx5/mlx5.c\n+++ b/drivers/net/mlx5/mlx5.c\n@@ -40,6 +40,7 @@\n #include <mlx5_common.h>\n #include <mlx5_common_os.h>\n #include <mlx5_common_mp.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5_defs.h\"\n #include \"mlx5.h\"\n@@ -194,8 +195,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_encap_decap_ipool\",\n \t},\n \t{\n@@ -205,8 +206,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_push_vlan_ipool\",\n \t},\n \t{\n@@ -216,8 +217,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_tag_ipool\",\n \t},\n \t{\n@@ -227,8 +228,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_port_id_ipool\",\n \t},\n \t{\n@@ -238,8 +239,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_jump_ipool\",\n \t},\n #endif\n@@ -250,8 +251,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_meter_ipool\",\n \t},\n \t{\n@@ -261,8 +262,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_mcp_ipool\",\n \t},\n \t{\n@@ -272,8 +273,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_hrxq_ipool\",\n \t},\n \t{\n@@ -287,8 +288,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.grow_shift = 2,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"mlx5_flow_handle_ipool\",\n \t},\n \t{\n@@ -296,8 +297,8 @@ static LIST_HEAD(, mlx5_dev_ctx_shared) mlx5_dev_ctx_list =\n \t\t.trunk_size = 4096,\n \t\t.need_lock = 1,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t\t.type = \"rte_flow_ipool\",\n \t},\n };\n@@ -323,15 +324,16 @@ struct mlx5_flow_id_pool *\n \tstruct mlx5_flow_id_pool *pool;\n \tvoid *mem;\n \n-\tpool = rte_zmalloc(\"id pool allocation\", sizeof(*pool),\n-\t\t\t   RTE_CACHE_LINE_SIZE);\n+\tpool = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*pool),\n+\t\t\t   RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);\n \tif (!pool) {\n \t\tDRV_LOG(ERR, \"can't allocate id pool\");\n \t\trte_errno  = ENOMEM;\n \t\treturn NULL;\n \t}\n-\tmem = rte_zmalloc(\"\", MLX5_FLOW_MIN_ID_POOL_SIZE * sizeof(uint32_t),\n-\t\t\t  RTE_CACHE_LINE_SIZE);\n+\tmem = mlx5_malloc(MLX5_MEM_ZERO,\n+\t\t\t  MLX5_FLOW_MIN_ID_POOL_SIZE * sizeof(uint32_t),\n+\t\t\t  RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);\n \tif (!mem) {\n \t\tDRV_LOG(ERR, \"can't allocate mem for id pool\");\n \t\trte_errno  = ENOMEM;\n@@ -344,7 +346,7 @@ struct mlx5_flow_id_pool *\n \tpool->max_id = max_id;\n \treturn pool;\n error:\n-\trte_free(pool);\n+\tmlx5_free(pool);\n \treturn NULL;\n }\n \n@@ -357,8 +359,8 @@ struct mlx5_flow_id_pool *\n void\n mlx5_flow_id_pool_release(struct mlx5_flow_id_pool *pool)\n {\n-\trte_free(pool->free_arr);\n-\trte_free(pool);\n+\tmlx5_free(pool->free_arr);\n+\tmlx5_free(pool);\n }\n \n /**\n@@ -410,14 +412,15 @@ struct mlx5_flow_id_pool *\n \t\tsize = pool->curr - pool->free_arr;\n \t\tsize2 = size * MLX5_ID_GENERATION_ARRAY_FACTOR;\n \t\tMLX5_ASSERT(size2 > size);\n-\t\tmem = rte_malloc(\"\", size2 * sizeof(uint32_t), 0);\n+\t\tmem = mlx5_malloc(0, size2 * sizeof(uint32_t), 0,\n+\t\t\t\t  SOCKET_ID_ANY);\n \t\tif (!mem) {\n \t\t\tDRV_LOG(ERR, \"can't allocate mem for id pool\");\n \t\t\trte_errno  = ENOMEM;\n \t\t\treturn -rte_errno;\n \t\t}\n \t\tmemcpy(mem, pool->free_arr, size * sizeof(uint32_t));\n-\t\trte_free(pool->free_arr);\n+\t\tmlx5_free(pool->free_arr);\n \t\tpool->free_arr = mem;\n \t\tpool->curr = pool->free_arr + size;\n \t\tpool->last = pool->free_arr + size2;\n@@ -486,7 +489,7 @@ struct mlx5_flow_id_pool *\n \tLIST_REMOVE(mng, next);\n \tclaim_zero(mlx5_devx_cmd_destroy(mng->dm));\n \tclaim_zero(mlx5_glue->devx_umem_dereg(mng->umem));\n-\trte_free(mem);\n+\tmlx5_free(mem);\n }\n \n /**\n@@ -534,10 +537,10 @@ struct mlx5_flow_id_pool *\n \t\t\t\t\t\t    (pool, j)->dcs));\n \t\t\t}\n \t\t\tTAILQ_REMOVE(&sh->cmng.ccont[i].pool_list, pool, next);\n-\t\t\trte_free(pool);\n+\t\t\tmlx5_free(pool);\n \t\t\tpool = TAILQ_FIRST(&sh->cmng.ccont[i].pool_list);\n \t\t}\n-\t\trte_free(sh->cmng.ccont[i].pools);\n+\t\tmlx5_free(sh->cmng.ccont[i].pools);\n \t}\n \tmng = LIST_FIRST(&sh->cmng.mem_mngs);\n \twhile (mng) {\n@@ -860,7 +863,7 @@ struct mlx5_dev_ctx_shared *\n \t\t\t\t\tentry);\n \t\tMLX5_ASSERT(tbl_data);\n \t\tmlx5_hlist_remove(sh->flow_tbls, pos);\n-\t\trte_free(tbl_data);\n+\t\tmlx5_free(tbl_data);\n \t}\n \ttable_key.direction = 1;\n \tpos = mlx5_hlist_lookup(sh->flow_tbls, table_key.v64);\n@@ -869,7 +872,7 @@ struct mlx5_dev_ctx_shared *\n \t\t\t\t\tentry);\n \t\tMLX5_ASSERT(tbl_data);\n \t\tmlx5_hlist_remove(sh->flow_tbls, pos);\n-\t\trte_free(tbl_data);\n+\t\tmlx5_free(tbl_data);\n \t}\n \ttable_key.direction = 0;\n \ttable_key.domain = 1;\n@@ -879,7 +882,7 @@ struct mlx5_dev_ctx_shared *\n \t\t\t\t\tentry);\n \t\tMLX5_ASSERT(tbl_data);\n \t\tmlx5_hlist_remove(sh->flow_tbls, pos);\n-\t\trte_free(tbl_data);\n+\t\tmlx5_free(tbl_data);\n \t}\n \tmlx5_hlist_destroy(sh->flow_tbls, NULL, NULL);\n }\n@@ -923,8 +926,9 @@ struct mlx5_dev_ctx_shared *\n \t\t\t.direction = 0,\n \t\t}\n \t};\n-\tstruct mlx5_flow_tbl_data_entry *tbl_data = rte_zmalloc(NULL,\n-\t\t\t\t\t\t\t  sizeof(*tbl_data), 0);\n+\tstruct mlx5_flow_tbl_data_entry *tbl_data = mlx5_malloc(MLX5_MEM_ZERO,\n+\t\t\t\t\t\t\t  sizeof(*tbl_data), 0,\n+\t\t\t\t\t\t\t  SOCKET_ID_ANY);\n \n \tif (!tbl_data) {\n \t\terr = ENOMEM;\n@@ -937,7 +941,8 @@ struct mlx5_dev_ctx_shared *\n \trte_atomic32_init(&tbl_data->tbl.refcnt);\n \trte_atomic32_inc(&tbl_data->tbl.refcnt);\n \ttable_key.direction = 1;\n-\ttbl_data = rte_zmalloc(NULL, sizeof(*tbl_data), 0);\n+\ttbl_data = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*tbl_data), 0,\n+\t\t\t       SOCKET_ID_ANY);\n \tif (!tbl_data) {\n \t\terr = ENOMEM;\n \t\tgoto error;\n@@ -950,7 +955,8 @@ struct mlx5_dev_ctx_shared *\n \trte_atomic32_inc(&tbl_data->tbl.refcnt);\n \ttable_key.direction = 0;\n \ttable_key.domain = 1;\n-\ttbl_data = rte_zmalloc(NULL, sizeof(*tbl_data), 0);\n+\ttbl_data = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*tbl_data), 0,\n+\t\t\t       SOCKET_ID_ANY);\n \tif (!tbl_data) {\n \t\terr = ENOMEM;\n \t\tgoto error;\n@@ -1181,9 +1187,9 @@ struct mlx5_dev_ctx_shared *\n \tmlx5_mprq_free_mp(dev);\n \tmlx5_os_free_shared_dr(priv);\n \tif (priv->rss_conf.rss_key != NULL)\n-\t\trte_free(priv->rss_conf.rss_key);\n+\t\tmlx5_free(priv->rss_conf.rss_key);\n \tif (priv->reta_idx != NULL)\n-\t\trte_free(priv->reta_idx);\n+\t\tmlx5_free(priv->reta_idx);\n \tif (priv->config.vf)\n \t\tmlx5_nl_mac_addr_flush(priv->nl_socket_route, mlx5_ifindex(dev),\n \t\t\t\t       dev->data->mac_addrs,\ndiff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c\nindex 6b4efcd..cefb450 100644\n--- a/drivers/net/mlx5/mlx5_ethdev.c\n+++ b/drivers/net/mlx5/mlx5_ethdev.c\n@@ -21,6 +21,8 @@\n #include <rte_rwlock.h>\n #include <rte_cycles.h>\n \n+#include <mlx5_malloc.h>\n+\n #include \"mlx5_rxtx.h\"\n #include \"mlx5_autoconf.h\"\n \n@@ -75,8 +77,8 @@\n \t\treturn -rte_errno;\n \t}\n \tpriv->rss_conf.rss_key =\n-\t\trte_realloc(priv->rss_conf.rss_key,\n-\t\t\t    MLX5_RSS_HASH_KEY_LEN, 0);\n+\t\tmlx5_realloc(priv->rss_conf.rss_key, MLX5_MEM_RTE,\n+\t\t\t    MLX5_RSS_HASH_KEY_LEN, 0, SOCKET_ID_ANY);\n \tif (!priv->rss_conf.rss_key) {\n \t\tDRV_LOG(ERR, \"port %u cannot allocate RSS hash key memory (%u)\",\n \t\t\tdev->data->port_id, rxqs_n);\n@@ -142,7 +144,8 @@\n \n \tif (priv->skip_default_rss_reta)\n \t\treturn ret;\n-\trss_queue_arr = rte_malloc(\"\", rxqs_n * sizeof(unsigned int), 0);\n+\trss_queue_arr = mlx5_malloc(0, rxqs_n * sizeof(unsigned int), 0,\n+\t\t\t\t    SOCKET_ID_ANY);\n \tif (!rss_queue_arr) {\n \t\tDRV_LOG(ERR, \"port %u cannot allocate RSS queue list (%u)\",\n \t\t\tdev->data->port_id, rxqs_n);\n@@ -163,7 +166,7 @@\n \t\tDRV_LOG(ERR, \"port %u cannot handle this many Rx queues (%u)\",\n \t\t\tdev->data->port_id, rss_queue_n);\n \t\trte_errno = EINVAL;\n-\t\trte_free(rss_queue_arr);\n+\t\tmlx5_free(rss_queue_arr);\n \t\treturn -rte_errno;\n \t}\n \tDRV_LOG(INFO, \"port %u Rx queues number update: %u -> %u\",\n@@ -179,7 +182,7 @@\n \t\t\t\trss_queue_n));\n \tret = mlx5_rss_reta_index_resize(dev, reta_idx_n);\n \tif (ret) {\n-\t\trte_free(rss_queue_arr);\n+\t\tmlx5_free(rss_queue_arr);\n \t\treturn ret;\n \t}\n \t/*\n@@ -192,7 +195,7 @@\n \t\tif (++j == rss_queue_n)\n \t\t\tj = 0;\n \t}\n-\trte_free(rss_queue_arr);\n+\tmlx5_free(rss_queue_arr);\n \treturn ret;\n }\n \ndiff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex ae5ccc2..cce6ce5 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -32,6 +32,7 @@\n #include <mlx5_glue.h>\n #include <mlx5_devx_cmds.h>\n #include <mlx5_prm.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5_defs.h\"\n #include \"mlx5.h\"\n@@ -4010,7 +4011,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n \t\tact_size = sizeof(struct rte_flow_action) * (actions_n + 1) +\n \t\t\t   sizeof(struct rte_flow_action_set_tag) +\n \t\t\t   sizeof(struct rte_flow_action_jump);\n-\t\text_actions = rte_zmalloc(__func__, act_size, 0);\n+\t\text_actions = mlx5_malloc(MLX5_MEM_ZERO, act_size, 0,\n+\t\t\t\t\t  SOCKET_ID_ANY);\n \t\tif (!ext_actions)\n \t\t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n@@ -4046,7 +4048,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n \t\t */\n \t\tact_size = sizeof(struct rte_flow_action) * (actions_n + 1) +\n \t\t\t   sizeof(struct mlx5_flow_action_copy_mreg);\n-\t\text_actions = rte_zmalloc(__func__, act_size, 0);\n+\t\text_actions = mlx5_malloc(MLX5_MEM_ZERO, act_size, 0,\n+\t\t\t\t\t  SOCKET_ID_ANY);\n \t\tif (!ext_actions)\n \t\t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n@@ -4140,7 +4143,7 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n \t * by flow_drv_destroy.\n \t */\n \tflow_qrss_free_id(dev, qrss_id);\n-\trte_free(ext_actions);\n+\tmlx5_free(ext_actions);\n \treturn ret;\n }\n \n@@ -4205,7 +4208,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n #define METER_SUFFIX_ITEM 4\n \t\titem_size = sizeof(struct rte_flow_item) * METER_SUFFIX_ITEM +\n \t\t\t    sizeof(struct mlx5_rte_flow_item_tag) * 2;\n-\t\tsfx_actions = rte_zmalloc(__func__, (act_size + item_size), 0);\n+\t\tsfx_actions = mlx5_malloc(MLX5_MEM_ZERO, (act_size + item_size),\n+\t\t\t\t\t  0, SOCKET_ID_ANY);\n \t\tif (!sfx_actions)\n \t\t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n@@ -4244,7 +4248,7 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n \t\t\t\t\t external, flow_idx, error);\n exit:\n \tif (sfx_actions)\n-\t\trte_free(sfx_actions);\n+\t\tmlx5_free(sfx_actions);\n \treturn ret;\n }\n \n@@ -4658,8 +4662,8 @@ struct rte_flow *\n \t\t}\n \t\tif (priv_fdir_flow) {\n \t\t\tLIST_REMOVE(priv_fdir_flow, next);\n-\t\t\trte_free(priv_fdir_flow->fdir);\n-\t\t\trte_free(priv_fdir_flow);\n+\t\t\tmlx5_free(priv_fdir_flow->fdir);\n+\t\t\tmlx5_free(priv_fdir_flow);\n \t\t}\n \t}\n \tmlx5_ipool_free(priv->sh->ipool[MLX5_IPOOL_RTE_FLOW], flow_idx);\n@@ -4799,11 +4803,12 @@ struct rte_flow *\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n \tif (!priv->inter_flows) {\n-\t\tpriv->inter_flows = rte_calloc(__func__, 1,\n+\t\tpriv->inter_flows = mlx5_malloc(MLX5_MEM_ZERO,\n \t\t\t\t    MLX5_NUM_MAX_DEV_FLOWS *\n \t\t\t\t    sizeof(struct mlx5_flow) +\n \t\t\t\t    (sizeof(struct mlx5_flow_rss_desc) +\n-\t\t\t\t    sizeof(uint16_t) * UINT16_MAX) * 2, 0);\n+\t\t\t\t    sizeof(uint16_t) * UINT16_MAX) * 2, 0,\n+\t\t\t\t    SOCKET_ID_ANY);\n \t\tif (!priv->inter_flows) {\n \t\t\tDRV_LOG(ERR, \"can't allocate intermediate memory.\");\n \t\t\treturn;\n@@ -4827,7 +4832,7 @@ struct rte_flow *\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n-\trte_free(priv->inter_flows);\n+\tmlx5_free(priv->inter_flows);\n \tpriv->inter_flows = NULL;\n }\n \n@@ -5467,7 +5472,8 @@ struct rte_flow *\n \tuint32_t flow_idx;\n \tint ret;\n \n-\tfdir_flow = rte_zmalloc(__func__, sizeof(*fdir_flow), 0);\n+\tfdir_flow = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*fdir_flow), 0,\n+\t\t\t\tSOCKET_ID_ANY);\n \tif (!fdir_flow) {\n \t\trte_errno = ENOMEM;\n \t\treturn -rte_errno;\n@@ -5480,8 +5486,9 @@ struct rte_flow *\n \t\trte_errno = EEXIST;\n \t\tgoto error;\n \t}\n-\tpriv_fdir_flow = rte_zmalloc(__func__, sizeof(struct mlx5_fdir_flow),\n-\t\t\t\t     0);\n+\tpriv_fdir_flow = mlx5_malloc(MLX5_MEM_ZERO,\n+\t\t\t\t     sizeof(struct mlx5_fdir_flow),\n+\t\t\t\t     0, SOCKET_ID_ANY);\n \tif (!priv_fdir_flow) {\n \t\trte_errno = ENOMEM;\n \t\tgoto error;\n@@ -5500,8 +5507,8 @@ struct rte_flow *\n \t\tdev->data->port_id, (void *)flow);\n \treturn 0;\n error:\n-\trte_free(priv_fdir_flow);\n-\trte_free(fdir_flow);\n+\tmlx5_free(priv_fdir_flow);\n+\tmlx5_free(fdir_flow);\n \treturn -rte_errno;\n }\n \n@@ -5541,8 +5548,8 @@ struct rte_flow *\n \tLIST_REMOVE(priv_fdir_flow, next);\n \tflow_idx = priv_fdir_flow->rix_flow;\n \tflow_list_destroy(dev, &priv->flows, flow_idx);\n-\trte_free(priv_fdir_flow->fdir);\n-\trte_free(priv_fdir_flow);\n+\tmlx5_free(priv_fdir_flow->fdir);\n+\tmlx5_free(priv_fdir_flow);\n \tDRV_LOG(DEBUG, \"port %u deleted FDIR flow %u\",\n \t\tdev->data->port_id, flow_idx);\n \treturn 0;\n@@ -5587,8 +5594,8 @@ struct rte_flow *\n \t\tpriv_fdir_flow = LIST_FIRST(&priv->fdir_flows);\n \t\tLIST_REMOVE(priv_fdir_flow, next);\n \t\tflow_list_destroy(dev, &priv->flows, priv_fdir_flow->rix_flow);\n-\t\trte_free(priv_fdir_flow->fdir);\n-\t\trte_free(priv_fdir_flow);\n+\t\tmlx5_free(priv_fdir_flow->fdir);\n+\t\tmlx5_free(priv_fdir_flow);\n \t}\n }\n \ndiff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex 8b5b683..7c121d6 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -32,6 +32,7 @@\n \n #include <mlx5_devx_cmds.h>\n #include <mlx5_prm.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5_defs.h\"\n #include \"mlx5.h\"\n@@ -2615,7 +2616,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t\t(sh->ctx, domain, cache_resource,\n \t\t\t\t\t &cache_resource->action);\n \tif (ret) {\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,\n \t\t\t\t\t  NULL, \"cannot create action\");\n@@ -2772,7 +2773,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t(priv->sh->fdb_domain, resource->port_id,\n \t\t\t\t &cache_resource->action);\n \tif (ret) {\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,\n \t\t\t\t\t  NULL, \"cannot create action\");\n@@ -2851,7 +2852,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t\t(domain, resource->vlan_tag,\n \t\t\t\t\t &cache_resource->action);\n \tif (ret) {\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,\n \t\t\t\t\t  NULL, \"cannot create action\");\n@@ -4024,8 +4025,9 @@ struct field_modify_info modify_tcp[] = {\n \t\t}\n \t}\n \t/* Register new modify-header resource. */\n-\tcache_resource = rte_calloc(__func__, 1,\n-\t\t\t\t    sizeof(*cache_resource) + actions_len, 0);\n+\tcache_resource = mlx5_malloc(MLX5_MEM_ZERO,\n+\t\t\t\t    sizeof(*cache_resource) + actions_len, 0,\n+\t\t\t\t    SOCKET_ID_ANY);\n \tif (!cache_resource)\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,\n@@ -4036,7 +4038,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t\t(sh->ctx, ns, cache_resource,\n \t\t\t\t\t actions_len, &cache_resource->action);\n \tif (ret) {\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,\n \t\t\t\t\t  NULL, \"cannot create action\");\n@@ -4175,7 +4177,8 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tMLX5_COUNTERS_PER_POOL +\n \t\t\tsizeof(struct mlx5_counter_stats_raw)) * raws_n +\n \t\t\tsizeof(struct mlx5_counter_stats_mem_mng);\n-\tuint8_t *mem = rte_calloc(__func__, 1, size, sysconf(_SC_PAGESIZE));\n+\tuint8_t *mem = mlx5_malloc(MLX5_MEM_ZERO, size, sysconf(_SC_PAGESIZE),\n+\t\t\t\t  SOCKET_ID_ANY);\n \tint i;\n \n \tif (!mem) {\n@@ -4188,7 +4191,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t\t\t IBV_ACCESS_LOCAL_WRITE);\n \tif (!mem_mng->umem) {\n \t\trte_errno = errno;\n-\t\trte_free(mem);\n+\t\tmlx5_free(mem);\n \t\treturn NULL;\n \t}\n \tmkey_attr.addr = (uintptr_t)mem;\n@@ -4207,7 +4210,7 @@ struct field_modify_info modify_tcp[] = {\n \tif (!mem_mng->dm) {\n \t\tmlx5_glue->devx_umem_dereg(mem_mng->umem);\n \t\trte_errno = errno;\n-\t\trte_free(mem);\n+\t\tmlx5_free(mem);\n \t\treturn NULL;\n \t}\n \tmem_mng->raws = (struct mlx5_counter_stats_raw *)(mem + size);\n@@ -4244,7 +4247,7 @@ struct field_modify_info modify_tcp[] = {\n \tvoid *old_pools = cont->pools;\n \tuint32_t resize = cont->n + MLX5_CNT_CONTAINER_RESIZE;\n \tuint32_t mem_size = sizeof(struct mlx5_flow_counter_pool *) * resize;\n-\tvoid *pools = rte_calloc(__func__, 1, mem_size, 0);\n+\tvoid *pools = mlx5_malloc(MLX5_MEM_ZERO, mem_size, 0, SOCKET_ID_ANY);\n \n \tif (!pools) {\n \t\trte_errno = ENOMEM;\n@@ -4263,7 +4266,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tmem_mng = flow_dv_create_counter_stat_mem_mng(dev,\n \t\t\t  MLX5_CNT_CONTAINER_RESIZE + MLX5_MAX_PENDING_QUERIES);\n \t\tif (!mem_mng) {\n-\t\t\trte_free(pools);\n+\t\t\tmlx5_free(pools);\n \t\t\treturn -ENOMEM;\n \t\t}\n \t\tfor (i = 0; i < MLX5_MAX_PENDING_QUERIES; ++i)\n@@ -4278,7 +4281,7 @@ struct field_modify_info modify_tcp[] = {\n \tcont->pools = pools;\n \trte_spinlock_unlock(&cont->resize_sl);\n \tif (old_pools)\n-\t\trte_free(old_pools);\n+\t\tmlx5_free(old_pools);\n \treturn 0;\n }\n \n@@ -4367,7 +4370,7 @@ struct field_modify_info modify_tcp[] = {\n \tsize += MLX5_COUNTERS_PER_POOL * CNT_SIZE;\n \tsize += (batch ? 0 : MLX5_COUNTERS_PER_POOL * CNTEXT_SIZE);\n \tsize += (!age ? 0 : MLX5_COUNTERS_PER_POOL * AGE_SIZE);\n-\tpool = rte_calloc(__func__, 1, size, 0);\n+\tpool = mlx5_malloc(MLX5_MEM_ZERO, size, 0, SOCKET_ID_ANY);\n \tif (!pool) {\n \t\trte_errno = ENOMEM;\n \t\treturn NULL;\n@@ -7467,7 +7470,8 @@ struct field_modify_info modify_tcp[] = {\n \t\t}\n \t}\n \t/* Register new matcher. */\n-\tcache_matcher = rte_calloc(__func__, 1, sizeof(*cache_matcher), 0);\n+\tcache_matcher = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*cache_matcher), 0,\n+\t\t\t\t    SOCKET_ID_ANY);\n \tif (!cache_matcher) {\n \t\tflow_dv_tbl_resource_release(dev, tbl);\n \t\treturn rte_flow_error_set(error, ENOMEM,\n@@ -7483,7 +7487,7 @@ struct field_modify_info modify_tcp[] = {\n \tret = mlx5_flow_os_create_flow_matcher(sh->ctx, &dv_attr, tbl->obj,\n \t\t\t\t\t       &cache_matcher->matcher_object);\n \tif (ret) {\n-\t\trte_free(cache_matcher);\n+\t\tmlx5_free(cache_matcher);\n #ifdef HAVE_MLX5DV_DR\n \t\tflow_dv_tbl_resource_release(dev, tbl);\n #endif\n@@ -7558,7 +7562,7 @@ struct field_modify_info modify_tcp[] = {\n \tret = mlx5_flow_os_create_flow_action_tag(tag_be24,\n \t\t\t\t\t\t  &cache_resource->action);\n \tif (ret) {\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,\n \t\t\t\t\t  NULL, \"cannot create action\");\n@@ -7567,7 +7571,7 @@ struct field_modify_info modify_tcp[] = {\n \trte_atomic32_inc(&cache_resource->refcnt);\n \tif (mlx5_hlist_insert(sh->tag_table, &cache_resource->entry)) {\n \t\tmlx5_flow_os_destroy_flow_action(cache_resource->action);\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\treturn rte_flow_error_set(error, EEXIST,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,\n \t\t\t\t\t  NULL, \"cannot insert tag\");\n@@ -8769,7 +8773,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tLIST_REMOVE(matcher, next);\n \t\t/* table ref-- in release interface. */\n \t\tflow_dv_tbl_resource_release(dev, matcher->tbl);\n-\t\trte_free(matcher);\n+\t\tmlx5_free(matcher);\n \t\tDRV_LOG(DEBUG, \"port %u matcher %p: removed\",\n \t\t\tdev->data->port_id, (void *)matcher);\n \t\treturn 0;\n@@ -8911,7 +8915,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tclaim_zero(mlx5_flow_os_destroy_flow_action\n \t\t\t\t\t\t(cache_resource->action));\n \t\tLIST_REMOVE(cache_resource, next);\n-\t\trte_free(cache_resource);\n+\t\tmlx5_free(cache_resource);\n \t\tDRV_LOG(DEBUG, \"modify-header resource %p: removed\",\n \t\t\t(void *)cache_resource);\n \t\treturn 0;\n@@ -9284,7 +9288,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tflow_dv_tbl_resource_release(dev, mtd->transfer.sfx_tbl);\n \tif (mtd->drop_actn)\n \t\tclaim_zero(mlx5_flow_os_destroy_flow_action(mtd->drop_actn));\n-\trte_free(mtd);\n+\tmlx5_free(mtd);\n \treturn 0;\n }\n \n@@ -9417,7 +9421,7 @@ struct field_modify_info modify_tcp[] = {\n \t\trte_errno = ENOTSUP;\n \t\treturn NULL;\n \t}\n-\tmtb = rte_calloc(__func__, 1, sizeof(*mtb), 0);\n+\tmtb = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*mtb), 0, SOCKET_ID_ANY);\n \tif (!mtb) {\n \t\tDRV_LOG(ERR, \"Failed to allocate memory for meter.\");\n \t\treturn NULL;\ndiff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c\nindex 86c334b..bf34687 100644\n--- a/drivers/net/mlx5/mlx5_flow_meter.c\n+++ b/drivers/net/mlx5/mlx5_flow_meter.c\n@@ -10,6 +10,7 @@\n #include <rte_mtr_driver.h>\n \n #include <mlx5_devx_cmds.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5.h\"\n #include \"mlx5_flow.h\"\n@@ -356,8 +357,8 @@\n \tif (ret)\n \t\treturn ret;\n \t/* Meter profile memory allocation. */\n-\tfmp = rte_calloc(__func__, 1, sizeof(struct mlx5_flow_meter_profile),\n-\t\t\t RTE_CACHE_LINE_SIZE);\n+\tfmp = mlx5_malloc(MLX5_MEM_ZERO, sizeof(struct mlx5_flow_meter_profile),\n+\t\t\t RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);\n \tif (fmp == NULL)\n \t\treturn -rte_mtr_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_MTR_ERROR_TYPE_UNSPECIFIED,\n@@ -374,7 +375,7 @@\n \tTAILQ_INSERT_TAIL(fmps, fmp, next);\n \treturn 0;\n error:\n-\trte_free(fmp);\n+\tmlx5_free(fmp);\n \treturn ret;\n }\n \n@@ -417,7 +418,7 @@\n \t\t\t\t\t  NULL, \"Meter profile is in use.\");\n \t/* Remove from list. */\n \tTAILQ_REMOVE(&priv->flow_meter_profiles, fmp, next);\n-\trte_free(fmp);\n+\tmlx5_free(fmp);\n \treturn 0;\n }\n \n@@ -1286,7 +1287,7 @@ struct mlx5_flow_meter *\n \t\tMLX5_ASSERT(!fmp->ref_cnt);\n \t\t/* Remove from list. */\n \t\tTAILQ_REMOVE(&priv->flow_meter_profiles, fmp, next);\n-\t\trte_free(fmp);\n+\t\tmlx5_free(fmp);\n \t}\n \treturn 0;\n }\ndiff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c\nindex 781c97f..72106b4 100644\n--- a/drivers/net/mlx5/mlx5_flow_verbs.c\n+++ b/drivers/net/mlx5/mlx5_flow_verbs.c\n@@ -28,6 +28,7 @@\n \n #include <mlx5_glue.h>\n #include <mlx5_prm.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5_defs.h\"\n #include \"mlx5.h\"\n@@ -188,14 +189,15 @@\n \t\t\t/* Resize the container pool array. */\n \t\t\tsize = sizeof(struct mlx5_flow_counter_pool *) *\n \t\t\t\t     (n_valid + MLX5_CNT_CONTAINER_RESIZE);\n-\t\t\tpools = rte_zmalloc(__func__, size, 0);\n+\t\t\tpools = mlx5_malloc(MLX5_MEM_ZERO, size, 0,\n+\t\t\t\t\t    SOCKET_ID_ANY);\n \t\t\tif (!pools)\n \t\t\t\treturn 0;\n \t\t\tif (n_valid) {\n \t\t\t\tmemcpy(pools, cont->pools,\n \t\t\t\t       sizeof(struct mlx5_flow_counter_pool *) *\n \t\t\t\t       n_valid);\n-\t\t\t\trte_free(cont->pools);\n+\t\t\t\tmlx5_free(cont->pools);\n \t\t\t}\n \t\t\tcont->pools = pools;\n \t\t\tcont->n += MLX5_CNT_CONTAINER_RESIZE;\n@@ -203,7 +205,7 @@\n \t\t/* Allocate memory for new pool*/\n \t\tsize = sizeof(*pool) + (sizeof(*cnt_ext) + sizeof(*cnt)) *\n \t\t       MLX5_COUNTERS_PER_POOL;\n-\t\tpool = rte_calloc(__func__, 1, size, 0);\n+\t\tpool = mlx5_malloc(MLX5_MEM_ZERO, size, 0, SOCKET_ID_ANY);\n \t\tif (!pool)\n \t\t\treturn 0;\n \t\tpool->type |= CNT_POOL_TYPE_EXT;\ndiff --git a/drivers/net/mlx5/mlx5_mp.c b/drivers/net/mlx5/mlx5_mp.c\nindex a2b5c40..cf6e33b 100644\n--- a/drivers/net/mlx5/mlx5_mp.c\n+++ b/drivers/net/mlx5/mlx5_mp.c\n@@ -12,6 +12,7 @@\n \n #include <mlx5_common_mp.h>\n #include <mlx5_common_mr.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5.h\"\n #include \"mlx5_rxtx.h\"\n@@ -181,7 +182,7 @@\n \t\t}\n \t}\n exit:\n-\tfree(mp_rep.msgs);\n+\tmlx5_free(mp_rep.msgs);\n }\n \n /**\ndiff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c\nindex 653b069..a49edbc 100644\n--- a/drivers/net/mlx5/mlx5_rss.c\n+++ b/drivers/net/mlx5/mlx5_rss.c\n@@ -21,6 +21,8 @@\n #include <rte_malloc.h>\n #include <rte_ethdev_driver.h>\n \n+#include <mlx5_malloc.h>\n+\n #include \"mlx5_defs.h\"\n #include \"mlx5.h\"\n #include \"mlx5_rxtx.h\"\n@@ -57,8 +59,10 @@\n \t\t\trte_errno = EINVAL;\n \t\t\treturn -rte_errno;\n \t\t}\n-\t\tpriv->rss_conf.rss_key = rte_realloc(priv->rss_conf.rss_key,\n-\t\t\t\t\t\t     rss_conf->rss_key_len, 0);\n+\t\tpriv->rss_conf.rss_key = mlx5_realloc(priv->rss_conf.rss_key,\n+\t\t\t\t\t\t      MLX5_MEM_RTE,\n+\t\t\t\t\t\t      rss_conf->rss_key_len,\n+\t\t\t\t\t\t      0, SOCKET_ID_ANY);\n \t\tif (!priv->rss_conf.rss_key) {\n \t\t\trte_errno = ENOMEM;\n \t\t\treturn -rte_errno;\n@@ -131,8 +135,9 @@\n \tif (priv->reta_idx_n == reta_size)\n \t\treturn 0;\n \n-\tmem = rte_realloc(priv->reta_idx,\n-\t\t\t  reta_size * sizeof((*priv->reta_idx)[0]), 0);\n+\tmem = mlx5_realloc(priv->reta_idx, MLX5_MEM_RTE,\n+\t\t\t   reta_size * sizeof((*priv->reta_idx)[0]), 0,\n+\t\t\t   SOCKET_ID_ANY);\n \tif (!mem) {\n \t\trte_errno = ENOMEM;\n \t\treturn -rte_errno;\ndiff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c\nindex b436f06..c8e3a82 100644\n--- a/drivers/net/mlx5/mlx5_rxq.c\n+++ b/drivers/net/mlx5/mlx5_rxq.c\n@@ -31,6 +31,7 @@\n \n #include <mlx5_glue.h>\n #include <mlx5_devx_cmds.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5_defs.h\"\n #include \"mlx5.h\"\n@@ -734,7 +735,9 @@\n \tif (!dev->data->dev_conf.intr_conf.rxq)\n \t\treturn 0;\n \tmlx5_rx_intr_vec_disable(dev);\n-\tintr_handle->intr_vec = malloc(n * sizeof(intr_handle->intr_vec[0]));\n+\tintr_handle->intr_vec = mlx5_malloc(0,\n+\t\t\t\tn * sizeof(intr_handle->intr_vec[0]),\n+\t\t\t\t0, SOCKET_ID_ANY);\n \tif (intr_handle->intr_vec == NULL) {\n \t\tDRV_LOG(ERR,\n \t\t\t\"port %u failed to allocate memory for interrupt\"\n@@ -831,7 +834,7 @@\n free:\n \trte_intr_free_epoll_fd(intr_handle);\n \tif (intr_handle->intr_vec)\n-\t\tfree(intr_handle->intr_vec);\n+\t\tmlx5_free(intr_handle->intr_vec);\n \tintr_handle->nb_efd = 0;\n \tintr_handle->intr_vec = NULL;\n }\n@@ -2187,8 +2190,8 @@ enum mlx5_rxq_type\n \tstruct mlx5_ind_table_obj *ind_tbl;\n \tunsigned int i = 0, j = 0, k = 0;\n \n-\tind_tbl = rte_calloc(__func__, 1, sizeof(*ind_tbl) +\n-\t\t\t     queues_n * sizeof(uint16_t), 0);\n+\tind_tbl = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*ind_tbl) +\n+\t\t\t      queues_n * sizeof(uint16_t), 0, SOCKET_ID_ANY);\n \tif (!ind_tbl) {\n \t\trte_errno = ENOMEM;\n \t\treturn NULL;\n@@ -2231,8 +2234,9 @@ enum mlx5_rxq_type\n \t\t\t      log2above(queues_n) :\n \t\t\t      log2above(priv->config.ind_table_max_size));\n \n-\t\trqt_attr = rte_calloc(__func__, 1, sizeof(*rqt_attr) +\n-\t\t\t\t      rqt_n * sizeof(uint32_t), 0);\n+\t\trqt_attr = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rqt_attr) +\n+\t\t\t\t      rqt_n * sizeof(uint32_t), 0,\n+\t\t\t\t      SOCKET_ID_ANY);\n \t\tif (!rqt_attr) {\n \t\t\tDRV_LOG(ERR, \"port %u cannot allocate RQT resources\",\n \t\t\t\tdev->data->port_id);\n@@ -2254,7 +2258,7 @@ enum mlx5_rxq_type\n \t\t\trqt_attr->rq_list[k] = rqt_attr->rq_list[j];\n \t\tind_tbl->rqt = mlx5_devx_cmd_create_rqt(priv->sh->ctx,\n \t\t\t\t\t\t\trqt_attr);\n-\t\trte_free(rqt_attr);\n+\t\tmlx5_free(rqt_attr);\n \t\tif (!ind_tbl->rqt) {\n \t\t\tDRV_LOG(ERR, \"port %u cannot create DevX RQT\",\n \t\t\t\tdev->data->port_id);\n@@ -2269,7 +2273,7 @@ enum mlx5_rxq_type\n error:\n \tfor (j = 0; j < i; j++)\n \t\tmlx5_rxq_release(dev, ind_tbl->queues[j]);\n-\trte_free(ind_tbl);\n+\tmlx5_free(ind_tbl);\n \tDEBUG(\"port %u cannot create indirection table\", dev->data->port_id);\n \treturn NULL;\n }\n@@ -2339,7 +2343,7 @@ enum mlx5_rxq_type\n \t\tclaim_nonzero(mlx5_rxq_release(dev, ind_tbl->queues[i]));\n \tif (!rte_atomic32_read(&ind_tbl->refcnt)) {\n \t\tLIST_REMOVE(ind_tbl, next);\n-\t\trte_free(ind_tbl);\n+\t\tmlx5_free(ind_tbl);\n \t\treturn 0;\n \t}\n \treturn 1;\n@@ -2761,7 +2765,7 @@ enum mlx5_rxq_type\n \t\trte_errno = errno;\n \t\tgoto error;\n \t}\n-\trxq = rte_calloc(__func__, 1, sizeof(*rxq), 0);\n+\trxq = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq), 0, SOCKET_ID_ANY);\n \tif (!rxq) {\n \t\tDEBUG(\"port %u cannot allocate drop Rx queue memory\",\n \t\t      dev->data->port_id);\n@@ -2799,7 +2803,7 @@ enum mlx5_rxq_type\n \t\tclaim_zero(mlx5_glue->destroy_wq(rxq->wq));\n \tif (rxq->cq)\n \t\tclaim_zero(mlx5_glue->destroy_cq(rxq->cq));\n-\trte_free(rxq);\n+\tmlx5_free(rxq);\n \tpriv->drop_queue.rxq = NULL;\n }\n \n@@ -2837,7 +2841,8 @@ enum mlx5_rxq_type\n \t\trte_errno = errno;\n \t\tgoto error;\n \t}\n-\tind_tbl = rte_calloc(__func__, 1, sizeof(*ind_tbl), 0);\n+\tind_tbl = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*ind_tbl), 0,\n+\t\t\t      SOCKET_ID_ANY);\n \tif (!ind_tbl) {\n \t\trte_errno = ENOMEM;\n \t\tgoto error;\n@@ -2863,7 +2868,7 @@ enum mlx5_rxq_type\n \n \tclaim_zero(mlx5_glue->destroy_rwq_ind_table(ind_tbl->ind_table));\n \tmlx5_rxq_obj_drop_release(dev);\n-\trte_free(ind_tbl);\n+\tmlx5_free(ind_tbl);\n \tpriv->drop_queue.hrxq->ind_table = NULL;\n }\n \n@@ -2888,7 +2893,7 @@ struct mlx5_hrxq *\n \t\trte_atomic32_inc(&priv->drop_queue.hrxq->refcnt);\n \t\treturn priv->drop_queue.hrxq;\n \t}\n-\thrxq = rte_calloc(__func__, 1, sizeof(*hrxq), 0);\n+\thrxq = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*hrxq), 0, SOCKET_ID_ANY);\n \tif (!hrxq) {\n \t\tDRV_LOG(WARNING,\n \t\t\t\"port %u cannot allocate memory for drop queue\",\n@@ -2945,7 +2950,7 @@ struct mlx5_hrxq *\n \t\tmlx5_ind_table_obj_drop_release(dev);\n \tif (hrxq) {\n \t\tpriv->drop_queue.hrxq = NULL;\n-\t\trte_free(hrxq);\n+\t\tmlx5_free(hrxq);\n \t}\n \treturn NULL;\n }\n@@ -2968,7 +2973,7 @@ struct mlx5_hrxq *\n #endif\n \t\tclaim_zero(mlx5_glue->destroy_qp(hrxq->qp));\n \t\tmlx5_ind_table_obj_drop_release(dev);\n-\t\trte_free(hrxq);\n+\t\tmlx5_free(hrxq);\n \t\tpriv->drop_queue.hrxq = NULL;\n \t}\n }\ndiff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c\nindex bf67192..25e8b27 100644\n--- a/drivers/net/mlx5/mlx5_utils.c\n+++ b/drivers/net/mlx5/mlx5_utils.c\n@@ -5,6 +5,8 @@\n #include <rte_malloc.h>\n #include <rte_hash_crc.h>\n \n+#include <mlx5_malloc.h>\n+\n #include \"mlx5_utils.h\"\n \n struct mlx5_hlist *\n@@ -27,7 +29,8 @@ struct mlx5_hlist *\n \talloc_size = sizeof(struct mlx5_hlist) +\n \t\t     sizeof(struct mlx5_hlist_head) * act_size;\n \t/* Using zmalloc, then no need to initialize the heads. */\n-\th = rte_zmalloc(name, alloc_size, RTE_CACHE_LINE_SIZE);\n+\th = mlx5_malloc(MLX5_MEM_ZERO, alloc_size, RTE_CACHE_LINE_SIZE,\n+\t\t\tSOCKET_ID_ANY);\n \tif (!h) {\n \t\tDRV_LOG(ERR, \"No memory for hash list %s creation\",\n \t\t\tname ? name : \"None\");\n@@ -112,10 +115,10 @@ struct mlx5_hlist_entry *\n \t\t\tif (cb)\n \t\t\t\tcb(entry, ctx);\n \t\t\telse\n-\t\t\t\trte_free(entry);\n+\t\t\t\tmlx5_free(entry);\n \t\t}\n \t}\n-\trte_free(h);\n+\tmlx5_free(h);\n }\n \n static inline void\n@@ -193,16 +196,17 @@ struct mlx5_indexed_pool *\n \t    (cfg->trunk_size && ((cfg->trunk_size & (cfg->trunk_size - 1)) ||\n \t    ((__builtin_ffs(cfg->trunk_size) + TRUNK_IDX_BITS) > 32))))\n \t\treturn NULL;\n-\tpool = rte_zmalloc(\"mlx5_ipool\", sizeof(*pool) + cfg->grow_trunk *\n-\t\t\t\tsizeof(pool->grow_tbl[0]), RTE_CACHE_LINE_SIZE);\n+\tpool = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*pool) + cfg->grow_trunk *\n+\t\t\t   sizeof(pool->grow_tbl[0]), RTE_CACHE_LINE_SIZE,\n+\t\t\t   SOCKET_ID_ANY);\n \tif (!pool)\n \t\treturn NULL;\n \tpool->cfg = *cfg;\n \tif (!pool->cfg.trunk_size)\n \t\tpool->cfg.trunk_size = MLX5_IPOOL_DEFAULT_TRUNK_SIZE;\n \tif (!cfg->malloc && !cfg->free) {\n-\t\tpool->cfg.malloc = rte_malloc_socket;\n-\t\tpool->cfg.free = rte_free;\n+\t\tpool->cfg.malloc = mlx5_malloc;\n+\t\tpool->cfg.free = mlx5_free;\n \t}\n \tpool->free_list = TRUNK_INVALID;\n \tif (pool->cfg.need_lock)\n@@ -237,10 +241,9 @@ struct mlx5_indexed_pool *\n \t\tint n_grow = pool->n_trunk_valid ? pool->n_trunk :\n \t\t\t     RTE_CACHE_LINE_SIZE / sizeof(void *);\n \n-\t\tp = pool->cfg.malloc(pool->cfg.type,\n-\t\t\t\t (pool->n_trunk_valid + n_grow) *\n-\t\t\t\t sizeof(struct mlx5_indexed_trunk *),\n-\t\t\t\t RTE_CACHE_LINE_SIZE, rte_socket_id());\n+\t\tp = pool->cfg.malloc(0, (pool->n_trunk_valid + n_grow) *\n+\t\t\t\t     sizeof(struct mlx5_indexed_trunk *),\n+\t\t\t\t     RTE_CACHE_LINE_SIZE, rte_socket_id());\n \t\tif (!p)\n \t\t\treturn -ENOMEM;\n \t\tif (pool->trunks)\n@@ -268,7 +271,7 @@ struct mlx5_indexed_pool *\n \t/* rte_bitmap requires memory cacheline aligned. */\n \ttrunk_size += RTE_CACHE_LINE_ROUNDUP(data_size * pool->cfg.size);\n \ttrunk_size += bmp_size;\n-\ttrunk = pool->cfg.malloc(pool->cfg.type, trunk_size,\n+\ttrunk = pool->cfg.malloc(0, trunk_size,\n \t\t\t\t RTE_CACHE_LINE_SIZE, rte_socket_id());\n \tif (!trunk)\n \t\treturn -ENOMEM;\n@@ -464,7 +467,7 @@ struct mlx5_indexed_pool *\n \tif (!pool->trunks)\n \t\tpool->cfg.free(pool->trunks);\n \tmlx5_ipool_unlock(pool);\n-\trte_free(pool);\n+\tmlx5_free(pool);\n \treturn 0;\n }\n \n@@ -493,15 +496,16 @@ struct mlx5_l3t_tbl *\n \t\t.grow_shift = 1,\n \t\t.need_lock = 0,\n \t\t.release_mem_en = 1,\n-\t\t.malloc = rte_malloc_socket,\n-\t\t.free = rte_free,\n+\t\t.malloc = mlx5_malloc,\n+\t\t.free = mlx5_free,\n \t};\n \n \tif (type >= MLX5_L3T_TYPE_MAX) {\n \t\trte_errno = EINVAL;\n \t\treturn NULL;\n \t}\n-\ttbl = rte_zmalloc(NULL, sizeof(struct mlx5_l3t_tbl), 1);\n+\ttbl = mlx5_malloc(MLX5_MEM_ZERO, sizeof(struct mlx5_l3t_tbl), 1,\n+\t\t\t  SOCKET_ID_ANY);\n \tif (!tbl) {\n \t\trte_errno = ENOMEM;\n \t\treturn NULL;\n@@ -532,7 +536,7 @@ struct mlx5_l3t_tbl *\n \ttbl->eip = mlx5_ipool_create(&l3t_ip_cfg);\n \tif (!tbl->eip) {\n \t\trte_errno = ENOMEM;\n-\t\trte_free(tbl);\n+\t\tmlx5_free(tbl);\n \t\ttbl = NULL;\n \t}\n \treturn tbl;\n@@ -565,17 +569,17 @@ struct mlx5_l3t_tbl *\n \t\t\t\t\tbreak;\n \t\t\t}\n \t\t\tMLX5_ASSERT(!m_tbl->ref_cnt);\n-\t\t\trte_free(g_tbl->tbl[i]);\n+\t\t\tmlx5_free(g_tbl->tbl[i]);\n \t\t\tg_tbl->tbl[i] = 0;\n \t\t\tif (!(--g_tbl->ref_cnt))\n \t\t\t\tbreak;\n \t\t}\n \t\tMLX5_ASSERT(!g_tbl->ref_cnt);\n-\t\trte_free(tbl->tbl);\n+\t\tmlx5_free(tbl->tbl);\n \t\ttbl->tbl = 0;\n \t}\n \tmlx5_ipool_destroy(tbl->eip);\n-\trte_free(tbl);\n+\tmlx5_free(tbl);\n }\n \n uint32_t\n@@ -667,11 +671,11 @@ struct mlx5_l3t_tbl *\n \t\tm_tbl->tbl[(idx >> MLX5_L3T_MT_OFFSET) & MLX5_L3T_MT_MASK] =\n \t\t\t\t\t\t\t\t\tNULL;\n \t\tif (!(--m_tbl->ref_cnt)) {\n-\t\t\trte_free(m_tbl);\n+\t\t\tmlx5_free(m_tbl);\n \t\t\tg_tbl->tbl\n \t\t\t[(idx >> MLX5_L3T_GT_OFFSET) & MLX5_L3T_GT_MASK] = NULL;\n \t\t\tif (!(--g_tbl->ref_cnt)) {\n-\t\t\t\trte_free(g_tbl);\n+\t\t\t\tmlx5_free(g_tbl);\n \t\t\t\ttbl->tbl = 0;\n \t\t\t}\n \t\t}\n@@ -693,8 +697,10 @@ struct mlx5_l3t_tbl *\n \t/* Check the global table, create it if empty. */\n \tg_tbl = tbl->tbl;\n \tif (!g_tbl) {\n-\t\tg_tbl = rte_zmalloc(NULL, sizeof(struct mlx5_l3t_level_tbl) +\n-\t\t\t\t    sizeof(void *) * MLX5_L3T_GT_SIZE, 1);\n+\t\tg_tbl = mlx5_malloc(MLX5_MEM_ZERO,\n+\t\t\t\t    sizeof(struct mlx5_l3t_level_tbl) +\n+\t\t\t\t    sizeof(void *) * MLX5_L3T_GT_SIZE, 1,\n+\t\t\t\t    SOCKET_ID_ANY);\n \t\tif (!g_tbl) {\n \t\t\trte_errno = ENOMEM;\n \t\t\treturn -1;\n@@ -707,8 +713,10 @@ struct mlx5_l3t_tbl *\n \t */\n \tm_tbl = g_tbl->tbl[(idx >> MLX5_L3T_GT_OFFSET) & MLX5_L3T_GT_MASK];\n \tif (!m_tbl) {\n-\t\tm_tbl = rte_zmalloc(NULL, sizeof(struct mlx5_l3t_level_tbl) +\n-\t\t\t\t    sizeof(void *) * MLX5_L3T_MT_SIZE, 1);\n+\t\tm_tbl = mlx5_malloc(MLX5_MEM_ZERO,\n+\t\t\t\t    sizeof(struct mlx5_l3t_level_tbl) +\n+\t\t\t\t    sizeof(void *) * MLX5_L3T_MT_SIZE, 1,\n+\t\t\t\t    SOCKET_ID_ANY);\n \t\tif (!m_tbl) {\n \t\t\trte_errno = ENOMEM;\n \t\t\treturn -1;\ndiff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h\nindex c4b9063..562b9b1 100644\n--- a/drivers/net/mlx5/mlx5_utils.h\n+++ b/drivers/net/mlx5/mlx5_utils.h\n@@ -193,7 +193,7 @@ struct mlx5_indexed_pool_config {\n \t/* Lock is needed for multiple thread usage. */\n \tuint32_t release_mem_en:1; /* Rlease trunk when it is free. */\n \tconst char *type; /* Memory allocate type name. */\n-\tvoid *(*malloc)(const char *type, size_t size, unsigned int align,\n+\tvoid *(*malloc)(uint32_t flags, size_t size, unsigned int align,\n \t\t\tint socket);\n \t/* User defined memory allocator. */\n \tvoid (*free)(void *addr); /* User defined memory release. */\ndiff --git a/drivers/net/mlx5/mlx5_vlan.c b/drivers/net/mlx5/mlx5_vlan.c\nindex f65e416..4308b71 100644\n--- a/drivers/net/mlx5/mlx5_vlan.c\n+++ b/drivers/net/mlx5/mlx5_vlan.c\n@@ -33,6 +33,7 @@\n #include <mlx5_glue.h>\n #include <mlx5_devx_cmds.h>\n #include <mlx5_nl.h>\n+#include <mlx5_malloc.h>\n \n #include \"mlx5.h\"\n #include \"mlx5_autoconf.h\"\n@@ -288,7 +289,8 @@ struct mlx5_nl_vlan_vmwa_context *\n \t\t */\n \t\treturn NULL;\n \t}\n-\tvmwa = rte_zmalloc(__func__, sizeof(*vmwa), sizeof(uint32_t));\n+\tvmwa = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*vmwa), sizeof(uint32_t),\n+\t\t\t   SOCKET_ID_ANY);\n \tif (!vmwa) {\n \t\tDRV_LOG(WARNING,\n \t\t\t\"Can not allocate memory\"\n@@ -300,7 +302,7 @@ struct mlx5_nl_vlan_vmwa_context *\n \t\tDRV_LOG(WARNING,\n \t\t\t\"Can not create Netlink socket\"\n \t\t\t\" for VLAN workaround context\");\n-\t\trte_free(vmwa);\n+\t\tmlx5_free(vmwa);\n \t\treturn NULL;\n \t}\n \tvmwa->vf_ifindex = ifindex;\n@@ -323,5 +325,5 @@ void mlx5_vlan_vmwa_exit(struct mlx5_nl_vlan_vmwa_context *vmwa)\n \t}\n \tif (vmwa->nl_socket >= 0)\n \t\tclose(vmwa->nl_socket);\n-\trte_free(vmwa);\n+\tmlx5_free(vmwa);\n }\n",
    "prefixes": [
        "3/7"
    ]
}