Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/64505/?format=api
http://patchwork.dpdk.org/api/patches/64505/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20200113043609.27363-4-kalesh-anakkur.purayil@broadcom.com/", "project": { "id": 1, "url": "http://patchwork.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": "<20200113043609.27363-4-kalesh-anakkur.purayil@broadcom.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20200113043609.27363-4-kalesh-anakkur.purayil@broadcom.com", "date": "2020-01-13T04:36:02", "name": "[03/10] net/bnxt: fix to use correct IOVA mapping", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "e7770649da54374a252f9912cbe500776d7c70c5", "submitter": { "id": 1479, "url": "http://patchwork.dpdk.org/api/people/1479/?format=api", "name": "Kalesh A P", "email": "kalesh-anakkur.purayil@broadcom.com" }, "delegate": { "id": 1766, "url": "http://patchwork.dpdk.org/api/users/1766/?format=api", "username": "ajitkhaparde", "first_name": "Ajit", "last_name": "Khaparde", "email": "ajit.khaparde@broadcom.com" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20200113043609.27363-4-kalesh-anakkur.purayil@broadcom.com/mbox/", "series": [ { "id": 8066, "url": "http://patchwork.dpdk.org/api/series/8066/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=8066", "date": "2020-01-13T04:35:59", "name": "bnxt patch set with fixes", "version": 1, "mbox": "http://patchwork.dpdk.org/series/8066/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/64505/comments/", "check": "success", "checks": "http://patchwork.dpdk.org/api/patches/64505/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 1211DA04F0;\n\tMon, 13 Jan 2020 05:19:31 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 739861D5A2;\n\tMon, 13 Jan 2020 05:19:12 +0100 (CET)", "from relay.smtp.broadcom.com (relay.smtp.broadcom.com\n [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 18C0B1D57A\n for <dev@dpdk.org>; Mon, 13 Jan 2020 05:19:06 +0100 (CET)", "from dhcp-10-123-153-22.dhcp.broadcom.net\n (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22])\n by relay.smtp.broadcom.com (Postfix) with ESMTP id CD2641BDD10;\n Sun, 12 Jan 2020 20:19:04 -0800 (PST)" ], "DKIM-Filter": "OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com CD2641BDD10", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1578889145;\n bh=+2j81bNLKXFrvTi5p6V4jG/g3KMsukxl/0dIEcN9F/E=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=fxM5zj6my3pqXs4f5clOe3WmT+D/x3gaOCZXmp/yZ4Zh0OfsqflQjxjXqXQn7ZMBj\n GXFHxGQ2uG4JLbFimKsKKiFGgm5OnRtj06sl+Ork3+FKNskVOmTLCuBg2NDlOgBKzb\n 1n6wRzhtIRiNdhEWhejtNhMyCdS+E6VBBT8JuARU=", "From": "Kalesh A P <kalesh-anakkur.purayil@broadcom.com>", "To": "dev@dpdk.org,\n\tajit.khaparde@broadcom.com", "Cc": "ferruh.yigit@intel.com", "Date": "Mon, 13 Jan 2020 10:06:02 +0530", "Message-Id": "<20200113043609.27363-4-kalesh-anakkur.purayil@broadcom.com>", "X-Mailer": "git-send-email 2.10.1", "In-Reply-To": "<20200113043609.27363-1-kalesh-anakkur.purayil@broadcom.com>", "References": "<20200113043609.27363-1-kalesh-anakkur.purayil@broadcom.com>", "Subject": "[dpdk-dev] [PATCH 03/10] net/bnxt: fix to use correct IOVA mapping", "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": "From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\n\nUse rte_malloc_virt2iova() to obtain the IO address of a\nvirtual address obtained through rte_malloc().\n\nFixed to use the iova address returned by rte_memzone_reserve_aligned()\nas the call always returns with populating \"mz->iova\" with\nrte_malloc_virt2iova(mz->addr).\n\nRemoved redundant rte_mem_lock_page() call to lock the pages.\n\nSigned-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\nReviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>\nReviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt_ethdev.c | 49 ------------------------------------------\n drivers/net/bnxt/bnxt_hwrm.c | 28 ++++++++++--------------\n drivers/net/bnxt/bnxt_ring.c | 17 ---------------\n drivers/net/bnxt/bnxt_vnic.c | 11 ----------\n 4 files changed, 11 insertions(+), 94 deletions(-)", "diff": "diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 879ea58..a948c78 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -4233,18 +4233,6 @@ static int bnxt_alloc_ctx_mem_blk(struct bnxt *bp,\n \n \t\tmemset(mz->addr, 0, mz->len);\n \t\tmz_phys_addr = mz->iova;\n-\t\tif ((unsigned long)mz->addr == mz_phys_addr) {\n-\t\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t\t \"physical address same as virtual\\n\");\n-\t\t\tPMD_DRV_LOG(DEBUG, \"Using rte_mem_virt2iova()\\n\");\n-\t\t\tmz_phys_addr = rte_mem_virt2iova(mz->addr);\n-\t\t\tif (mz_phys_addr == RTE_BAD_IOVA) {\n-\t\t\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\t\t\"unable to map addr to phys memory\\n\");\n-\t\t\t\treturn -ENOMEM;\n-\t\t\t}\n-\t\t}\n-\t\trte_mem_lock_page(((char *)mz->addr));\n \n \t\trmem->pg_tbl = mz->addr;\n \t\trmem->pg_tbl_map = mz_phys_addr;\n@@ -4268,22 +4256,8 @@ static int bnxt_alloc_ctx_mem_blk(struct bnxt *bp,\n \n \tmemset(mz->addr, 0, mz->len);\n \tmz_phys_addr = mz->iova;\n-\tif ((unsigned long)mz->addr == mz_phys_addr) {\n-\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t \"Memzone physical address same as virtual.\\n\");\n-\t\tPMD_DRV_LOG(DEBUG, \"Using rte_mem_virt2iova()\\n\");\n-\t\tfor (sz = 0; sz < mem_size; sz += BNXT_PAGE_SIZE)\n-\t\t\trte_mem_lock_page(((char *)mz->addr) + sz);\n-\t\tmz_phys_addr = rte_mem_virt2iova(mz->addr);\n-\t\tif (mz_phys_addr == RTE_BAD_IOVA) {\n-\t\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\t \"unable to map addr to phys memory\\n\");\n-\t\t\treturn -ENOMEM;\n-\t\t}\n-\t}\n \n \tfor (sz = 0, i = 0; sz < mem_size; sz += BNXT_PAGE_SIZE, i++) {\n-\t\trte_mem_lock_page(((char *)mz->addr) + sz);\n \t\trmem->pg_arr[i] = ((char *)mz->addr) + sz;\n \t\trmem->dma_arr[i] = mz_phys_addr + sz;\n \n@@ -4460,18 +4434,6 @@ static int bnxt_alloc_stats_mem(struct bnxt *bp)\n \t}\n \tmemset(mz->addr, 0, mz->len);\n \tmz_phys_addr = mz->iova;\n-\tif ((unsigned long)mz->addr == mz_phys_addr) {\n-\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t \"Memzone physical address same as virtual.\\n\");\n-\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t \"Using rte_mem_virt2iova()\\n\");\n-\t\tmz_phys_addr = rte_mem_virt2iova(mz->addr);\n-\t\tif (mz_phys_addr == RTE_BAD_IOVA) {\n-\t\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\t \"Can't map address to physical memory\\n\");\n-\t\t\treturn -ENOMEM;\n-\t\t}\n-\t}\n \n \tbp->rx_mem_zone = (const void *)mz;\n \tbp->hw_rx_port_stats = mz->addr;\n@@ -4498,17 +4460,6 @@ static int bnxt_alloc_stats_mem(struct bnxt *bp)\n \t}\n \tmemset(mz->addr, 0, mz->len);\n \tmz_phys_addr = mz->iova;\n-\tif ((unsigned long)mz->addr == mz_phys_addr) {\n-\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t \"Memzone physical address same as virtual\\n\");\n-\t\tPMD_DRV_LOG(DEBUG, \"Using rte_mem_virt2iova()\\n\");\n-\t\tmz_phys_addr = rte_mem_virt2iova(mz->addr);\n-\t\tif (mz_phys_addr == RTE_BAD_IOVA) {\n-\t\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\t \"Can't map address to physical memory\\n\");\n-\t\t\treturn -ENOMEM;\n-\t\t}\n-\t}\n \n \tbp->tx_mem_zone = (const void *)mz;\n \tbp->hw_tx_port_stats = mz->addr;\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex 50272dc..3b01339 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -309,8 +309,8 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp,\n \tif (vlan_table) {\n \t\tif (!(mask & HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_VLAN_NONVLAN))\n \t\t\tmask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_VLANONLY;\n-\t\treq.vlan_tag_tbl_addr = rte_cpu_to_le_64(\n-\t\t\t rte_mem_virt2iova(vlan_table));\n+\t\treq.vlan_tag_tbl_addr =\n+\t\t\trte_cpu_to_le_64(rte_malloc_virt2iova(vlan_table));\n \t\treq.num_vlan_tags = rte_cpu_to_le_32((uint32_t)vlan_count);\n \t}\n \treq.mask = rte_cpu_to_le_32(mask);\n@@ -351,7 +351,7 @@ int bnxt_hwrm_cfa_vlan_antispoof_cfg(struct bnxt *bp, uint16_t fid,\n \treq.fid = rte_cpu_to_le_16(fid);\n \n \treq.vlan_tag_mask_tbl_addr =\n-\t\trte_cpu_to_le_64(rte_mem_virt2iova(vlan_table));\n+\t\trte_cpu_to_le_64(rte_malloc_virt2iova(vlan_table));\n \treq.num_vlan_entries = rte_cpu_to_le_32((uint32_t)vlan_count);\n \n \trc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);\n@@ -1024,9 +1024,8 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)\n \t\t\trc = -ENOMEM;\n \t\t\tgoto error;\n \t\t}\n-\t\trte_mem_lock_page(bp->hwrm_cmd_resp_addr);\n \t\tbp->hwrm_cmd_resp_dma_addr =\n-\t\t\trte_mem_virt2iova(bp->hwrm_cmd_resp_addr);\n+\t\t\trte_malloc_virt2iova(bp->hwrm_cmd_resp_addr);\n \t\tif (bp->hwrm_cmd_resp_dma_addr == RTE_BAD_IOVA) {\n \t\t\tPMD_DRV_LOG(ERR,\n \t\t\t\"Unable to map response buffer to physical memory.\\n\");\n@@ -1061,9 +1060,8 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)\n \t\t\trc = -ENOMEM;\n \t\t\tgoto error;\n \t\t}\n-\t\trte_mem_lock_page(bp->hwrm_short_cmd_req_addr);\n \t\tbp->hwrm_short_cmd_req_dma_addr =\n-\t\t\trte_mem_virt2iova(bp->hwrm_short_cmd_req_addr);\n+\t\t\trte_malloc_virt2iova(bp->hwrm_short_cmd_req_addr);\n \t\tif (bp->hwrm_short_cmd_req_dma_addr == RTE_BAD_IOVA) {\n \t\t\trte_free(bp->hwrm_short_cmd_req_addr);\n \t\t\tPMD_DRV_LOG(ERR,\n@@ -2471,11 +2469,10 @@ int bnxt_alloc_hwrm_resources(struct bnxt *bp)\n \t\tpdev->addr.bus, pdev->addr.devid, pdev->addr.function);\n \tbp->max_resp_len = HWRM_MAX_RESP_LEN;\n \tbp->hwrm_cmd_resp_addr = rte_malloc(type, bp->max_resp_len, 0);\n-\trte_mem_lock_page(bp->hwrm_cmd_resp_addr);\n \tif (bp->hwrm_cmd_resp_addr == NULL)\n \t\treturn -ENOMEM;\n \tbp->hwrm_cmd_resp_dma_addr =\n-\t\trte_mem_virt2iova(bp->hwrm_cmd_resp_addr);\n+\t\trte_malloc_virt2iova(bp->hwrm_cmd_resp_addr);\n \tif (bp->hwrm_cmd_resp_dma_addr == RTE_BAD_IOVA) {\n \t\tPMD_DRV_LOG(ERR,\n \t\t\t\"unable to map response address to physical memory\\n\");\n@@ -3421,7 +3418,7 @@ int bnxt_hwrm_func_buf_rgtr(struct bnxt *bp)\n \t\t\t page_getenum(bp->pf.active_vfs * HWRM_MAX_REQ_LEN));\n \treq.req_buf_len = rte_cpu_to_le_16(HWRM_MAX_REQ_LEN);\n \treq.req_buf_page_addr0 =\n-\t\trte_cpu_to_le_64(rte_mem_virt2iova(bp->pf.vf_req_buf));\n+\t\trte_cpu_to_le_64(rte_malloc_virt2iova(bp->pf.vf_req_buf));\n \tif (req.req_buf_page_addr0 == RTE_BAD_IOVA) {\n \t\tPMD_DRV_LOG(ERR,\n \t\t\t\"unable to map buffer address to physical memory\\n\");\n@@ -3851,10 +3848,9 @@ int bnxt_get_nvram_directory(struct bnxt *bp, uint32_t len, uint8_t *data)\n \n \tbuflen = dir_entries * entry_length;\n \tbuf = rte_malloc(\"nvm_dir\", buflen, 0);\n-\trte_mem_lock_page(buf);\n \tif (buf == NULL)\n \t\treturn -ENOMEM;\n-\tdma_handle = rte_mem_virt2iova(buf);\n+\tdma_handle = rte_malloc_virt2iova(buf);\n \tif (dma_handle == RTE_BAD_IOVA) {\n \t\tPMD_DRV_LOG(ERR,\n \t\t\t\"unable to map response address to physical memory\\n\");\n@@ -3885,11 +3881,10 @@ int bnxt_hwrm_get_nvram_item(struct bnxt *bp, uint32_t index,\n \tstruct hwrm_nvm_read_output *resp = bp->hwrm_cmd_resp_addr;\n \n \tbuf = rte_malloc(\"nvm_item\", length, 0);\n-\trte_mem_lock_page(buf);\n \tif (!buf)\n \t\treturn -ENOMEM;\n \n-\tdma_handle = rte_mem_virt2iova(buf);\n+\tdma_handle = rte_malloc_virt2iova(buf);\n \tif (dma_handle == RTE_BAD_IOVA) {\n \t\tPMD_DRV_LOG(ERR,\n \t\t\t\"unable to map response address to physical memory\\n\");\n@@ -3939,11 +3934,10 @@ int bnxt_hwrm_flash_nvram(struct bnxt *bp, uint16_t dir_type,\n \tuint8_t *buf;\n \n \tbuf = rte_malloc(\"nvm_write\", data_len, 0);\n-\trte_mem_lock_page(buf);\n \tif (!buf)\n \t\treturn -ENOMEM;\n \n-\tdma_handle = rte_mem_virt2iova(buf);\n+\tdma_handle = rte_malloc_virt2iova(buf);\n \tif (dma_handle == RTE_BAD_IOVA) {\n \t\tPMD_DRV_LOG(ERR,\n \t\t\t\"unable to map response address to physical memory\\n\");\n@@ -4006,7 +4000,7 @@ static int bnxt_hwrm_func_vf_vnic_query(struct bnxt *bp, uint16_t vf,\n \n \treq.vf_id = rte_cpu_to_le_16(bp->pf.first_vf_id + vf);\n \treq.max_vnic_id_cnt = rte_cpu_to_le_32(bp->pf.total_vnics);\n-\treq.vnic_id_tbl_addr = rte_cpu_to_le_64(rte_mem_virt2iova(vnic_ids));\n+\treq.vnic_id_tbl_addr = rte_cpu_to_le_64(rte_malloc_virt2iova(vnic_ids));\n \n \tif (req.vnic_id_tbl_addr == RTE_BAD_IOVA) {\n \t\tHWRM_UNLOCK();\ndiff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c\nindex ea46fa9..d6e4e8a 100644\n--- a/drivers/net/bnxt/bnxt_ring.c\n+++ b/drivers/net/bnxt/bnxt_ring.c\n@@ -110,9 +110,7 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,\n \tuint64_t rx_offloads = bp->eth_dev->data->dev_conf.rxmode.offloads;\n \tconst struct rte_memzone *mz = NULL;\n \tchar mz_name[RTE_MEMZONE_NAMESIZE];\n-\trte_iova_t mz_phys_addr_base;\n \trte_iova_t mz_phys_addr;\n-\tint sz;\n \n \tint stats_len = (tx_ring_info || rx_ring_info) ?\n \t RTE_CACHE_LINE_ROUNDUP(sizeof(struct hwrm_stat_ctx_query_output) -\n@@ -214,22 +212,7 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,\n \t\t\treturn -ENOMEM;\n \t}\n \tmemset(mz->addr, 0, mz->len);\n-\tmz_phys_addr_base = mz->iova;\n \tmz_phys_addr = mz->iova;\n-\tif ((unsigned long)mz->addr == mz_phys_addr_base) {\n-\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t \"Memzone physical address same as virtual.\\n\");\n-\t\tPMD_DRV_LOG(DEBUG, \"Using rte_mem_virt2iova()\\n\");\n-\t\tfor (sz = 0; sz < total_alloc_len; sz += getpagesize())\n-\t\t\trte_mem_lock_page(((char *)mz->addr) + sz);\n-\t\tmz_phys_addr_base = rte_mem_virt2iova(mz->addr);\n-\t\tmz_phys_addr = rte_mem_virt2iova(mz->addr);\n-\t\tif (mz_phys_addr == RTE_BAD_IOVA) {\n-\t\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\"unable to map ring address to physical memory\\n\");\n-\t\t\treturn -ENOMEM;\n-\t\t}\n-\t}\n \n \tif (tx_ring_info) {\n \t\ttxq->mz = mz;\ndiff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c\nindex 104342e..bc054a8 100644\n--- a/drivers/net/bnxt/bnxt_vnic.c\n+++ b/drivers/net/bnxt/bnxt_vnic.c\n@@ -150,17 +150,6 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp)\n \t\t\treturn -ENOMEM;\n \t}\n \tmz_phys_addr = mz->iova;\n-\tif ((unsigned long)mz->addr == mz_phys_addr) {\n-\t\tPMD_DRV_LOG(DEBUG,\n-\t\t\t \"Memzone physical address same as virtual.\\n\");\n-\t\tPMD_DRV_LOG(DEBUG, \"Using rte_mem_virt2iova()\\n\");\n-\t\tmz_phys_addr = rte_mem_virt2iova(mz->addr);\n-\t\tif (mz_phys_addr == RTE_BAD_IOVA) {\n-\t\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\t \"unable to map to physical memory\\n\");\n-\t\t\treturn -ENOMEM;\n-\t\t}\n-\t}\n \n \tfor (i = 0; i < max_vnics; i++) {\n \t\tvnic = &bp->vnic_info[i];\n", "prefixes": [ "03/10" ] }{ "id": 64505, "url": "