From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 43CFA41DCD; Mon, 6 Mar 2023 17:13:48 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 33E7A410F9; Mon, 6 Mar 2023 17:13:48 +0100 (CET) Received: from new1-smtp.messagingengine.com (new1-smtp.messagingengine.com [66.111.4.221]) by mails.dpdk.org (Postfix) with ESMTP id AE11E410F9 for ; Mon, 6 Mar 2023 17:13:46 +0100 (CET) Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailnew.nyi.internal (Postfix) with ESMTP id 1188F582989; Mon, 6 Mar 2023 11:13:45 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Mon, 06 Mar 2023 11:13:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= cc:cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm1; t=1678119225; x= 1678126425; bh=I5xKkPMX6PdDZmKyfDcGdji2k4MU72pG1/BMTaJITRM=; b=A W86EzGlMlEttUBFJRy2AuPW/n7fQhqztJcFtQibNkQU/sREyhfNJ/MuUSlh64mLo EMG/nzAxFwRX2MO0n743hcB7i50ygV/O8tg+SFtUfubgU93Xx3lWGZDcluYCOzjU 27KTrEjpHlec1z54PWgpXcEVUI6PhtFtKdAJckgt0SQiwd3KxTVKxOM5Cyc2J5HA 0YAxqyLZjCgv3srnLhb/Rrozx/rHXHj3+/HuiEmLBnJw35+rhS5suRcx582Ic3nt P//aFKQ4wldE2zr2l9kUPGXfEI16ZlgjLqg/c3tP6P9ZtNj8ZCdTDHcgNg089Nrl ytA1z1cXTDTmy1HycomtA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1678119225; x= 1678126425; bh=I5xKkPMX6PdDZmKyfDcGdji2k4MU72pG1/BMTaJITRM=; b=q CBR882MEsNkwuveYStq1PKgbvXhTYJHiOlN38WaXY6DOynmDPYT8dcWvIKJCRGiL wEMRcHqW642GLitQysFnQNG9ilJj4mer8mWHjms4GiNi8ZMTOymsRsiGC+OMsARw BitKJ5KGhWs7sPXWEzDpUl8iZYFKbxa7unkgtIq5lzX7BQNk++cH7rMzfAmvZHjb EQJE/E9oEHKnXPn4Xx4FlfmoRwoUMrASxbXfnVHEvSNwp5yIA5hMTyYHqYww4FW1 PbuM2VfumgNzI4CDvyaZ4zoB4832B1W/B8+u+rgmogkJ7aYCqNUDT34SU6zbartv vS0P1EE9v7089oM9Fq+XQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvddtkedgheekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhm rghsucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenuc ggtffrrghtthgvrhhnpedvjefhudeghedvtdeijeeigeetuedugfejueekieeltdfhteev keehhfeilefhtdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfh hrohhmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvght X-ME-Proxy: Feedback-ID: i47234305:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 6 Mar 2023 11:13:39 -0500 (EST) From: Thomas Monjalon To: dev@dpdk.org Cc: David Marchand , Bruce Richardson , Qi Zhang , =?UTF-8?q?Morten=20Br=C3=B8rup?= , Shijith Thotton , Olivier Matz , Ruifeng Wang , Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Jingjing Wu , Beilei Xing , Ankur Dwivedi , Anoob Joseph , Tejasree Kondoj , Kai Ji , Pablo de Lara , Radha Mohan Chintakuntla , Veerasenareddy Burru , Chengwen Feng , Kevin Laatz , Pavan Nikhilesh , =?UTF-8?q?Mattias=20R=C3=B6nnblom?= , Liang Ma , Peter Mccarthy , Jerin Jacob , Harry van Haaren , "Artem V. Andreev" , Andrew Rybchenko , Ashwin Sekhar T K , "John W. Linville" , Ciara Loftus , Chas Williams , "Min Hu (Connor)" , Gaetan Rivet , Dongdong Liu , Yisen Zhuang , Konstantin Ananyev , Qiming Yang , Jakub Grajciar , Tetsuya Mukawa , Jakub Palider , Tomasz Duszynski , Sachin Saxena , Hemant Agrawal Subject: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Date: Mon, 6 Mar 2023 17:13:27 +0100 Message-Id: <20230306161328.3802696-2-thomas@monjalon.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230306161328.3802696-1-thomas@monjalon.net> References: <20230219115529.3260580-1-thomas@monjalon.net> <20230306161328.3802696-1-thomas@monjalon.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The impact of the option "enable_iova_as_pa" is explained for users. Also the code flag "RTE_IOVA_AS_PA" is renamed as "RTE_IOVA_IN_MBUF" in order to be more accurate (IOVA mode is decided at runtime), and more readable in the code. Similarly the drivers are using the variable "require_iova_in_mbuf" instead of "pmd_supports_disable_iova_as_pa" with an opposite meaning. By default, it is assumed that drivers require the IOVA field in mbuf. The drivers which support removing this field have to declare themselves. If the option "enable_iova_as_pa" is disabled, the unsupported drivers will be listed with the new reason text "requires IOVA in mbuf". Suggested-by: Bruce Richardson Signed-off-by: Thomas Monjalon --- app/test/test_mbuf.c | 2 +- config/arm/meson.build | 4 ++-- config/meson.build | 2 +- doc/guides/rel_notes/release_22_11.rst | 2 +- drivers/common/cnxk/meson.build | 2 +- drivers/common/iavf/meson.build | 2 +- drivers/crypto/armv8/meson.build | 2 +- drivers/crypto/cnxk/meson.build | 2 +- drivers/crypto/ipsec_mb/meson.build | 2 +- drivers/crypto/null/meson.build | 2 +- drivers/crypto/openssl/meson.build | 2 +- drivers/dma/cnxk/meson.build | 2 +- drivers/dma/skeleton/meson.build | 2 +- drivers/event/cnxk/meson.build | 2 +- drivers/event/dsw/meson.build | 2 +- drivers/event/opdl/meson.build | 2 +- drivers/event/skeleton/meson.build | 2 +- drivers/event/sw/meson.build | 2 +- drivers/mempool/bucket/meson.build | 2 +- drivers/mempool/cnxk/meson.build | 2 +- drivers/mempool/ring/meson.build | 2 +- drivers/mempool/stack/meson.build | 2 +- drivers/meson.build | 6 +++--- drivers/net/af_packet/meson.build | 2 +- drivers/net/af_xdp/meson.build | 2 +- drivers/net/bonding/meson.build | 2 +- drivers/net/cnxk/meson.build | 2 +- drivers/net/failsafe/meson.build | 2 +- drivers/net/hns3/meson.build | 4 +--- drivers/net/ice/ice_rxtx_common_avx.h | 12 ++++++------ drivers/net/ice/ice_rxtx_vec_sse.c | 4 ++-- drivers/net/ice/meson.build | 2 +- drivers/net/memif/meson.build | 2 +- drivers/net/null/meson.build | 2 +- drivers/net/pcap/meson.build | 2 +- drivers/net/ring/meson.build | 2 +- drivers/net/tap/meson.build | 2 +- drivers/raw/cnxk_bphy/meson.build | 2 +- drivers/raw/cnxk_gpio/meson.build | 2 +- drivers/raw/skeleton/meson.build | 2 +- lib/eal/linux/eal.c | 2 +- lib/mbuf/rte_mbuf.c | 2 +- lib/mbuf/rte_mbuf.h | 4 ++-- lib/mbuf/rte_mbuf_core.h | 8 ++++---- lib/mbuf/rte_mbuf_dyn.c | 2 +- lib/meson.build | 2 +- meson_options.txt | 2 +- 47 files changed, 60 insertions(+), 62 deletions(-) diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index 6cbb03b0af..81a6632d11 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -1232,7 +1232,7 @@ test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool) return -1; } - if (RTE_IOVA_AS_PA) { + if (RTE_IOVA_IN_MBUF) { badbuf = *buf; rte_mbuf_iova_set(&badbuf, 0); if (verify_mbuf_check_panics(&badbuf)) { diff --git a/config/arm/meson.build b/config/arm/meson.build index 451dbada7d..5ff66248de 100644 --- a/config/arm/meson.build +++ b/config/arm/meson.build @@ -319,7 +319,7 @@ soc_cn10k = { ['RTE_MAX_LCORE', 24], ['RTE_MAX_NUMA_NODES', 1], ['RTE_MEMPOOL_ALIGN', 128], - ['RTE_IOVA_AS_PA', 0] + ['RTE_IOVA_IN_MBUF', 0] ], 'part_number': '0xd49', 'extra_march_features': ['crypto'], @@ -412,7 +412,7 @@ soc_cn9k = { 'part_number': '0xb2', 'numa': false, 'flags': [ - ['RTE_IOVA_AS_PA', 0] + ['RTE_IOVA_IN_MBUF', 0] ] } diff --git a/config/meson.build b/config/meson.build index fc3ac99a32..fa730a1b14 100644 --- a/config/meson.build +++ b/config/meson.build @@ -316,7 +316,7 @@ endif if get_option('mbuf_refcnt_atomic') dpdk_conf.set('RTE_MBUF_REFCNT_ATOMIC', true) endif -dpdk_conf.set10('RTE_IOVA_AS_PA', get_option('enable_iova_as_pa')) +dpdk_conf.set10('RTE_IOVA_IN_MBUF', get_option('enable_iova_as_pa')) compile_time_cpuflags = [] subdir(arch_subdir) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 91414573bd..c67c2823a2 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -504,7 +504,7 @@ ABI Changes ``rte-worker-`` so that DPDK can accommodate lcores higher than 99. * mbuf: Replaced ``buf_iova`` field with ``next`` field and added a new field - ``dynfield2`` at its place in second cacheline if ``RTE_IOVA_AS_PA`` is 0. + ``dynfield2`` at its place in second cacheline if ``RTE_IOVA_IN_MBUF`` is 0. * ethdev: enum ``RTE_FLOW_ITEM`` was affected by deprecation procedure. diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build index 849735921c..ce71f3d70c 100644 --- a/drivers/common/cnxk/meson.build +++ b/drivers/common/cnxk/meson.build @@ -87,4 +87,4 @@ sources += files('cnxk_telemetry_bphy.c', ) deps += ['bus_pci', 'net', 'telemetry'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/common/iavf/meson.build b/drivers/common/iavf/meson.build index af8a4983e0..af26955772 100644 --- a/drivers/common/iavf/meson.build +++ b/drivers/common/iavf/meson.build @@ -6,4 +6,4 @@ sources = files('iavf_adminq.c', 'iavf_common.c', 'iavf_impl.c') if cc.has_argument('-Wno-pointer-to-int-cast') cflags += '-Wno-pointer-to-int-cast' endif -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/crypto/armv8/meson.build b/drivers/crypto/armv8/meson.build index 700fb80eb2..a735eb511c 100644 --- a/drivers/crypto/armv8/meson.build +++ b/drivers/crypto/armv8/meson.build @@ -17,4 +17,4 @@ endif ext_deps += dep deps += ['bus_vdev'] sources = files('rte_armv8_pmd.c', 'rte_armv8_pmd_ops.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/crypto/cnxk/meson.build b/drivers/crypto/cnxk/meson.build index a5acabab2b..3d9a0dbbf0 100644 --- a/drivers/crypto/cnxk/meson.build +++ b/drivers/crypto/cnxk/meson.build @@ -32,4 +32,4 @@ else cflags += [ '-ULA_IPSEC_DEBUG','-UCNXK_CRYPTODEV_DEBUG' ] endif -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/crypto/ipsec_mb/meson.build b/drivers/crypto/ipsec_mb/meson.build index ec147d2110..3057e6fd10 100644 --- a/drivers/crypto/ipsec_mb/meson.build +++ b/drivers/crypto/ipsec_mb/meson.build @@ -41,4 +41,4 @@ sources = files( 'pmd_zuc.c', ) deps += ['bus_vdev', 'net', 'security'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/crypto/null/meson.build b/drivers/crypto/null/meson.build index 59a7508f18..2e8b05ad28 100644 --- a/drivers/crypto/null/meson.build +++ b/drivers/crypto/null/meson.build @@ -9,4 +9,4 @@ endif deps += 'bus_vdev' sources = files('null_crypto_pmd.c', 'null_crypto_pmd_ops.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/crypto/openssl/meson.build b/drivers/crypto/openssl/meson.build index d165c32ae8..1ec63c216d 100644 --- a/drivers/crypto/openssl/meson.build +++ b/drivers/crypto/openssl/meson.build @@ -15,4 +15,4 @@ endif deps += 'bus_vdev' sources = files('rte_openssl_pmd.c', 'rte_openssl_pmd_ops.c') ext_deps += dep -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/dma/cnxk/meson.build b/drivers/dma/cnxk/meson.build index 252e5ff78b..b868fb14cb 100644 --- a/drivers/dma/cnxk/meson.build +++ b/drivers/dma/cnxk/meson.build @@ -3,4 +3,4 @@ deps += ['bus_pci', 'common_cnxk', 'dmadev'] sources = files('cnxk_dmadev.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/dma/skeleton/meson.build b/drivers/dma/skeleton/meson.build index 2b0422ce61..77055683ad 100644 --- a/drivers/dma/skeleton/meson.build +++ b/drivers/dma/skeleton/meson.build @@ -5,4 +5,4 @@ deps += ['dmadev', 'kvargs', 'ring', 'bus_vdev'] sources = files( 'skeleton_dmadev.c', ) -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/event/cnxk/meson.build b/drivers/event/cnxk/meson.build index aa42ab3a90..3517e79341 100644 --- a/drivers/event/cnxk/meson.build +++ b/drivers/event/cnxk/meson.build @@ -479,4 +479,4 @@ foreach flag: extra_flags endforeach deps += ['bus_pci', 'common_cnxk', 'net_cnxk', 'crypto_cnxk'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/event/dsw/meson.build b/drivers/event/dsw/meson.build index e6808c0f71..01af94165f 100644 --- a/drivers/event/dsw/meson.build +++ b/drivers/event/dsw/meson.build @@ -6,4 +6,4 @@ if cc.has_argument('-Wno-format-nonliteral') cflags += '-Wno-format-nonliteral' endif sources = files('dsw_evdev.c', 'dsw_event.c', 'dsw_xstats.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/event/opdl/meson.build b/drivers/event/opdl/meson.build index 7abef44609..8613b2a746 100644 --- a/drivers/event/opdl/meson.build +++ b/drivers/event/opdl/meson.build @@ -9,4 +9,4 @@ sources = files( 'opdl_test.c', ) deps += ['bus_vdev'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/event/skeleton/meson.build b/drivers/event/skeleton/meson.build index fa6a5e0a9f..6e788cfcee 100644 --- a/drivers/event/skeleton/meson.build +++ b/drivers/event/skeleton/meson.build @@ -3,4 +3,4 @@ sources = files('skeleton_eventdev.c') deps += ['bus_pci', 'bus_vdev'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/event/sw/meson.build b/drivers/event/sw/meson.build index 8d815dfa84..3a3ebd72a3 100644 --- a/drivers/event/sw/meson.build +++ b/drivers/event/sw/meson.build @@ -9,4 +9,4 @@ sources = files( 'sw_evdev.c', ) deps += ['hash', 'bus_vdev'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/mempool/bucket/meson.build b/drivers/mempool/bucket/meson.build index 94c060904b..d0ec523237 100644 --- a/drivers/mempool/bucket/meson.build +++ b/drivers/mempool/bucket/meson.build @@ -12,4 +12,4 @@ if is_windows endif sources = files('rte_mempool_bucket.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/mempool/cnxk/meson.build b/drivers/mempool/cnxk/meson.build index d8bcc41ca0..50856ecde8 100644 --- a/drivers/mempool/cnxk/meson.build +++ b/drivers/mempool/cnxk/meson.build @@ -17,4 +17,4 @@ sources = files( ) deps += ['eal', 'mbuf', 'kvargs', 'bus_pci', 'common_cnxk', 'mempool'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/mempool/ring/meson.build b/drivers/mempool/ring/meson.build index 65d203d4b7..a25e9ebc16 100644 --- a/drivers/mempool/ring/meson.build +++ b/drivers/mempool/ring/meson.build @@ -2,4 +2,4 @@ # Copyright(c) 2017 Intel Corporation sources = files('rte_mempool_ring.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/mempool/stack/meson.build b/drivers/mempool/stack/meson.build index 961e90fc04..95f69042ae 100644 --- a/drivers/mempool/stack/meson.build +++ b/drivers/mempool/stack/meson.build @@ -4,4 +4,4 @@ sources = files('rte_mempool_stack.c') deps += ['stack'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/meson.build b/drivers/meson.build index 0618c31a69..2aefa146a7 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -109,7 +109,7 @@ foreach subpath:subdirs ext_deps = [] pkgconfig_extra_libs = [] testpmd_sources = [] - pmd_supports_disable_iova_as_pa = false + require_iova_in_mbuf = true if not enable_drivers.contains(drv_path) build = false @@ -127,9 +127,9 @@ foreach subpath:subdirs # pull in driver directory which should update all the local variables subdir(drv_path) - if dpdk_conf.get('RTE_IOVA_AS_PA') == 0 and not pmd_supports_disable_iova_as_pa and not always_enable.contains(drv_path) + if not get_option('enable_iova_as_pa') and require_iova_in_mbuf and not always_enable.contains(drv_path) build = false - reason = 'driver does not support disabling IOVA as PA mode' + reason = 'requires IOVA in mbuf' endif # get dependency objs from strings diff --git a/drivers/net/af_packet/meson.build b/drivers/net/af_packet/meson.build index bab008d083..f45e4491d4 100644 --- a/drivers/net/af_packet/meson.build +++ b/drivers/net/af_packet/meson.build @@ -6,4 +6,4 @@ if not is_linux reason = 'only supported on Linux' endif sources = files('rte_eth_af_packet.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build index 979b914bb6..9a8dbb4d49 100644 --- a/drivers/net/af_xdp/meson.build +++ b/drivers/net/af_xdp/meson.build @@ -71,4 +71,4 @@ if build endif endif -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build index 29022712cb..83326c0d63 100644 --- a/drivers/net/bonding/meson.build +++ b/drivers/net/bonding/meson.build @@ -22,4 +22,4 @@ deps += 'sched' # needed for rte_bitmap.h deps += ['ip_frag'] headers = files('rte_eth_bond.h', 'rte_eth_bond_8023ad.h') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/cnxk/meson.build b/drivers/net/cnxk/meson.build index c7ca24d437..c1da121a15 100644 --- a/drivers/net/cnxk/meson.build +++ b/drivers/net/cnxk/meson.build @@ -195,4 +195,4 @@ foreach flag: extra_flags endforeach headers = files('rte_pmd_cnxk.h') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/failsafe/meson.build b/drivers/net/failsafe/meson.build index bf8f791984..513de17535 100644 --- a/drivers/net/failsafe/meson.build +++ b/drivers/net/failsafe/meson.build @@ -27,4 +27,4 @@ sources = files( 'failsafe_ops.c', 'failsafe_rxtx.c', ) -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/hns3/meson.build b/drivers/net/hns3/meson.build index e1a5afa2ec..743fae9db7 100644 --- a/drivers/net/hns3/meson.build +++ b/drivers/net/hns3/meson.build @@ -13,9 +13,7 @@ if arch_subdir != 'x86' and arch_subdir != 'arm' or not dpdk_conf.get('RTE_ARCH_ subdir_done() endif -if dpdk_conf.get('RTE_IOVA_AS_PA') == 0 - build = false - reason = 'driver does not support disabling IOVA as PA mode' +if not get_option('enable_iova_as_pa') subdir_done() endif diff --git a/drivers/net/ice/ice_rxtx_common_avx.h b/drivers/net/ice/ice_rxtx_common_avx.h index e69e23997f..dacb87dcb0 100644 --- a/drivers/net/ice/ice_rxtx_common_avx.h +++ b/drivers/net/ice/ice_rxtx_common_avx.h @@ -54,7 +54,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512) mb0 = rxep[0].mbuf; mb1 = rxep[1].mbuf; -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* 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); @@ -62,7 +62,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512) vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* convert pa to dma_addr hdr/data */ dma_addr0 = _mm_unpackhi_epi64(vaddr0, vaddr0); dma_addr1 = _mm_unpackhi_epi64(vaddr1, vaddr1); @@ -105,7 +105,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512) mb6 = rxep[6].mbuf; mb7 = rxep[7].mbuf; -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* 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); @@ -142,7 +142,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512) _mm512_inserti64x4(_mm512_castsi256_si512(vaddr4_5), vaddr6_7, 1); -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* convert pa to dma_addr hdr/data */ dma_addr0_3 = _mm512_unpackhi_epi64(vaddr0_3, vaddr0_3); dma_addr4_7 = _mm512_unpackhi_epi64(vaddr4_7, vaddr4_7); @@ -177,7 +177,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512) mb2 = rxep[2].mbuf; mb3 = rxep[3].mbuf; -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* 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); @@ -198,7 +198,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512) _mm256_inserti128_si256(_mm256_castsi128_si256(vaddr2), vaddr3, 1); -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* convert pa to dma_addr hdr/data */ dma_addr0_1 = _mm256_unpackhi_epi64(vaddr0_1, vaddr0_1); dma_addr2_3 = _mm256_unpackhi_epi64(vaddr2_3, vaddr2_3); diff --git a/drivers/net/ice/ice_rxtx_vec_sse.c b/drivers/net/ice/ice_rxtx_vec_sse.c index 72dfd58308..71fdd6ffb5 100644 --- a/drivers/net/ice/ice_rxtx_vec_sse.c +++ b/drivers/net/ice/ice_rxtx_vec_sse.c @@ -68,7 +68,7 @@ ice_rxq_rearm(struct ice_rx_queue *rxq) mb0 = rxep[0].mbuf; mb1 = rxep[1].mbuf; -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* 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); @@ -76,7 +76,7 @@ ice_rxq_rearm(struct ice_rx_queue *rxq) vaddr0 = _mm_loadu_si128((__m128i *)&mb0->buf_addr); vaddr1 = _mm_loadu_si128((__m128i *)&mb1->buf_addr); -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /* convert pa to dma_addr hdr/data */ dma_addr0 = _mm_unpackhi_epi64(vaddr0, vaddr0); dma_addr1 = _mm_unpackhi_epi64(vaddr1, vaddr1); diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build index 123b190f72..5e90afcb9b 100644 --- a/drivers/net/ice/meson.build +++ b/drivers/net/ice/meson.build @@ -78,4 +78,4 @@ sources += files( 'ice_dcf_parent.c', 'ice_dcf_sched.c', ) -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/memif/meson.build b/drivers/net/memif/meson.build index 28416a982f..b890984b46 100644 --- a/drivers/net/memif/meson.build +++ b/drivers/net/memif/meson.build @@ -12,4 +12,4 @@ sources = files( ) deps += ['hash'] -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/null/meson.build b/drivers/net/null/meson.build index 4a483955a7..076b9937c1 100644 --- a/drivers/net/null/meson.build +++ b/drivers/net/null/meson.build @@ -8,4 +8,4 @@ if is_windows endif sources = files('rte_eth_null.c') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/pcap/meson.build b/drivers/net/pcap/meson.build index a5a2971f0e..de2a70ef0b 100644 --- a/drivers/net/pcap/meson.build +++ b/drivers/net/pcap/meson.build @@ -15,4 +15,4 @@ ext_deps += pcap_dep if is_windows ext_deps += cc.find_library('iphlpapi', required: true) endif -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/ring/meson.build b/drivers/net/ring/meson.build index 72792e26b0..2cd0e97e56 100644 --- a/drivers/net/ring/meson.build +++ b/drivers/net/ring/meson.build @@ -9,4 +9,4 @@ endif sources = files('rte_eth_ring.c') headers = files('rte_eth_ring.h') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/net/tap/meson.build b/drivers/net/tap/meson.build index 4c9a9eac2b..b07ce68e48 100644 --- a/drivers/net/tap/meson.build +++ b/drivers/net/tap/meson.build @@ -35,4 +35,4 @@ foreach arg:args config.set(arg[0], cc.has_header_symbol(arg[1], arg[2])) endforeach configure_file(output : 'tap_autoconf.h', configuration : config) -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/raw/cnxk_bphy/meson.build b/drivers/raw/cnxk_bphy/meson.build index ffb0ee6b7e..bb5d2ffb80 100644 --- a/drivers/raw/cnxk_bphy/meson.build +++ b/drivers/raw/cnxk_bphy/meson.build @@ -10,4 +10,4 @@ sources = files( 'cnxk_bphy_irq.c', ) headers = files('rte_pmd_bphy.h') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/raw/cnxk_gpio/meson.build b/drivers/raw/cnxk_gpio/meson.build index f52a7be9eb..9d9a527392 100644 --- a/drivers/raw/cnxk_gpio/meson.build +++ b/drivers/raw/cnxk_gpio/meson.build @@ -9,4 +9,4 @@ sources = files( 'cnxk_gpio_selftest.c', ) headers = files('rte_pmd_cnxk_gpio.h') -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/drivers/raw/skeleton/meson.build b/drivers/raw/skeleton/meson.build index bfb8fd8bcc..9d5fcf6514 100644 --- a/drivers/raw/skeleton/meson.build +++ b/drivers/raw/skeleton/meson.build @@ -6,4 +6,4 @@ sources = files( 'skeleton_rawdev.c', 'skeleton_rawdev_test.c', ) -pmd_supports_disable_iova_as_pa = true +require_iova_in_mbuf = false diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c index fabafbc39b..e39b6643ee 100644 --- a/lib/eal/linux/eal.c +++ b/lib/eal/linux/eal.c @@ -1134,7 +1134,7 @@ rte_eal_init(int argc, char **argv) return -1; } - if (rte_eal_iova_mode() == RTE_IOVA_PA && !RTE_IOVA_AS_PA) { + if (rte_eal_iova_mode() == RTE_IOVA_PA && !RTE_IOVA_IN_MBUF) { rte_eal_init_alert("Cannot use IOVA as 'PA' as it is disabled during build"); rte_errno = EINVAL; return -1; diff --git a/lib/mbuf/rte_mbuf.c b/lib/mbuf/rte_mbuf.c index cfd8062f1e..686e797c80 100644 --- a/lib/mbuf/rte_mbuf.c +++ b/lib/mbuf/rte_mbuf.c @@ -388,7 +388,7 @@ int rte_mbuf_check(const struct rte_mbuf *m, int is_header, *reason = "bad mbuf pool"; return -1; } - if (RTE_IOVA_AS_PA && rte_mbuf_iova_get(m) == 0) { + if (RTE_IOVA_IN_MBUF && rte_mbuf_iova_get(m) == 0) { *reason = "bad IO addr"; return -1; } diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h index 3a82eb136d..bc41eac10d 100644 --- a/lib/mbuf/rte_mbuf.h +++ b/lib/mbuf/rte_mbuf.h @@ -146,7 +146,7 @@ static inline uint16_t rte_pktmbuf_priv_size(struct rte_mempool *mp); static inline rte_iova_t rte_mbuf_iova_get(const struct rte_mbuf *m) { -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF return m->buf_iova; #else return (rte_iova_t)m->buf_addr; @@ -164,7 +164,7 @@ rte_mbuf_iova_get(const struct rte_mbuf *m) static inline void rte_mbuf_iova_set(struct rte_mbuf *m, rte_iova_t iova) { -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF m->buf_iova = iova; #else RTE_SET_USED(m); diff --git a/lib/mbuf/rte_mbuf_core.h b/lib/mbuf/rte_mbuf_core.h index a30e1e0eaf..dfffb6e5e6 100644 --- a/lib/mbuf/rte_mbuf_core.h +++ b/lib/mbuf/rte_mbuf_core.h @@ -466,11 +466,11 @@ struct rte_mbuf { RTE_MARKER cacheline0; void *buf_addr; /**< Virtual address of segment buffer. */ -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /** * Physical address of segment buffer. * This field is undefined if the build is configured to use only - * virtual address as IOVA (i.e. RTE_IOVA_AS_PA is 0). + * virtual address as IOVA (i.e. RTE_IOVA_IN_MBUF is 0). * Force alignment to 8-bytes, so as to ensure we have the exact * same mbuf cacheline0 layout for 32-bit and 64-bit. This makes * working on vector drivers easier. @@ -599,7 +599,7 @@ struct rte_mbuf { /* second cache line - fields only used in slow path or on TX */ RTE_MARKER cacheline1 __rte_cache_min_aligned; -#if RTE_IOVA_AS_PA +#if RTE_IOVA_IN_MBUF /** * Next segment of scattered packet. Must be NULL in the last * segment or in case of non-segmented packet. @@ -608,7 +608,7 @@ struct rte_mbuf { #else /** * Reserved for dynamic fields - * when the next pointer is in first cache line (i.e. RTE_IOVA_AS_PA is 0). + * when the next pointer is in first cache line (i.e. RTE_IOVA_IN_MBUF is 0). */ uint64_t dynfield2; #endif diff --git a/lib/mbuf/rte_mbuf_dyn.c b/lib/mbuf/rte_mbuf_dyn.c index 35839e938c..5049508bea 100644 --- a/lib/mbuf/rte_mbuf_dyn.c +++ b/lib/mbuf/rte_mbuf_dyn.c @@ -128,7 +128,7 @@ init_shared_mem(void) */ memset(shm, 0, sizeof(*shm)); mark_free(dynfield1); -#if !RTE_IOVA_AS_PA +#if !RTE_IOVA_IN_MBUF mark_free(dynfield2); #endif diff --git a/lib/meson.build b/lib/meson.build index 2bc0932ad5..fc7abd4aa3 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -93,7 +93,7 @@ dpdk_libs_deprecated += [ disabled_libs = [] opt_disabled_libs = run_command(list_dir_globs, get_option('disable_libs'), check: true).stdout().split() -if dpdk_conf.get('RTE_IOVA_AS_PA') == 0 +if not get_option('enable_iova_as_pa') opt_disabled_libs += ['kni'] endif foreach l:opt_disabled_libs diff --git a/meson_options.txt b/meson_options.txt index 08528492f7..82c8297065 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -41,7 +41,7 @@ option('max_lcores', type: 'string', value: 'default', description: option('max_numa_nodes', type: 'string', value: 'default', description: 'Set the highest NUMA node supported by EAL; "default" is different per-arch, "detect" detects the highest NUMA node on the build machine.') option('enable_iova_as_pa', type: 'boolean', value: true, description: - 'Support for IOVA as physical address. Disabling removes the buf_iova field of mbuf.') + 'Support the use of physical addresses for IO addresses, such as used by UIO or VFIO in no-IOMMU mode. When disabled, DPDK can only run with IOMMU support for address mappings, but will have more space available in the mbuf structure.') option('mbuf_refcnt_atomic', type: 'boolean', value: true, description: 'Atomically access the mbuf refcnt.') option('platform', type: 'string', value: 'native', description: -- 2.39.1