drivers: skip build of sub-libs not supporting IOVA mode
Checks
Commit Message
If IOVA as PA is disabled and the driver does not support IOVA as VA,
the build of the driver was disabled.
Unfortunately some drivers were building some sub-libraries
(with specific options for vector paths) which were not disabled.
The build parsing of those drivers need to be skipped earlier
to avoid defining the sub-libraries.
Fixes: a986c2b7973d ("build: add option to configure IOVA mode as PA")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/common/idpf/meson.build | 4 ++++
drivers/event/dlb2/meson.build | 5 ++++-
drivers/meson.build | 4 ++--
drivers/net/bnxt/meson.build | 4 ++++
drivers/net/enic/meson.build | 4 ++++
drivers/net/hns3/meson.build | 4 +---
drivers/net/i40e/meson.build | 4 ++++
drivers/net/iavf/meson.build | 3 +++
drivers/net/virtio/meson.build | 4 ++++
9 files changed, 30 insertions(+), 6 deletions(-)
Comments
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Sunday, February 19, 2023 7:55 PM
> To: dev@dpdk.org
> Cc: David Marchand <david.marchand@redhat.com>; Richardson, Bruce
> <bruce.richardson@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>;
> stable@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; McDaniel, Timothy <timothy.mcdaniel@intel.com>;
> Ajit Khaparde <ajit.khaparde@broadcom.com>; Somnath Kotur
> <somnath.kotur@broadcom.com>; Daley, John <johndale@cisco.com>;
> Hyong Youb Kim <hyonkim@cisco.com>; Dongdong Liu
> <liudongdong3@huawei.com>; Yisen Zhuang <yisen.zhuang@huawei.com>;
> Zhang, Yuying <yuying.zhang@intel.com>; Maxime Coquelin
> <maxime.coquelin@redhat.com>; Xia, Chenbo <chenbo.xia@intel.com>;
> Shijith Thotton <sthotton@marvell.com>; Matz, Olivier
> <olivier.matz@6wind.com>
> Subject: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
>
> If IOVA as PA is disabled and the driver does not support IOVA as VA, the
> build of the driver was disabled.
> Unfortunately some drivers were building some sub-libraries (with specific
> options for vector paths) which were not disabled.
>
> The build parsing of those drivers need to be skipped earlier to avoid
> defining the sub-libraries.
>
> Fixes: a986c2b7973d ("build: add option to configure IOVA mode as PA")
> Cc: stable@dpdk.org
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> drivers/common/idpf/meson.build | 4 ++++
> drivers/event/dlb2/meson.build | 5 ++++-
> drivers/meson.build | 4 ++--
> drivers/net/bnxt/meson.build | 4 ++++
> drivers/net/enic/meson.build | 4 ++++
> drivers/net/hns3/meson.build | 4 +---
> drivers/net/i40e/meson.build | 4 ++++
> drivers/net/iavf/meson.build | 3 +++
> drivers/net/virtio/meson.build | 4 ++++
> 9 files changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/common/idpf/meson.build
> b/drivers/common/idpf/meson.build index 58059ef443..74c0e92cac 100644
> --- a/drivers/common/idpf/meson.build
> +++ b/drivers/common/idpf/meson.build
> @@ -1,6 +1,10 @@
> # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2022 Intel
> Corporation
>
> +if not get_option('enable_iova_as_pa')
> + subdir_done()
> +endif
> +
> deps += ['mbuf']
>
> sources = files(
> diff --git a/drivers/event/dlb2/meson.build
> b/drivers/event/dlb2/meson.build index a2e60273c5..8ae7db0011 100644
> --- a/drivers/event/dlb2/meson.build
> +++ b/drivers/event/dlb2/meson.build
> @@ -1,4 +1,3 @@
> -
> # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019-2020 Intel
> Corporation
>
> @@ -8,6 +7,10 @@ if not is_linux or not dpdk_conf.has('RTE_ARCH_X86_64')
> subdir_done()
> endif
>
> +if not get_option('enable_iova_as_pa')
> + subdir_done()
> +endif
> +
> sources = files(
> 'dlb2.c',
> 'dlb2_iface.c',
> diff --git a/drivers/meson.build b/drivers/meson.build index
> 0618c31a69..9c10e2633d 100644
> --- a/drivers/meson.build
> +++ b/drivers/meson.build
> @@ -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 not
> + pmd_supports_disable_iova_as_pa and not
> + always_enable.contains(drv_path)
> build = false
> - reason = 'driver does not support disabling IOVA as PA mode'
> + reason = 'IOVA as VA not supported'
> endif
If we check enable_iova_as_pa for each unsupported driver , do we still need "pmd_supports_disable_iova_as_pa"?
02/03/2023 14:52, Zhang, Qi Z:
> From: Thomas Monjalon <thomas@monjalon.net>
> > If IOVA as PA is disabled and the driver does not support IOVA as VA, the
> > build of the driver was disabled.
> > Unfortunately some drivers were building some sub-libraries (with specific
> > options for vector paths) which were not disabled.
> >
> > The build parsing of those drivers need to be skipped earlier to avoid
> > defining the sub-libraries.
> >
> > Fixes: a986c2b7973d ("build: add option to configure IOVA mode as PA")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
[...]
> > --- a/drivers/meson.build
> > +++ b/drivers/meson.build
> > @@ -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 not
> > + pmd_supports_disable_iova_as_pa and not
> > + always_enable.contains(drv_path)
> > build = false
> > - reason = 'driver does not support disabling IOVA as PA mode'
> > + reason = 'IOVA as VA not supported'
> > endif
>
> If we check enable_iova_as_pa for each unsupported driver , do we still need "pmd_supports_disable_iova_as_pa"?
They are a bit redundant.
The idea is to use pmd_supports_disable_iova_as_pa (could be renamed)
as it is simpler to use.
But in the case of drivers having sub-libs (always enabled),
we need an extra check of enable_iova_as_pa inside the driver file.
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Thursday, March 2, 2023 9:58 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; David Marchand <david.marchand@redhat.com>;
> Richardson, Bruce <bruce.richardson@intel.com>; stable@dpdk.org; Wu,
> Jingjing <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>;
> McDaniel, Timothy <timothy.mcdaniel@intel.com>; Ajit Khaparde
> <ajit.khaparde@broadcom.com>; Somnath Kotur
> <somnath.kotur@broadcom.com>; Daley, John <johndale@cisco.com>;
> Hyong Youb Kim <hyonkim@cisco.com>; Dongdong Liu
> <liudongdong3@huawei.com>; Yisen Zhuang <yisen.zhuang@huawei.com>;
> Zhang, Yuying <yuying.zhang@intel.com>; Maxime Coquelin
> <maxime.coquelin@redhat.com>; Xia, Chenbo <chenbo.xia@intel.com>;
> Shijith Thotton <sthotton@marvell.com>; Matz, Olivier
> <olivier.matz@6wind.com>
> Subject: Re: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
>
> 02/03/2023 14:52, Zhang, Qi Z:
> > From: Thomas Monjalon <thomas@monjalon.net>
> > > If IOVA as PA is disabled and the driver does not support IOVA as
> > > VA, the build of the driver was disabled.
> > > Unfortunately some drivers were building some sub-libraries (with
> > > specific options for vector paths) which were not disabled.
> > >
> > > The build parsing of those drivers need to be skipped earlier to
> > > avoid defining the sub-libraries.
> > >
> > > Fixes: a986c2b7973d ("build: add option to configure IOVA mode as
> > > PA")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> [...]
> > > --- a/drivers/meson.build
> > > +++ b/drivers/meson.build
> > > @@ -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 not
> > > + pmd_supports_disable_iova_as_pa and not
> > > + always_enable.contains(drv_path)
> > > build = false
> > > - reason = 'driver does not support disabling IOVA as PA mode'
> > > + reason = 'IOVA as VA not supported'
> > > endif
> >
> > If we check enable_iova_as_pa for each unsupported driver , do we still
> need "pmd_supports_disable_iova_as_pa"?
>
> They are a bit redundant.
That's why I prefer my previous solution for i40e and iavf,
because, someday we may claim pmd_supports_disable_iova_as_pa = true but still leave avx part not be fixed.
> The idea is to use pmd_supports_disable_iova_as_pa (could be renamed) as
> it is simpler to use.
> But in the case of drivers having sub-libs (always enabled), we need an extra
> check of enable_iova_as_pa inside the driver file.
>
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Sunday, 19 February 2023 12.55
>
> If IOVA as PA is disabled and the driver does not support IOVA as VA,
> the build of the driver was disabled.
> Unfortunately some drivers were building some sub-libraries
> (with specific options for vector paths) which were not disabled.
>
> The build parsing of those drivers need to be skipped earlier
> to avoid defining the sub-libraries.
>
> Fixes: a986c2b7973d ("build: add option to configure IOVA mode as PA")
> Cc: stable@dpdk.org
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
Acked-by: Morten Brørup <mb@smartsharesystems.com>
>If IOVA as PA is disabled and the driver does not support IOVA as VA,
>the build of the driver was disabled.
>Unfortunately some drivers were building some sub-libraries
>(with specific options for vector paths) which were not disabled.
>
>The build parsing of those drivers need to be skipped earlier
>to avoid defining the sub-libraries.
>
>Fixes: a986c2b7973d ("build: add option to configure IOVA mode as PA")
>Cc: stable@dpdk.org
>
>Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>---
Acked-by: Shijith Thotton <sthotton@marvell.com>
02/03/2023 15:16, Zhang, Qi Z:
> From: Thomas Monjalon <thomas@monjalon.net>
> > 02/03/2023 14:52, Zhang, Qi Z:
> > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > If IOVA as PA is disabled and the driver does not support IOVA as
> > > > VA, the build of the driver was disabled.
> > > > Unfortunately some drivers were building some sub-libraries (with
> > > > specific options for vector paths) which were not disabled.
> > > >
> > > > The build parsing of those drivers need to be skipped earlier to
> > > > avoid defining the sub-libraries.
> > > >
> > > > Fixes: a986c2b7973d ("build: add option to configure IOVA mode as
> > > > PA")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > [...]
> > > > --- a/drivers/meson.build
> > > > +++ b/drivers/meson.build
> > > > @@ -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 not
> > > > + pmd_supports_disable_iova_as_pa and not
> > > > + always_enable.contains(drv_path)
> > > > build = false
> > > > - reason = 'driver does not support disabling IOVA as PA mode'
> > > > + reason = 'IOVA as VA not supported'
> > > > endif
> > >
> > > If we check enable_iova_as_pa for each unsupported driver , do we still
> > need "pmd_supports_disable_iova_as_pa"?
> >
> > They are a bit redundant.
>
> That's why I prefer my previous solution for i40e and iavf,
> because, someday we may claim pmd_supports_disable_iova_as_pa = true but still leave avx part not be fixed.
Both are in the same file, so I don't see how it could be missed,
especially if those lines are placed together.
We have a variable used commonly with a standardized message, we must use it,
at least to allow easy grep of this support.
> > The idea is to use pmd_supports_disable_iova_as_pa (could be renamed) as
> > it is simpler to use.
> > But in the case of drivers having sub-libs (always enabled), we need an extra
> > check of enable_iova_as_pa inside the driver file.
@@ -1,6 +1,10 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2022 Intel Corporation
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
+
deps += ['mbuf']
sources = files(
@@ -1,4 +1,3 @@
-
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2019-2020 Intel Corporation
@@ -8,6 +7,10 @@ if not is_linux or not dpdk_conf.has('RTE_ARCH_X86_64')
subdir_done()
endif
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
+
sources = files(
'dlb2.c',
'dlb2_iface.c',
@@ -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 not pmd_supports_disable_iova_as_pa and not always_enable.contains(drv_path)
build = false
- reason = 'driver does not support disabling IOVA as PA mode'
+ reason = 'IOVA as VA not supported'
endif
# get dependency objs from strings
@@ -8,6 +8,10 @@ if is_windows
subdir_done()
endif
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
+
headers = files('rte_pmd_bnxt.h')
cflags_options = [
'-DSUPPORT_CFA_HW_ALL=1',
@@ -7,6 +7,10 @@ if is_windows
subdir_done()
endif
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
+
sources = files(
'base/vnic_cq.c',
'base/vnic_dev.c',
@@ -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
@@ -13,6 +13,10 @@ if arch_subdir == 'riscv'
subdir_done()
endif
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
+
cflags += ['-DPF_DRIVER',
'-DVF_DRIVER',
'-DINTEGRATED_VF',
@@ -1,6 +1,9 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
cflags += ['-Wno-strict-aliasing']
@@ -7,6 +7,10 @@ if is_windows
subdir_done()
endif
+if not get_option('enable_iova_as_pa')
+ subdir_done()
+endif
+
sources += files(
'virtio.c',
'virtio_cvq.c',