From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C1CD7A04BC; Thu, 17 Sep 2020 12:42:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 02A8D1D613; Thu, 17 Sep 2020 12:41:57 +0200 (CEST) Received: from new4-smtp.messagingengine.com (new4-smtp.messagingengine.com [66.111.4.230]) by dpdk.org (Postfix) with ESMTP id B30F71D609 for ; Thu, 17 Sep 2020 12:41:55 +0200 (CEST) Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailnew.nyi.internal (Postfix) with ESMTP id 21F065801AB; Thu, 17 Sep 2020 06:41:55 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Thu, 17 Sep 2020 06:41:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm2; bh=dgcVujSM0E9jg 5O9Y/YWWv0GnndTpPxfi0fTVmq1z6s=; b=kT2YR2V6lVW3ltxW+lfo+RWc6rSkF CSO6Xg8UNoYKAFM7Sbt11GqmQCM47Ygwt/4D9duzddQI3otILmdXwp7DJmo6N7uH A8L1ARgIsmHjp/NnHr+eWu3laVz+5GOlgQ1xLu5+zFMQekOXquyox9AyvOSpyPjc aZej/Ir/L64JibKflCbqprG3uB+skJ28skPw4vao9B8tHhkFh/T03FaGigEtReEk CJs5ZjRKcZg/ti+R7L9Yap7JUwWOfuPi2n1Br21RADWp1iw47no2uyyG6PTaRQ8J q6w2yGRYbH/upXn9mQcH9Mvbf5YkgqKZOnUPYHIpTAzGRYbXSqR9Moylg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=dgcVujSM0E9jg5O9Y/YWWv0GnndTpPxfi0fTVmq1z6s=; b=uU5HERUa j6PPsrmKroNjN93hTiGOoitktHjRDsRyh5/5/M3ske8Hh5QxiQHdtQd9LJG06R5r 9vP3M5Wkd19+1w1QQIp9/GuHZSL/cXolHsZkUEv2u55IRt/2crj3zJed8Nx2JVH5 0EOX+vKtf8maIGFkKEBVNxC1CmDpayThXA3NknLJc4fgD8zp9x6TPwJw/j0H2fXA s3nUOBMFc2uvHuUGWXPC1smnvi6Gf0QWejxkTjUhnmEieFgwSwYGScAe+y+AtlGF po4o704FAPOvq2yY1nFwGC1plFp5SGBR7iMQ2H+Kzk8IqhoYDN4J0uyb1IoMGUYG /bNINybY5TPm4Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrtdeggdefvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepfeenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho nhdrnhgvth X-ME-Proxy: Received: from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id 327B1306467D; Thu, 17 Sep 2020 06:41:53 -0400 (EDT) From: Thomas Monjalon To: dev@dpdk.org Cc: david.marchand@redhat.com, mdr@ashroe.eu, Andrew Rybchenko , Neil Horman , John McNamara , Marko Kovacevic , Anoob Joseph , Beilei Xing , Jeff Guo , Jingjing Wu , Qiming Yang , Qi Zhang , Ferruh Yigit , Olivier Matz Date: Thu, 17 Sep 2020 12:41:33 +0200 Message-Id: <20200917104133.6186-5-thomas@monjalon.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200917104133.6186-1-thomas@monjalon.net> References: <20200914161801.572174-1-thomas@monjalon.net> <20200917104133.6186-1-thomas@monjalon.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2 4/4] mbuf: remove physical address alias X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Remove the deprecated buf_physaddr union field from rte_mbuf. It is replaced with buf_iova which is at the same offset. The single field buf_physaddr in rte_kni_mbuf is also renamed. This concludes a 3-year process of semantic change. Signed-off-by: Thomas Monjalon Acked-by: Andrew Rybchenko --- doc/guides/rel_notes/deprecation.rst | 2 -- doc/guides/rel_notes/release_20_11.rst | 3 +++ drivers/common/cpt/cpt_ucode.h | 2 +- drivers/net/i40e/i40e_rxtx_vec_avx2.c | 18 +++++++++--------- drivers/net/iavf/iavf_rxtx_vec_avx2.c | 18 +++++++++--------- drivers/net/ice/ice_rxtx_vec_avx2.c | 18 +++++++++--------- kernel/linux/kni/kni_net.c | 6 +++--- lib/librte_eal/linux/include/rte_kni_common.h | 2 +- lib/librte_mbuf/rte_mbuf_core.h | 6 +----- 9 files changed, 36 insertions(+), 39 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 52168f7751..143b7694a5 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -148,8 +148,6 @@ Deprecation Notices avoiding impact on vectorized implementation of the driver datapaths, while evaluating performance gains of a better use of the first cache line. - The deprecated unioned field ``buf_physaddr`` will be removed in DPDK 20.11. - * ethdev: Split the ``struct eth_dev_ops`` struct to hide it as much as possible will be done in 20.11. Currently the ``struct eth_dev_ops`` struct is accessible by the application diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index a290b44ae5..4a7f6f4b6c 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -99,6 +99,9 @@ API Changes The same functionality is still available with the functions and macros having ``iova`` in their names instead of ``dma_addr`` or ``mtophys``. +* mbuf: Removed the unioned field ``buf_physaddr`` from ``rte_mbuf``. + The field ``buf_iova`` is remaining from the old union. + * mbuf: Removed the unioned field ``refcnt_atomic`` from the structures ``rte_mbuf`` and ``rte_mbuf_ext_shared_info``. The field ``refcnt`` is remaining from the old unions. diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h index 4e79fbf7a5..763355fb1f 100644 --- a/drivers/common/cpt/cpt_ucode.h +++ b/drivers/common/cpt/cpt_ucode.h @@ -2862,7 +2862,7 @@ alloc_op_meta(struct rte_mbuf *m_src, tailroom = rte_pktmbuf_tailroom(m_src); if (likely(tailroom > len + 8)) { mdata = (uint8_t *)m_src->buf_addr + m_src->buf_len; - mphys = m_src->buf_physaddr + m_src->buf_len; + mphys = m_src->buf_iova + m_src->buf_len; mdata -= len; mphys -= len; buf->vaddr = mdata; diff --git a/drivers/net/i40e/i40e_rxtx_vec_avx2.c b/drivers/net/i40e/i40e_rxtx_vec_avx2.c index 3bcef13638..37e7db5d7e 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_avx2.c +++ b/drivers/net/i40e/i40e_rxtx_vec_avx2.c @@ -59,8 +59,8 @@ i40e_rxq_rearm(struct i40e_rx_queue *rxq) mb0 = rxep[0].mbuf; mb1 = rxep[1].mbuf; - /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ - RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_physaddr) != + /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) != offsetof(struct rte_mbuf, buf_addr) + 8); vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); @@ -92,8 +92,8 @@ i40e_rxq_rearm(struct i40e_rx_queue *rxq) mb2 = rxep[2].mbuf; mb3 = rxep[3].mbuf; - /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ - RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_physaddr) != + /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) != offsetof(struct rte_mbuf, buf_addr) + 8); vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); @@ -814,7 +814,7 @@ vtx1(volatile struct i40e_tx_desc *txdp, ((uint64_t)pkt->data_len << I40E_TXD_QW1_TX_BUF_SZ_SHIFT)); __m128i descriptor = _mm_set_epi64x(high_qw, - pkt->buf_physaddr + pkt->data_off); + pkt->buf_iova + pkt->data_off); _mm_store_si128((__m128i *)txdp, descriptor); } @@ -843,11 +843,11 @@ vtx(volatile struct i40e_tx_desc *txdp, ((uint64_t)pkt[0]->data_len << I40E_TXD_QW1_TX_BUF_SZ_SHIFT); __m256i desc2_3 = _mm256_set_epi64x( - hi_qw3, pkt[3]->buf_physaddr + pkt[3]->data_off, - hi_qw2, pkt[2]->buf_physaddr + pkt[2]->data_off); + hi_qw3, pkt[3]->buf_iova + pkt[3]->data_off, + hi_qw2, pkt[2]->buf_iova + pkt[2]->data_off); __m256i desc0_1 = _mm256_set_epi64x( - hi_qw1, pkt[1]->buf_physaddr + pkt[1]->data_off, - hi_qw0, pkt[0]->buf_physaddr + pkt[0]->data_off); + hi_qw1, pkt[1]->buf_iova + pkt[1]->data_off, + hi_qw0, pkt[0]->buf_iova + pkt[0]->data_off); _mm256_store_si256((void *)(txdp + 2), desc2_3); _mm256_store_si256((void *)txdp, desc0_1); } diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx2.c b/drivers/net/iavf/iavf_rxtx_vec_avx2.c index e5e0fd3095..8f28afc8c5 100644 --- a/drivers/net/iavf/iavf_rxtx_vec_avx2.c +++ b/drivers/net/iavf/iavf_rxtx_vec_avx2.c @@ -52,8 +52,8 @@ iavf_rxq_rearm(struct iavf_rx_queue *rxq) mb0 = rxp[0]; mb1 = rxp[1]; - /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ - RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_physaddr) != + /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) != offsetof(struct rte_mbuf, buf_addr) + 8); vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); @@ -85,8 +85,8 @@ iavf_rxq_rearm(struct iavf_rx_queue *rxq) mb2 = rxp[2]; mb3 = rxp[3]; - /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ - RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_physaddr) != + /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) != offsetof(struct rte_mbuf, buf_addr) + 8); vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); @@ -1391,7 +1391,7 @@ iavf_vtx1(volatile struct iavf_tx_desc *txdp, ((uint64_t)pkt->data_len << IAVF_TXD_QW1_TX_BUF_SZ_SHIFT)); __m128i descriptor = _mm_set_epi64x(high_qw, - pkt->buf_physaddr + pkt->data_off); + pkt->buf_iova + pkt->data_off); _mm_store_si128((__m128i *)txdp, descriptor); } @@ -1430,15 +1430,15 @@ iavf_vtx(volatile struct iavf_tx_desc *txdp, __m256i desc2_3 = _mm256_set_epi64x (hi_qw3, - pkt[3]->buf_physaddr + pkt[3]->data_off, + pkt[3]->buf_iova + pkt[3]->data_off, hi_qw2, - pkt[2]->buf_physaddr + pkt[2]->data_off); + pkt[2]->buf_iova + pkt[2]->data_off); __m256i desc0_1 = _mm256_set_epi64x (hi_qw1, - pkt[1]->buf_physaddr + pkt[1]->data_off, + pkt[1]->buf_iova + pkt[1]->data_off, hi_qw0, - pkt[0]->buf_physaddr + pkt[0]->data_off); + pkt[0]->buf_iova + pkt[0]->data_off); _mm256_store_si256((void *)(txdp + 2), desc2_3); _mm256_store_si256((void *)txdp, desc0_1); } diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c b/drivers/net/ice/ice_rxtx_vec_avx2.c index be50677c2f..b653805160 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx2.c +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c @@ -52,8 +52,8 @@ ice_rxq_rearm(struct ice_rx_queue *rxq) mb0 = rxep[0].mbuf; mb1 = rxep[1].mbuf; - /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ - RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_physaddr) != + /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) != offsetof(struct rte_mbuf, buf_addr) + 8); vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); @@ -85,8 +85,8 @@ ice_rxq_rearm(struct ice_rx_queue *rxq) mb2 = rxep[2].mbuf; mb3 = rxep[3].mbuf; - /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ - RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_physaddr) != + /* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) != offsetof(struct rte_mbuf, buf_addr) + 8); vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); @@ -689,7 +689,7 @@ ice_vtx1(volatile struct ice_tx_desc *txdp, ((uint64_t)pkt->data_len << ICE_TXD_QW1_TX_BUF_SZ_S)); __m128i descriptor = _mm_set_epi64x(high_qw, - pkt->buf_physaddr + pkt->data_off); + pkt->buf_iova + pkt->data_off); _mm_store_si128((__m128i *)txdp, descriptor); } @@ -728,15 +728,15 @@ ice_vtx(volatile struct ice_tx_desc *txdp, __m256i desc2_3 = _mm256_set_epi64x (hi_qw3, - pkt[3]->buf_physaddr + pkt[3]->data_off, + pkt[3]->buf_iova + pkt[3]->data_off, hi_qw2, - pkt[2]->buf_physaddr + pkt[2]->data_off); + pkt[2]->buf_iova + pkt[2]->data_off); __m256i desc0_1 = _mm256_set_epi64x (hi_qw1, - pkt[1]->buf_physaddr + pkt[1]->data_off, + pkt[1]->buf_iova + pkt[1]->data_off, hi_qw0, - pkt[0]->buf_physaddr + pkt[0]->data_off); + pkt[0]->buf_iova + pkt[0]->data_off); _mm256_store_si256((void *)(txdp + 2), desc2_3); _mm256_store_si256((void *)txdp, desc0_1); } diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index c82c881a2c..4b752083da 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -47,7 +47,7 @@ iova2kva(struct kni_dev *kni, void *iova) static inline void * iova2data_kva(struct kni_dev *kni, struct rte_kni_mbuf *m) { - return phys_to_virt(iova_to_phys(kni->usr_tsk, m->buf_physaddr) + + return phys_to_virt(iova_to_phys(kni->usr_tsk, m->buf_iova) + m->data_off); } #endif @@ -67,7 +67,7 @@ pa2va(void *pa, struct rte_kni_mbuf *m) va = (void *)((unsigned long)pa + (unsigned long)m->buf_addr - - (unsigned long)m->buf_physaddr); + (unsigned long)m->buf_iova); return va; } @@ -75,7 +75,7 @@ pa2va(void *pa, struct rte_kni_mbuf *m) static void * kva2data_kva(struct rte_kni_mbuf *m) { - return phys_to_virt(m->buf_physaddr + m->data_off); + return phys_to_virt(m->buf_iova + m->data_off); } static inline void * diff --git a/lib/librte_eal/linux/include/rte_kni_common.h b/lib/librte_eal/linux/include/rte_kni_common.h index 7313ef504e..21b477f0aa 100644 --- a/lib/librte_eal/linux/include/rte_kni_common.h +++ b/lib/librte_eal/linux/include/rte_kni_common.h @@ -75,7 +75,7 @@ struct rte_kni_fifo { */ struct rte_kni_mbuf { void *buf_addr __attribute__((__aligned__(RTE_CACHE_LINE_SIZE))); - uint64_t buf_physaddr; + uint64_t buf_iova; uint16_t data_off; /**< Start address of data in segment buffer. */ char pad1[2]; uint16_t nb_segs; /**< Number of segments. */ diff --git a/lib/librte_mbuf/rte_mbuf_core.h b/lib/librte_mbuf/rte_mbuf_core.h index cee3d5aff5..8c2c20644d 100644 --- a/lib/librte_mbuf/rte_mbuf_core.h +++ b/lib/librte_mbuf/rte_mbuf_core.h @@ -476,11 +476,7 @@ struct rte_mbuf { * same mbuf cacheline0 layout for 32-bit and 64-bit. This makes * working on vector drivers easier. */ - RTE_STD_C11 - union { - rte_iova_t buf_iova; - rte_iova_t buf_physaddr; /**< deprecated */ - } __rte_aligned(sizeof(rte_iova_t)); + rte_iova_t buf_iova __rte_aligned(sizeof(rte_iova_t)); /* next 8 bytes are initialised on RX descriptor rearm */ RTE_MARKER64 rearm_data; -- 2.28.0