From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <dev-bounces@dpdk.org> Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DD9C0463BC; Fri, 14 Mar 2025 17:14:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 76F664029E; Fri, 14 Mar 2025 17:14:54 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id CFD1940289 for <dev@dpdk.org>; Fri, 14 Mar 2025 17:14:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741968893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QGvkJxgck6f/fDL651tpgGlQ5MSGhSAkKDcATVz8R0g=; b=ZgeAN/uc+NQo1R4RRmDozCRRUI99TmUKOVSrYH4ufaJdgQEYbFhftmlStpTGCOwrEL8Deq yI5/LwWQnByz4i8XEehnc1FjJzNRuviBy4oHNzaBEaBgytw0sm5WVB4ImoFOghHKNQBO72 UjMqSgXnTvuUEokMhsxymvbMDA1cve0= Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-623-Ys-d8ou4Of-WYhgrOskhXg-1; Fri, 14 Mar 2025 12:14:50 -0400 X-MC-Unique: Ys-d8ou4Of-WYhgrOskhXg-1 X-Mimecast-MFC-AGG-ID: Ys-d8ou4Of-WYhgrOskhXg_1741968889 Received: by mail-lf1-f71.google.com with SMTP id 2adb3069b0e04-542a77b4a4cso1373986e87.1 for <dev@dpdk.org>; Fri, 14 Mar 2025 09:14:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741968888; x=1742573688; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QGvkJxgck6f/fDL651tpgGlQ5MSGhSAkKDcATVz8R0g=; b=PKMazUTKYEyob6Oh1Pk98+qthgllxr4fQfkcdSrpC2kwXtrqLjam8ptIxINLaW1ZiR ljc7hJLqJeEetx4Q1FopWL/4TQQAuanM4AOB6p2BVKOhMrFZf+sLOyWXVIf/btbIrZXx QKd+NrzGVmjG+amQvWB2Eholny9hSbZckTeq91DvMYP97FdvUJApWxHfXFmJJn1bS4kv DFbc2biDwBrfSyOd6OJCvvzhjeZX1KZgLooUEQR9QM6V992kRkjts5/O6AxxMWah9Rgg Rkft15+RPy78NGUZId0dykrtl+zMGh0F6E7OsV4g64AOQzrKutf4OqMyT01sdLx+2K1X 5yvQ== X-Gm-Message-State: AOJu0Yx1oqptRn49ZMlEGUXIQr53AlXanOZ+IxNdcitgjWF/+SeTWc2T Sj+gcpjKqUPpySD1V9U5/PSCOBmn7/u7odDv7L+S4CEMJ9Lihq/hOdj/q8+NhFTf0MW/FbYErwt fZU/vu+02dLCTqrRf71MLb3gc83uoqOKxDmCIzDvUlVHQqwe0egJ7F7GLQdca7FInfsYMkxHvJ5 pEFaq1hooc+fnMClU= X-Gm-Gg: ASbGnctNZaglHF5N/JfVELOwDbOe6HMbUxeJ2G8dNXUlrUQKwM7w7zfWphilpdbyJqD yTUuKQ7gaVehO9uyrCbOTfD7Tk7TtIHq9Q2iWV/9qO5YUO/yS5rRhRkTBXpx/IGqtFlN+zKruQM w= X-Received: by 2002:a05:6512:ac2:b0:545:ebf:145f with SMTP id 2adb3069b0e04-549c3c995b1mr1065782e87.53.1741968888358; Fri, 14 Mar 2025 09:14:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEJBCVkL0Ml7ek+UketJ5NUF/s43KW6X5ZCOwWYLecITOjvFFexJIHsOEn5s6gTbdtHUzrV0LQnEMcbzDHyj3Y= X-Received: by 2002:a05:6512:ac2:b0:545:ebf:145f with SMTP id 2adb3069b0e04-549c3c995b1mr1065721e87.53.1741968887753; Fri, 14 Mar 2025 09:14:47 -0700 (PDT) MIME-Version: 1.0 References: <20250305212349.2036410-1-david.marchand@redhat.com> <20250311095609.194523-1-david.marchand@redhat.com> <20250311095609.194523-7-david.marchand@redhat.com> <Z9MWQR_o3m4T_rFt@bricha3-mobl1.ger.corp.intel.com> In-Reply-To: <Z9MWQR_o3m4T_rFt@bricha3-mobl1.ger.corp.intel.com> From: David Marchand <david.marchand@redhat.com> Date: Fri, 14 Mar 2025 17:14:34 +0100 X-Gm-Features: AQ5f1JoT8B5QoN4RqWRtVCiEeiVWs80jJOoQ9CIHFbXZ16npl2stUI-phTf7aeo Message-ID: <CAJFAV8w0MPV7XQpMyiGTsSVDGuW1LctGyrXZ6n52O7AYzij7Zw@mail.gmail.com> Subject: Re: [RFC v3 6/8] build: mark exported symbols To: Bruce Richardson <bruce.richardson@intel.com> Cc: dev@dpdk.org, thomas@monjalon.net, andremue@linux.microsoft.com, Nicolas Chautru <nicolas.chautru@intel.com>, Parav Pandit <parav@nvidia.com>, Xueming Li <xuemingl@nvidia.com>, Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>, Hemant Agrawal <hemant.agrawal@nxp.com>, Sachin Saxena <sachin.saxena@nxp.com>, Rosen Xu <rosen.xu@intel.com>, Chenbo Xia <chenbox@nvidia.com>, Tomasz Duszynski <tduszynski@marvell.com>, Chengwen Feng <fengchengwen@huawei.com>, Long Li <longli@microsoft.com>, Wei Hu <weh@microsoft.com>, Nithin Dabilpuram <ndabilpuram@marvell.com>, Kiran Kumar K <kirankumark@marvell.com>, Sunil Kumar Kori <skori@marvell.com>, Satha Rao <skoteshwar@marvell.com>, Harman Kalra <hkalra@marvell.com>, Anoob Joseph <anoobj@marvell.com>, Andrew Boyer <andrew.boyer@amd.com>, Dariusz Sosnowski <dsosnowski@nvidia.com>, Viacheslav Ovsiienko <viacheslavo@nvidia.com>, Bing Zhao <bingz@nvidia.com>, Ori Kam <orika@nvidia.com>, Suanming Mou <suanmingm@nvidia.com>, Matan Azrad <matan@nvidia.com>, Liron Himi <lironh@marvell.com>, Chaoyong He <chaoyong.he@corigine.com>, Nagadheeraj Rottela <rnagadheeraj@marvell.com>, Srikanth Jampala <jsrikanth@marvell.com>, Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>, Ankur Dwivedi <adwivedi@marvell.com>, Tejasree Kondoj <ktejasree@marvell.com>, Gagandeep Singh <g.singh@nxp.com>, Kai Ji <kai.ji@intel.com>, Vamsi Attunuru <vattunuru@marvell.com>, Pavan Nikhilesh <pbhagavatula@marvell.com>, Shijith Thotton <sthotton@marvell.com>, Pravin Pathak <pravin.pathak@intel.com>, Ashwin Sekhar T K <asekhar@marvell.com>, Igor Russkikh <irusskikh@marvell.com>, Ajit Khaparde <ajit.khaparde@broadcom.com>, Somnath Kotur <somnath.kotur@broadcom.com>, Chas Williams <chas3@att.com>, "Min Hu (Connor)" <humin29@huawei.com>, Ian Stokes <ian.stokes@intel.com>, Vladimir Medvedkin <vladimir.medvedkin@intel.com>, Anatoly Burakov <anatoly.burakov@intel.com>, Jingjing Wu <jingjing.wu@intel.com>, Praveen Shetty <praveen.shetty@intel.com>, Cristian Dumitrescu <cristian.dumitrescu@intel.com>, Maxime Coquelin <maxime.coquelin@redhat.com>, David Hunt <david.hunt@intel.com>, Sivaprasad Tummala <sivaprasad.tummala@amd.com>, Akhil Goyal <gakhil@marvell.com>, Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>, Fan Zhang <fanzhang.oss@gmail.com>, Ashish Gupta <ashish.gupta@marvell.com>, =?UTF-8?Q?Mattias_R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>, Kevin Laatz <kevin.laatz@intel.com>, Wathsala Vithanage <wathsala.vithanage@arm.com>, Tyler Retzlaff <roretzla@linux.microsoft.com>, Jerin Jacob <jerinj@marvell.com>, Harry van Haaren <harry.van.haaren@intel.com>, Min Zhou <zhoumin@loongson.cn>, David Christensen <drc@linux.ibm.com>, Stanislaw Kardach <stanislaw.kardach@gmail.com>, Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>, Byron Marohn <byron.marohn@intel.com>, Yipeng Wang <yipeng1.wang@intel.com>, Ferruh Yigit <ferruh.yigit@amd.com>, Abhinandan Gujjar <abhinandan.gujjar@intel.com>, Amit Prakash Shukla <amitprakashs@marvell.com>, Naga Harish K S V <s.v.naga.harish.k@intel.com>, Erik Gabriel Carrillo <erik.g.carrillo@intel.com>, Elena Agostini <eagostini@nvidia.com>, Zhirun Yan <yanzhirun_163@163.com>, Jiayu Hu <hujiayu.hu@foxmail.com>, Sameh Gobriel <sameh.gobriel@intel.com>, Reshma Pattan <reshma.pattan@intel.com>, Stephen Hemminger <stephen@networkplumber.org>, =?UTF-8?Q?Morten_Br=C3=B8rup?= <mb@smartsharesystems.com>, Srikanth Yalavarthi <syalavarthi@marvell.com>, Jasvinder Singh <jasvinder.singh@intel.com>, Gaetan Rivet <grive@u256.net>, Volodymyr Fialko <vfialko@marvell.com>, Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: fZWNMGGZ2Ekl1lh8PVv8w20MukUUfepsqwq6L3HkBT4_1741968889 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <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>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org On Thu, Mar 13, 2025 at 6:31=E2=80=AFPM Bruce Richardson <bruce.richardson@intel.com> wrote: > > On Tue, Mar 11, 2025 at 10:56:04AM +0100, David Marchand wrote: > > Annotate symbols with newly introduced export macros. > > > > For code not compiled by lib/meson.build or drivers/meson.build (like A= VX > > separate libraries, or sources in /base/ drivers), the exported symbols > > are added in some file listed in the sources so they get caught by > > lib/meson.build or drivers/meson.build. > > > > Signed-off-by: David Marchand <david.marchand@redhat.com> > > --- > > Just checking: for the AVX2 and similar instruction-set-specific function= s, > we don't get errors if those are not present in the actual link phase, e.= g. > when building on non-x86 platforms? We don't need to put an #ifdef around > the exports? We are not there yet, but it is likely MSVC linker will complain, indeed. #ifdef around the exports won't work, we would need a precompiler pass (and exclude rte_exports.h inclusion). Another option would be to provide stubs for those symbols when the additional AVX512 (for example) libraries are not compiled. But I think the simpler is to let a driver/library provide a set of sources to parse for exports... maybe via an extra variable? WDYT? Something like: diff --git a/drivers/meson.build b/drivers/meson.build index 2b0fcd4ef0..6828067fd1 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -269,7 +268,7 @@ foreach subpath:subdirs endif version_map =3D custom_target(lib_name + '_map', command: [gen_version_map, link_mode, abi_version_file, '@OUTPUT@', '@INPUT@'], - input: sources, + input: sources + exported_symbol_sources, output: '_'.join(class, name, 'exports.map')) lk_deps =3D [version_map] diff --git a/drivers/net/intel/idpf/idpf_common_rxtx.c b/drivers/net/intel/idpf/idpf_common_rxtx.c index 5764bd0e9b..b468e1cd57 100644 --- a/drivers/net/intel/idpf/idpf_common_rxtx.c +++ b/drivers/net/intel/idpf/idpf_common_rxtx.c @@ -1647,12 +1647,3 @@ idpf_qc_splitq_rx_vec_setup(struct idpf_rx_queue *rx= q) rxq->bufq2->ops =3D &def_rx_ops_vec; return idpf_rxq_vec_setup_default(rxq->bufq2); } - -/* Export all AVX* symbols */ -RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_recv_pkts_avx2) -RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_xmit_pkts_avx2) -RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_recv_pkts_avx512) -RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_splitq_recv_pkts_avx512) -RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_xmit_pkts_avx512) -RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_splitq_xmit_pkts_avx512) -RTE_EXPORT_INTERNAL_SYMBOL(idpf_qc_tx_vec_avx512_setup) diff --git a/drivers/net/intel/idpf/idpf_common_rxtx_avx2.c b/drivers/net/intel/idpf/idpf_common_rxtx_avx2.c index 43a95466ae..3ff70955c8 100644 --- a/drivers/net/intel/idpf/idpf_common_rxtx_avx2.c +++ b/drivers/net/intel/idpf/idpf_common_rxtx_avx2.c @@ -473,6 +473,7 @@ _idpf_singleq_recv_raw_pkts_vec_avx2(struct idpf_rx_queue *rxq, struct rte_mbuf * Notice: * - nb_pkts < IDPF_DESCS_PER_LOOP, just return no packet */ +RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_recv_pkts_avx2) uint16_t idpf_dp_singleq_recv_pkts_avx2(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { @@ -682,6 +683,7 @@ idpf_singleq_xmit_fixed_burst_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts return nb_pkts; } +RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_xmit_pkts_avx2) uint16_t idpf_dp_singleq_xmit_pkts_avx2(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) diff --git a/drivers/net/intel/idpf/idpf_common_rxtx_avx512.c b/drivers/net/intel/idpf/idpf_common_rxtx_avx512.c index b630d1fcd9..e8bf8149e1 100644 --- a/drivers/net/intel/idpf/idpf_common_rxtx_avx512.c +++ b/drivers/net/intel/idpf/idpf_common_rxtx_avx512.c @@ -530,6 +530,7 @@ _idpf_singleq_recv_raw_pkts_avx512(struct idpf_rx_queue *rxq, * Notice: * - nb_pkts < IDPF_DESCS_PER_LOOP, just return no packet */ +RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_recv_pkts_avx512) uint16_t idpf_dp_singleq_recv_pkts_avx512(void *rx_queue, struct rte_mbuf **rx_pkts= , uint16_t nb_pkts) @@ -987,6 +988,7 @@ _idpf_splitq_recv_raw_pkts_avx512(struct idpf_rx_queue = *rxq, } /* only bufq2 can receive pkts */ +RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_splitq_recv_pkts_avx512) uint16_t idpf_dp_splitq_recv_pkts_avx512(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) @@ -1281,6 +1283,7 @@ idpf_singleq_xmit_pkts_vec_avx512_cmn(void *tx_queue, struct rte_mbuf **tx_pkts, return nb_tx; } +RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_singleq_xmit_pkts_avx512) uint16_t idpf_dp_singleq_xmit_pkts_avx512(void *tx_queue, struct rte_mbuf **tx_pkts= , uint16_t nb_pkts) @@ -1584,6 +1587,7 @@ idpf_splitq_xmit_pkts_vec_avx512_cmn(void *tx_queue, struct rte_mbuf **tx_pkts, return nb_tx; } +RTE_EXPORT_INTERNAL_SYMBOL(idpf_dp_splitq_xmit_pkts_avx512) uint16_t idpf_dp_splitq_xmit_pkts_avx512(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) @@ -1619,6 +1623,7 @@ static const struct idpf_txq_ops avx512_tx_vec_ops = =3D { .release_mbufs =3D idpf_tx_release_mbufs_avx512, }; +RTE_EXPORT_INTERNAL_SYMBOL(idpf_qc_tx_vec_avx512_setup) int __rte_cold idpf_qc_tx_vec_avx512_setup(struct idpf_tx_queue *txq) { diff --git a/drivers/net/intel/idpf/meson.build b/drivers/net/intel/idpf/meson.build index 4b272d02b1..47f6f8736e 100644 --- a/drivers/net/intel/idpf/meson.build +++ b/drivers/net/intel/idpf/meson.build @@ -25,6 +25,7 @@ if arch_subdir =3D=3D 'x86' and dpdk_conf.get('RTE_IOVA_IN_MBUF') =3D=3D 1 include_directories: includes, c_args: [cflags, cc_avx2_flags]) objs +=3D idpf_avx2_lib.extract_objects('idpf_common_rxtx_avx2.c') + exported_symbol_sources +=3D files('idpf_common_rxtx_avx2.c') if cc_has_avx512 cflags +=3D ['-DCC_AVX512_SUPPORT'] @@ -41,6 +42,7 @@ if arch_subdir =3D=3D 'x86' and dpdk_conf.get('RTE_IOVA_IN_MBUF') =3D=3D 1 include_directories: includes, c_args: avx512_args) objs +=3D idpf_common_avx512_lib.extract_objects('idpf_common_rxtx_avx512.c') + exported_symbol_sources +=3D files('idpf_common_rxtx_avx512.c') endif endif --=20 David Marchand