DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
@ 2023-02-19 11:55 Thomas Monjalon
  2023-03-02 13:52 ` Zhang, Qi Z
                   ` (4 more replies)
  0 siblings, 5 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-02-19 11:55 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, stable, Jingjing Wu,
	Beilei Xing, Timothy McDaniel, Ajit Khaparde, Somnath Kotur,
	John Daley, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang,
	Yuying Zhang, Maxime Coquelin, Chenbo Xia, Shijith Thotton,
	Olivier Matz

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
 
             # get dependency objs from strings
diff --git a/drivers/net/bnxt/meson.build b/drivers/net/bnxt/meson.build
index 09d494e90f..c9ca09089a 100644
--- a/drivers/net/bnxt/meson.build
+++ b/drivers/net/bnxt/meson.build
@@ -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',
diff --git a/drivers/net/enic/meson.build b/drivers/net/enic/meson.build
index 7131a25f09..f1f7f5432a 100644
--- a/drivers/net/enic/meson.build
+++ b/drivers/net/enic/meson.build
@@ -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',
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/i40e/meson.build b/drivers/net/i40e/meson.build
index e00c1a9ef9..689606a1de 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -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',
diff --git a/drivers/net/iavf/meson.build b/drivers/net/iavf/meson.build
index 6df771f917..c95503adda 100644
--- a/drivers/net/iavf/meson.build
+++ b/drivers/net/iavf/meson.build
@@ -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']
 
diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build
index 0ffd77024e..b8ba1807fa 100644
--- a/drivers/net/virtio/meson.build
+++ b/drivers/net/virtio/meson.build
@@ -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',
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
  2023-02-19 11:55 [PATCH] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
@ 2023-03-02 13:52 ` Zhang, Qi Z
  2023-03-02 13:57   ` Thomas Monjalon
  2023-03-02 14:26 ` Morten Brørup
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 27+ messages in thread
From: Zhang, Qi Z @ 2023-03-02 13:52 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: David Marchand, Richardson, Bruce, stable, Wu, Jingjing, Xing,
	Beilei, McDaniel, Timothy, Ajit Khaparde, Somnath Kotur, Daley,
	John, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang, Zhang, Yuying,
	Maxime Coquelin, Xia, Chenbo, Shijith Thotton, Matz, Olivier



> -----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"?



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
  2023-03-02 13:52 ` Zhang, Qi Z
@ 2023-03-02 13:57   ` Thomas Monjalon
  2023-03-02 14:16     ` Zhang, Qi Z
  0 siblings, 1 reply; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-02 13:57 UTC (permalink / raw)
  To: Zhang, Qi Z
  Cc: dev, David Marchand, Richardson, Bruce, stable, Wu, Jingjing,
	Xing, Beilei, McDaniel, Timothy, Ajit Khaparde, Somnath Kotur,
	Daley, John, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang, Zhang,
	Yuying, Maxime Coquelin, Xia, Chenbo, Shijith Thotton, Matz,
	Olivier

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.



^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
  2023-03-02 13:57   ` Thomas Monjalon
@ 2023-03-02 14:16     ` Zhang, Qi Z
  2023-03-03 14:23       ` Thomas Monjalon
  0 siblings, 1 reply; 27+ messages in thread
From: Zhang, Qi Z @ 2023-03-02 14:16 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, David Marchand, Richardson, Bruce, stable, Wu, Jingjing,
	Xing, Beilei, McDaniel, Timothy, Ajit Khaparde, Somnath Kotur,
	Daley, John, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang, Zhang,
	Yuying, Maxime Coquelin, Xia, Chenbo, Shijith Thotton, Matz,
	Olivier



> -----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.

 


> 


^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
  2023-02-19 11:55 [PATCH] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
  2023-03-02 13:52 ` Zhang, Qi Z
@ 2023-03-02 14:26 ` Morten Brørup
  2023-03-02 16:01 ` [EXT] " Shijith Thotton
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 27+ messages in thread
From: Morten Brørup @ 2023-03-02 14:26 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, stable, Jingjing Wu,
	Beilei Xing, Timothy McDaniel, Ajit Khaparde, Somnath Kotur,
	John Daley, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang,
	Yuying Zhang, Maxime Coquelin, Chenbo Xia, Shijith Thotton,
	Olivier Matz

> 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>


^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: [EXT] [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
  2023-02-19 11:55 [PATCH] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
  2023-03-02 13:52 ` Zhang, Qi Z
  2023-03-02 14:26 ` Morten Brørup
@ 2023-03-02 16:01 ` Shijith Thotton
  2023-03-06 16:13 ` [PATCH v2 0/2] refactor diasbling IOVA as PA Thomas Monjalon
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
  4 siblings, 0 replies; 27+ messages in thread
From: Shijith Thotton @ 2023-03-02 16:01 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, stable, Jingjing Wu,
	Beilei Xing, Timothy McDaniel, Ajit Khaparde, Somnath Kotur,
	John Daley, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang,
	Yuying Zhang, Maxime Coquelin, Chenbo Xia, Olivier Matz

>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>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] drivers: skip build of sub-libs not supporting IOVA mode
  2023-03-02 14:16     ` Zhang, Qi Z
@ 2023-03-03 14:23       ` Thomas Monjalon
  0 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-03 14:23 UTC (permalink / raw)
  To: Zhang, Qi Z
  Cc: dev, David Marchand, Richardson, Bruce, stable, Wu, Jingjing,
	Xing, Beilei, McDaniel, Timothy, Ajit Khaparde, Somnath Kotur,
	Daley, John, Hyong Youb Kim, Dongdong Liu, Yisen Zhuang, Zhang,
	Yuying, Maxime Coquelin, Xia, Chenbo, Shijith Thotton, Matz,
	Olivier

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.




^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 0/2] refactor diasbling IOVA as PA
  2023-02-19 11:55 [PATCH] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
                   ` (2 preceding siblings ...)
  2023-03-02 16:01 ` [EXT] " Shijith Thotton
@ 2023-03-06 16:13 ` Thomas Monjalon
  2023-03-06 16:13   ` [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
  2023-03-06 16:13   ` [PATCH v2 2/2] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
  4 siblings, 2 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-06 16:13 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton

As discussed recently in some email threads,
it looks simpler to reword the feature "enabling IOVA as PA"
to "requiring IOVA in mbuf".
The Meson option name is not changed (compatibility is kept)
but the variables are renamed.

The second patch (which can be applied alone)
is fixing the build when IOVA as PA is disabled.

v2: renames

Thomas Monjalon (2):
  build: clarify configuration without IOVA field in mbuf
  drivers: skip build of sub-libs not supporting IOVA mode

 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/common/idpf/meson.build        |  4 ++++
 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/dlb2/meson.build         |  5 ++++-
 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/bnxt/meson.build           |  4 ++++
 drivers/net/bonding/meson.build        |  2 +-
 drivers/net/cnxk/meson.build           |  2 +-
 drivers/net/enic/meson.build           |  4 ++++
 drivers/net/failsafe/meson.build       |  2 +-
 drivers/net/hns3/meson.build           |  4 +---
 drivers/net/i40e/meson.build           |  4 ++++
 drivers/net/iavf/meson.build           |  3 +++
 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/net/virtio/meson.build         |  4 ++++
 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 +-
 54 files changed, 87 insertions(+), 63 deletions(-)

-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-06 16:13 ` [PATCH v2 0/2] refactor diasbling IOVA as PA Thomas Monjalon
@ 2023-03-06 16:13   ` Thomas Monjalon
  2023-03-06 16:35     ` Morten Brørup
                       ` (2 more replies)
  2023-03-06 16:13   ` [PATCH v2 2/2] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
  1 sibling, 3 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-06 16:13 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	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, Mattias Rönnblom, 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

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 <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 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-<lcore_id>`` 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


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 2/2] drivers: skip build of sub-libs not supporting IOVA mode
  2023-03-06 16:13 ` [PATCH v2 0/2] refactor diasbling IOVA as PA Thomas Monjalon
  2023-03-06 16:13   ` [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
@ 2023-03-06 16:13   ` Thomas Monjalon
  1 sibling, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-06 16:13 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, stable, Jingjing Wu, Beilei Xing,
	Timothy McDaniel, Ajit Khaparde, Somnath Kotur, John Daley,
	Hyong Youb Kim, Yuying Zhang, Maxime Coquelin, Chenbo Xia,
	Olivier Matz

If IOVA as PA is disabled and the driver requires the IOVA field,
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>
Acked-by: Shijith Thotton <sthotton@marvell.com>
---
 drivers/common/idpf/meson.build | 4 ++++
 drivers/event/dlb2/meson.build  | 5 ++++-
 drivers/net/bnxt/meson.build    | 4 ++++
 drivers/net/enic/meson.build    | 4 ++++
 drivers/net/i40e/meson.build    | 4 ++++
 drivers/net/iavf/meson.build    | 3 +++
 drivers/net/virtio/meson.build  | 4 ++++
 7 files changed, 27 insertions(+), 1 deletion(-)

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/net/bnxt/meson.build b/drivers/net/bnxt/meson.build
index 09d494e90f..c9ca09089a 100644
--- a/drivers/net/bnxt/meson.build
+++ b/drivers/net/bnxt/meson.build
@@ -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',
diff --git a/drivers/net/enic/meson.build b/drivers/net/enic/meson.build
index 7131a25f09..f1f7f5432a 100644
--- a/drivers/net/enic/meson.build
+++ b/drivers/net/enic/meson.build
@@ -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',
diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build
index e00c1a9ef9..689606a1de 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -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',
diff --git a/drivers/net/iavf/meson.build b/drivers/net/iavf/meson.build
index 6df771f917..c95503adda 100644
--- a/drivers/net/iavf/meson.build
+++ b/drivers/net/iavf/meson.build
@@ -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']
 
diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build
index 0ffd77024e..b8ba1807fa 100644
--- a/drivers/net/virtio/meson.build
+++ b/drivers/net/virtio/meson.build
@@ -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',
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-06 16:13   ` [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
@ 2023-03-06 16:35     ` Morten Brørup
  2023-03-06 16:39     ` Bruce Richardson
  2023-03-09  1:43     ` fengchengwen
  2 siblings, 0 replies; 27+ messages in thread
From: Morten Brørup @ 2023-03-06 16:35 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, 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,
	Mattias Rönnblom, 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

> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Monday, 6 March 2023 17.13
> 
> 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 <bruce.richardson@intel.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---

Good clean-up.

Acked-by: Morten Brørup <mb@smartsharesystems.com>


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-06 16:13   ` [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
  2023-03-06 16:35     ` Morten Brørup
@ 2023-03-06 16:39     ` Bruce Richardson
  2023-03-06 19:49       ` Thomas Monjalon
  2023-03-09  1:43     ` fengchengwen
  2 siblings, 1 reply; 27+ messages in thread
From: Bruce Richardson @ 2023-03-06 16:39 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, David Marchand, Qi Zhang, Morten Brørup,
	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, Mattias Rönnblom, 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

On Mon, Mar 06, 2023 at 05:13:27PM +0100, Thomas Monjalon wrote:
> 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 <bruce.richardson@intel.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---

Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>

Couple of comments inline below.

>  app/test/test_mbuf.c                   |  2 +-
<snip>

> @@ -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)

I don't particularly like the always_enable check at the end. If a driver
is set to always-enable and it doesn't support the configured mode, we
should throw an error immediately IMHO, rather than silently continuing to
build the driver.

>                  build = false
> -                reason = 'driver does not support disabling IOVA as PA mode'
> +                reason = 'requires IOVA in mbuf'
>              endif

I think the reason given is more accurate, but for those users not familiar
with the internals of DPDK builds it could be confusing. I think the
message needs to reference the 'enable_iova_as_pa' option. How about?

	reason = 'requires IOVA in mbuf (set enable_iova_as_pa option)'

/Bruce

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-06 16:39     ` Bruce Richardson
@ 2023-03-06 19:49       ` Thomas Monjalon
  0 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-06 19:49 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: dev, David Marchand, Qi Zhang, Morten Brørup,
	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, Mattias Rönnblom, 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

06/03/2023 17:39, Bruce Richardson:
> On Mon, Mar 06, 2023 at 05:13:27PM +0100, Thomas Monjalon wrote:
> > -            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)
> 
> I don't particularly like the always_enable check at the end. If a driver
> is set to always-enable and it doesn't support the configured mode, we
> should throw an error immediately IMHO, rather than silently continuing to
> build the driver.

We can think about the "forced enabling" as a developer test.
But the developer could change the meson file to enable it.
So I'm OK to replace it with an error.

> >                  build = false
> > -                reason = 'driver does not support disabling IOVA as PA mode'
> > +                reason = 'requires IOVA in mbuf'
> >              endif
> 
> I think the reason given is more accurate, but for those users not familiar
> with the internals of DPDK builds it could be confusing. I think the
> message needs to reference the 'enable_iova_as_pa' option. How about?
> 
> 	reason = 'requires IOVA in mbuf (set enable_iova_as_pa option)'

OK good




^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-06 16:13   ` [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
  2023-03-06 16:35     ` Morten Brørup
  2023-03-06 16:39     ` Bruce Richardson
@ 2023-03-09  1:43     ` fengchengwen
  2023-03-09  7:29       ` Thomas Monjalon
  2 siblings, 1 reply; 27+ messages in thread
From: fengchengwen @ 2023-03-09  1:43 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, 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

On 2023/3/7 0:13, Thomas Monjalon wrote:
> 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 <bruce.richardson@intel.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---

...

>  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-<lcore_id>`` 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.

Should add to release 23.03 rst.
The original 22.11 still have RTE_IOVA_AS_PA definition.

...

> 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

Suggest keep original, and replace RTE_IOVA_AS_PA with RTE_IOVA_IN_MBUF:
if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
     subdir_done()
endif
Meson build 0.63.0 already support deprecated a option by a new option.
When update to the new meson verion, the drivers' meson.build will not be modified.

>  
> diff --git a/drivers/net/ice/ice_rxtx_common_avx.h b/drivers/net/ice/ice_rxtx_common_avx.h
> index e69e23997f..dacb87dcb0 100644

...

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-09  1:43     ` fengchengwen
@ 2023-03-09  7:29       ` Thomas Monjalon
  2023-03-09 11:23         ` fengchengwen
  0 siblings, 1 reply; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-09  7:29 UTC (permalink / raw)
  To: fengchengwen
  Cc: dev, David Marchand, Bruce Richardson, Qi Zhang,
	Morten Brørup, 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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, 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

09/03/2023 02:43, fengchengwen:
> On 2023/3/7 0:13, Thomas Monjalon wrote:
> > --- 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-<lcore_id>`` 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.
> 
> Should add to release 23.03 rst.

Yes we could add a note in API changes.

> The original 22.11 still have RTE_IOVA_AS_PA definition.

Yes it was not a good idea to rename in the release notes.

> > -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
> 
> Suggest keep original, and replace RTE_IOVA_AS_PA with RTE_IOVA_IN_MBUF:
> if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
>      subdir_done()
> endif

Why testing the C macro in Meson?
It looks simpler to check the Meson option in Meson.

> Meson build 0.63.0 already support deprecated a option by a new option.
> When update to the new meson verion, the drivers' meson.build will not be modified.

I don't understand this comment.



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-09  7:29       ` Thomas Monjalon
@ 2023-03-09 11:23         ` fengchengwen
  2023-03-09 12:12           ` Thomas Monjalon
  0 siblings, 1 reply; 27+ messages in thread
From: fengchengwen @ 2023-03-09 11:23 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, David Marchand, Bruce Richardson, Qi Zhang,
	Morten Brørup, 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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, 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



On 2023/3/9 15:29, Thomas Monjalon wrote:
> 09/03/2023 02:43, fengchengwen:
>> On 2023/3/7 0:13, Thomas Monjalon wrote:
>>> --- 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-<lcore_id>`` 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.
>>
>> Should add to release 23.03 rst.
> 
> Yes we could add a note in API changes.
> 
>> The original 22.11 still have RTE_IOVA_AS_PA definition.
> 
> Yes it was not a good idea to rename in the release notes.
> 
>>> -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
>>
>> Suggest keep original, and replace RTE_IOVA_AS_PA with RTE_IOVA_IN_MBUF:
>> if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
>>      subdir_done()
>> endif
> 
> Why testing the C macro in Meson?
> It looks simpler to check the Meson option in Meson.

The macro was create in meson.build: config/meson.build:319:dpdk_conf.set10('RTE_IOVA_AS_PA', get_option('enable_iova_as_pa'))
It can be regarded as alias of enable_iova_as_pa.

This commit was mainly used to improve comprehensibility. so we should limit the 'enable_iova_as_pa' usage scope.
and the 'if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0' is more comprehensibility than 'if not get_option('enable_iova_as_pa')'

> 
>> Meson build 0.63.0 already support deprecated a option by a new option.
>> When update to the new meson verion, the drivers' meson.build will not be modified.
> 
> I don't understand this comment.

I mean: the option "enable_iova_as_pa" need deprecated future.

Based on this, I think we should limit 'enable_iova_as_pa' usage scope, this allows us to
reduce the amount of change effort when it's about to deprecated.

> 
> 
> .
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-09 11:23         ` fengchengwen
@ 2023-03-09 12:12           ` Thomas Monjalon
  2023-03-09 13:10             ` Bruce Richardson
  0 siblings, 1 reply; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-09 12:12 UTC (permalink / raw)
  To: Bruce Richardson, fengchengwen
  Cc: dev, David Marchand, Qi Zhang, Morten Brørup,
	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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, 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

09/03/2023 12:23, fengchengwen:
> On 2023/3/9 15:29, Thomas Monjalon wrote:
> > 09/03/2023 02:43, fengchengwen:
> >> On 2023/3/7 0:13, Thomas Monjalon wrote:
> >>> --- 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-<lcore_id>`` 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.
> >>
> >> Should add to release 23.03 rst.
> > 
> > Yes we could add a note in API changes.
> > 
> >> The original 22.11 still have RTE_IOVA_AS_PA definition.
> > 
> > Yes it was not a good idea to rename in the release notes.
> > 
> >>> -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
> >>
> >> Suggest keep original, and replace RTE_IOVA_AS_PA with RTE_IOVA_IN_MBUF:
> >> if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
> >>      subdir_done()
> >> endif
> > 
> > Why testing the C macro in Meson?
> > It looks simpler to check the Meson option in Meson.
> 
> The macro was create in meson.build: config/meson.build:319:dpdk_conf.set10('RTE_IOVA_AS_PA', get_option('enable_iova_as_pa'))
> It can be regarded as alias of enable_iova_as_pa.

It is not strictly an alias, because it can be overriden via CFLAGS.

> This commit was mainly used to improve comprehensibility. so we should limit the 'enable_iova_as_pa' usage scope.
> and the 'if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0' is more comprehensibility than 'if not get_option('enable_iova_as_pa')'

To me, using Meson option in Meson files is more obvious.

Bruce, what do you think?

> >> Meson build 0.63.0 already support deprecated a option by a new option.
> >> When update to the new meson verion, the drivers' meson.build will not be modified.
> > 
> > I don't understand this comment.
> 
> I mean: the option "enable_iova_as_pa" need deprecated future.

Why deprecating this option?

> Based on this, I think we should limit 'enable_iova_as_pa' usage scope, this allows us to
> reduce the amount of change effort when it's about to deprecated.

I don't plan to deprecate this option.
And in general, we should avoid deprecating a compilation option.



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-09 12:12           ` Thomas Monjalon
@ 2023-03-09 13:10             ` Bruce Richardson
  2023-03-13 15:51               ` Thomas Monjalon
  0 siblings, 1 reply; 27+ messages in thread
From: Bruce Richardson @ 2023-03-09 13:10 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: fengchengwen, dev, David Marchand, Qi Zhang, Morten Brørup,
	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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, 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

On Thu, Mar 09, 2023 at 01:12:51PM +0100, Thomas Monjalon wrote:
> 09/03/2023 12:23, fengchengwen:
> > On 2023/3/9 15:29, Thomas Monjalon wrote:
> > > 09/03/2023 02:43, fengchengwen:
> > >> On 2023/3/7 0:13, Thomas Monjalon wrote:
> > >>> --- 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-<lcore_id>`` 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.
> > >>
> > >> Should add to release 23.03 rst.
> > > 
> > > Yes we could add a note in API changes.
> > > 
> > >> The original 22.11 still have RTE_IOVA_AS_PA definition.
> > > 
> > > Yes it was not a good idea to rename in the release notes.
> > > 
> > >>> -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
> > >>
> > >> Suggest keep original, and replace RTE_IOVA_AS_PA with RTE_IOVA_IN_MBUF:
> > >> if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
> > >>      subdir_done()
> > >> endif
> > > 
> > > Why testing the C macro in Meson?
> > > It looks simpler to check the Meson option in Meson.
> > 
> > The macro was create in meson.build: config/meson.build:319:dpdk_conf.set10('RTE_IOVA_AS_PA', get_option('enable_iova_as_pa'))
> > It can be regarded as alias of enable_iova_as_pa.
> 
> It is not strictly an alias, because it can be overriden via CFLAGS.
> 
> > This commit was mainly used to improve comprehensibility. so we should limit the 'enable_iova_as_pa' usage scope.
> > and the 'if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0' is more comprehensibility than 'if not get_option('enable_iova_as_pa')'
> 
> To me, using Meson option in Meson files is more obvious.
> 
> Bruce, what do you think?
> 

I'm not sure it matters much! However, I think of the two, using the
reference to IOVA_IN_MBUF is clearer. It also allows the same terminology
to be used in meson and C files. If we don't want to do a dpdk_conf lookup,
we can always assign the option to a meson variable called iova_in_mbuf.

/Bruce

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf
  2023-03-09 13:10             ` Bruce Richardson
@ 2023-03-13 15:51               ` Thomas Monjalon
  0 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-13 15:51 UTC (permalink / raw)
  To: fengchengwen, Bruce Richardson
  Cc: dev, dev, David Marchand, Qi Zhang, Morten Brørup,
	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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, 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

09/03/2023 14:10, Bruce Richardson:
> On Thu, Mar 09, 2023 at 01:12:51PM +0100, Thomas Monjalon wrote:
> > 09/03/2023 12:23, fengchengwen:
> > > On 2023/3/9 15:29, Thomas Monjalon wrote:
> > > > 09/03/2023 02:43, fengchengwen:
> > > >> On 2023/3/7 0:13, Thomas Monjalon wrote:
> > > >>> --- 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-<lcore_id>`` 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.
> > > >>
> > > >> Should add to release 23.03 rst.
> > > > 
> > > > Yes we could add a note in API changes.
> > > > 
> > > >> The original 22.11 still have RTE_IOVA_AS_PA definition.
> > > > 
> > > > Yes it was not a good idea to rename in the release notes.
> > > > 
> > > >>> -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
> > > >>
> > > >> Suggest keep original, and replace RTE_IOVA_AS_PA with RTE_IOVA_IN_MBUF:
> > > >> if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
> > > >>      subdir_done()
> > > >> endif
> > > > 
> > > > Why testing the C macro in Meson?
> > > > It looks simpler to check the Meson option in Meson.
> > > 
> > > The macro was create in meson.build: config/meson.build:319:dpdk_conf.set10('RTE_IOVA_AS_PA', get_option('enable_iova_as_pa'))
> > > It can be regarded as alias of enable_iova_as_pa.
> > 
> > It is not strictly an alias, because it can be overriden via CFLAGS.
> > 
> > > This commit was mainly used to improve comprehensibility. so we should limit the 'enable_iova_as_pa' usage scope.
> > > and the 'if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0' is more comprehensibility than 'if not get_option('enable_iova_as_pa')'
> > 
> > To me, using Meson option in Meson files is more obvious.
> > 
> > Bruce, what do you think?
> > 
> 
> I'm not sure it matters much! However, I think of the two, using the
> reference to IOVA_IN_MBUF is clearer. It also allows the same terminology
> to be used in meson and C files. If we don't want to do a dpdk_conf lookup,
> we can always assign the option to a meson variable called iova_in_mbuf.

OK I'll query the C macro in the Meson files.



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 0/5] refactor disabling IOVA as PA
  2023-02-19 11:55 [PATCH] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
                   ` (3 preceding siblings ...)
  2023-03-06 16:13 ` [PATCH v2 0/2] refactor diasbling IOVA as PA Thomas Monjalon
@ 2023-03-14 14:29 ` Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
                     ` (4 more replies)
  4 siblings, 5 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-14 14:29 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton

As discussed recently in some email threads,
it looks simpler to reword the feature "enabling IOVA as PA"
to "requiring IOVA in mbuf".
The Meson option name is not changed (compatibility is kept)
but the variables are renamed.

Some patches to allow building of some drivers are integrated.

The last patch is fixing the build when IOVA as PA is disabled.

v3: use C macro, rebase, fixes
v2: renames

Chengwen Feng (2):
  net/hns3: support IOVA forced as VA
  dma/hisilicon: support IOVA forced as VA

Mahipal Challa (1):
  compress/octeontx: support IOVA forced as VA

Thomas Monjalon (2):
  build: clarify configuration without IOVA field in mbuf
  drivers: skip build of sub-libs not supporting IOVA mode

 app/test/test_mbuf.c                  |  2 +-
 config/arm/meson.build                |  4 ++--
 config/meson.build                    |  2 +-
 drivers/bus/auxiliary/meson.build     |  3 +++
 drivers/bus/pci/meson.build           |  2 ++
 drivers/bus/platform/meson.build      |  2 ++
 drivers/bus/vdev/meson.build          |  2 ++
 drivers/bus/vmbus/meson.build         |  3 ++-
 drivers/common/cnxk/meson.build       |  2 +-
 drivers/common/iavf/meson.build       |  3 ++-
 drivers/common/idpf/meson.build       |  4 ++++
 drivers/common/octeontx/meson.build   |  2 ++
 drivers/compress/octeontx/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/hisilicon/meson.build     |  2 ++
 drivers/dma/skeleton/meson.build      |  2 +-
 drivers/event/cnxk/meson.build        |  2 +-
 drivers/event/dlb2/meson.build        |  5 ++++-
 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/octeontx/meson.build  |  2 ++
 drivers/mempool/ring/meson.build      |  2 +-
 drivers/mempool/stack/meson.build     |  2 +-
 drivers/meson.build                   |  6 +++---
 drivers/ml/cnxk/meson.build           |  4 ++--
 drivers/net/af_packet/meson.build     |  2 +-
 drivers/net/af_xdp/meson.build        |  2 +-
 drivers/net/bnxt/meson.build          |  4 ++++
 drivers/net/bonding/meson.build       |  3 ++-
 drivers/net/cnxk/meson.build          |  3 ++-
 drivers/net/cpfl/meson.build          |  4 +---
 drivers/net/enic/meson.build          |  4 ++++
 drivers/net/failsafe/meson.build      |  3 ++-
 drivers/net/hns3/hns3_rxtx_vec_neon.h |  2 +-
 drivers/net/hns3/hns3_rxtx_vec_sve.c  | 13 +++++++++----
 drivers/net/hns3/meson.build          |  8 ++------
 drivers/net/i40e/meson.build          |  4 ++++
 drivers/net/iavf/meson.build          |  3 +++
 drivers/net/ice/ice_rxtx_common_avx.h | 12 ++++++------
 drivers/net/ice/ice_rxtx_vec_sse.c    |  4 ++--
 drivers/net/ice/meson.build           |  3 ++-
 drivers/net/memif/meson.build         |  3 ++-
 drivers/net/null/meson.build          |  2 +-
 drivers/net/pcap/meson.build          |  3 ++-
 drivers/net/ring/meson.build          |  2 +-
 drivers/net/tap/meson.build           |  3 ++-
 drivers/net/virtio/meson.build        |  4 ++++
 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 +-
 66 files changed, 127 insertions(+), 76 deletions(-)

-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
@ 2023-03-14 14:29   ` Thomas Monjalon
  2023-03-15  1:56     ` fengchengwen
  2023-03-14 14:29   ` [PATCH v3 2/5] net/hns3: support IOVA forced as VA Thomas Monjalon
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-14 14:29 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, Olivier Matz, Ruifeng Wang, Parav Pandit,
	Xueming Li, Tomasz Duszynski, Long Li, 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, Mattias Rönnblom, Liang Ma, Peter Mccarthy,
	Jerin Jacob, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Ashwin Sekhar T K, Srikanth Yalavarthi,
	John W. Linville, Ciara Loftus, Chas Williams, Min Hu (Connor),
	Yuying Zhang, Gaetan Rivet, Dongdong Liu, Yisen Zhuang,
	Konstantin Ananyev, Qiming Yang, Jakub Grajciar, Tetsuya Mukawa,
	Jakub Palider, Sachin Saxena, Hemant Agrawal

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.
Some bus drivers are declared compatible.

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 <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
---
 app/test/test_mbuf.c                  |  2 +-
 config/arm/meson.build                |  4 ++--
 config/meson.build                    |  2 +-
 drivers/bus/auxiliary/meson.build     |  3 +++
 drivers/bus/pci/meson.build           |  2 ++
 drivers/bus/platform/meson.build      |  2 ++
 drivers/bus/vdev/meson.build          |  2 ++
 drivers/bus/vmbus/meson.build         |  3 ++-
 drivers/common/cnxk/meson.build       |  2 +-
 drivers/common/iavf/meson.build       |  3 ++-
 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/ml/cnxk/meson.build           |  4 ++--
 drivers/net/af_packet/meson.build     |  2 +-
 drivers/net/af_xdp/meson.build        |  2 +-
 drivers/net/bonding/meson.build       |  3 ++-
 drivers/net/cnxk/meson.build          |  3 ++-
 drivers/net/cpfl/meson.build          |  4 +---
 drivers/net/failsafe/meson.build      |  3 ++-
 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           |  3 ++-
 drivers/net/memif/meson.build         |  3 ++-
 drivers/net/null/meson.build          |  2 +-
 drivers/net/pcap/meson.build          |  3 ++-
 drivers/net/ring/meson.build          |  2 +-
 drivers/net/tap/meson.build           |  3 ++-
 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 +-
 53 files changed, 81 insertions(+), 67 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/drivers/bus/auxiliary/meson.build b/drivers/bus/auxiliary/meson.build
index fcb1a349c4..10468fd130 100644
--- a/drivers/bus/auxiliary/meson.build
+++ b/drivers/bus/auxiliary/meson.build
@@ -11,4 +11,7 @@ if is_linux
             'linux/auxiliary.c',
     )
 endif
+
+require_iova_in_mbuf = false
+
 deps += ['kvargs']
diff --git a/drivers/bus/pci/meson.build b/drivers/bus/pci/meson.build
index f50f039a68..fede114dc7 100644
--- a/drivers/bus/pci/meson.build
+++ b/drivers/bus/pci/meson.build
@@ -30,4 +30,6 @@ if is_windows
     includes += include_directories('windows')
 endif
 
+require_iova_in_mbuf = false
+
 deps += ['kvargs']
diff --git a/drivers/bus/platform/meson.build b/drivers/bus/platform/meson.build
index 417d7b81f8..8633cc4e75 100644
--- a/drivers/bus/platform/meson.build
+++ b/drivers/bus/platform/meson.build
@@ -8,6 +8,8 @@ if not is_linux
     subdir_done()
 endif
 
+require_iova_in_mbuf = false
+
 deps += ['kvargs']
 sources = files(
         'platform_params.c',
diff --git a/drivers/bus/vdev/meson.build b/drivers/bus/vdev/meson.build
index 1532ed4f35..50f0c8918d 100644
--- a/drivers/bus/vdev/meson.build
+++ b/drivers/bus/vdev/meson.build
@@ -8,4 +8,6 @@ sources = files(
 headers = files('rte_bus_vdev.h')
 driver_sdk_headers = files('bus_vdev_driver.h')
 
+require_iova_in_mbuf = false
+
 deps += ['kvargs']
diff --git a/drivers/bus/vmbus/meson.build b/drivers/bus/vmbus/meson.build
index 34988d1d84..86ad9cc4d8 100644
--- a/drivers/bus/vmbus/meson.build
+++ b/drivers/bus/vmbus/meson.build
@@ -6,7 +6,6 @@ if is_windows
     subdir_done()
 endif
 
-
 headers = files('rte_bus_vmbus.h','rte_vmbus_reg.h')
 driver_sdk_headers = files('bus_vmbus_driver.h')
 
@@ -25,3 +24,5 @@ else
     build = false
     reason = 'only supported on Linux'
 endif
+
+require_iova_in_mbuf = false
diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
index b4aa0a050c..402c3249cd 100644
--- a/drivers/common/cnxk/meson.build
+++ b/drivers/common/cnxk/meson.build
@@ -88,4 +88,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..273e88e921 100644
--- a/drivers/common/iavf/meson.build
+++ b/drivers/common/iavf/meson.build
@@ -6,4 +6,5 @@ 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 f5916dc9bb..b85bec235d 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -110,7 +110,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
@@ -128,9 +128,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 dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0 and require_iova_in_mbuf
                 build = false
-                reason = 'driver does not support disabling IOVA as PA mode'
+                reason = 'requires IOVA in mbuf (set enable_iova_as_pa option)'
             endif
 
             # get dependency objs from strings
diff --git a/drivers/ml/cnxk/meson.build b/drivers/ml/cnxk/meson.build
index 393bc629b0..94fa4283b1 100644
--- a/drivers/ml/cnxk/meson.build
+++ b/drivers/ml/cnxk/meson.build
@@ -23,10 +23,10 @@ sources = files(
 
 deps += ['mldev', 'common_cnxk', 'kvargs', 'hash']
 
+require_iova_in_mbuf = false
+
 if get_option('buildtype').contains('debug')
         cflags += [ '-DCNXK_ML_DEV_DEBUG' ]
 else
         cflags += [ '-UCNXK_ML_DEV_DEBUG' ]
 endif
-
-pmd_supports_disable_iova_as_pa = true
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..87c567b149 100644
--- a/drivers/net/bonding/meson.build
+++ b/drivers/net/bonding/meson.build
@@ -22,4 +22,5 @@ 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..8b5773ce65 100644
--- a/drivers/net/cnxk/meson.build
+++ b/drivers/net/cnxk/meson.build
@@ -195,4 +195,5 @@ 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/cpfl/meson.build b/drivers/net/cpfl/meson.build
index 2cf69258e2..8d62ebfd77 100644
--- a/drivers/net/cpfl/meson.build
+++ b/drivers/net/cpfl/meson.build
@@ -7,9 +7,7 @@ if is_windows
     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 dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
     subdir_done()
 endif
 
diff --git a/drivers/net/failsafe/meson.build b/drivers/net/failsafe/meson.build
index bf8f791984..3066d37995 100644
--- a/drivers/net/failsafe/meson.build
+++ b/drivers/net/failsafe/meson.build
@@ -27,4 +27,5 @@ 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..2c71105275 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 dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
     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..460528854a 100644
--- a/drivers/net/ice/meson.build
+++ b/drivers/net/ice/meson.build
@@ -78,4 +78,5 @@ 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..8b2aab1f39 100644
--- a/drivers/net/memif/meson.build
+++ b/drivers/net/memif/meson.build
@@ -12,4 +12,5 @@ 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 a51f8f5211..bad7dc1af7 100644
--- a/drivers/net/null/meson.build
+++ b/drivers/net/null/meson.build
@@ -2,4 +2,4 @@
 # Copyright(c) 2017 Intel Corporation
 
 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..676c55018e 100644
--- a/drivers/net/pcap/meson.build
+++ b/drivers/net/pcap/meson.build
@@ -15,4 +15,5 @@ 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 3534a3cc22..9b713c9370 100644
--- a/drivers/net/ring/meson.build
+++ b/drivers/net/ring/meson.build
@@ -3,4 +3,4 @@
 
 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..5099ccdff1 100644
--- a/drivers/net/tap/meson.build
+++ b/drivers/net/tap/meson.build
@@ -35,4 +35,5 @@ 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 10cef8c905..c37868b7f0 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1129,7 +1129,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 93d66c63e6..c692c33ec4 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 11dcebd1bc..0812ce6026 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -94,7 +94,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 dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
     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


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 2/5] net/hns3: support IOVA forced as VA
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
@ 2023-03-14 14:29   ` Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 3/5] dma/hisilicon: " Thomas Monjalon
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-14 14:29 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, Chengwen Feng, Ruifeng Wang, Dongdong Liu,
	Yisen Zhuang

From: Chengwen Feng <fengchengwen@huawei.com>

Claim PMD does not require IOVA mbuf field,
so it can build when disabling enable_iova_as_pa.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Dongdong Liu <liudongdong3@huawei.com>
---
 drivers/net/hns3/hns3_rxtx_vec_neon.h |  2 +-
 drivers/net/hns3/hns3_rxtx_vec_sve.c  | 13 +++++++++----
 drivers/net/hns3/meson.build          |  6 ++----
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/net/hns3/hns3_rxtx_vec_neon.h b/drivers/net/hns3/hns3_rxtx_vec_neon.h
index 55d9bf817d..6c49c70fc7 100644
--- a/drivers/net/hns3/hns3_rxtx_vec_neon.h
+++ b/drivers/net/hns3/hns3_rxtx_vec_neon.h
@@ -13,7 +13,7 @@ static inline void
 hns3_vec_tx(volatile struct hns3_desc *desc, struct rte_mbuf *pkt)
 {
 	uint64x2_t val1 = {
-		pkt->buf_iova + pkt->data_off,
+		rte_pktmbuf_iova(pkt),
 		((uint64_t)pkt->data_len) << HNS3_TXD_SEND_SIZE_SHIFT
 	};
 	uint64x2_t val2 = {
diff --git a/drivers/net/hns3/hns3_rxtx_vec_sve.c b/drivers/net/hns3/hns3_rxtx_vec_sve.c
index 6f23ba674d..8bfc3de049 100644
--- a/drivers/net/hns3/hns3_rxtx_vec_sve.c
+++ b/drivers/net/hns3/hns3_rxtx_vec_sve.c
@@ -261,10 +261,10 @@ hns3_rxq_rearm_mbuf_sve(struct hns3_rx_queue *rxq)
 	for (i = 0; i < HNS3_DEFAULT_RXQ_REARM_THRESH; i += REARM_LOOP_STEP_NUM,
 		rxep += REARM_LOOP_STEP_NUM, rxdp += REARM_LOOP_STEP_NUM) {
 		uint64_t iova[REARM_LOOP_STEP_NUM];
-		iova[0] = rxep[0].mbuf->buf_iova;
-		iova[1] = rxep[1].mbuf->buf_iova;
-		iova[2] = rxep[2].mbuf->buf_iova;
-		iova[3] = rxep[3].mbuf->buf_iova;
+		iova[0] = rte_mbuf_iova_get(rxep[0].mbuf);
+		iova[1] = rte_mbuf_iova_get(rxep[1].mbuf);
+		iova[2] = rte_mbuf_iova_get(rxep[2].mbuf);
+		iova[3] = rte_mbuf_iova_get(rxep[3].mbuf);
 		svuint64_t siova = svld1_u64(PG64_256BIT, iova);
 		siova = svadd_n_u64_z(PG64_256BIT, siova, RTE_PKTMBUF_HEADROOM);
 		svuint64_t ol_base = svdup_n_u64(0);
@@ -397,8 +397,13 @@ hns3_tx_fill_hw_ring_sve(struct hns3_tx_queue *txq,
 		pg = svwhilelt_b64_u32(i, nb_pkts);
 		base_addr = svld1_u64(pg, (uint64_t *)pkts);
 		/* calc mbuf's field buf_iova address */
+#if RTE_IOVA_IN_MBUF
 		buf_iova = svadd_n_u64_z(pg, base_addr,
 					 offsetof(struct rte_mbuf, buf_iova));
+#else
+		buf_iova = svadd_n_u64_z(pg, base_addr,
+					 offsetof(struct rte_mbuf, buf_addr));
+#endif
 		/* calc mbuf's field data_off address */
 		data_off = svadd_n_u64_z(pg, base_addr,
 					 offsetof(struct rte_mbuf, data_off));
diff --git a/drivers/net/hns3/meson.build b/drivers/net/hns3/meson.build
index 2c71105275..97cb85dcc8 100644
--- a/drivers/net/hns3/meson.build
+++ b/drivers/net/hns3/meson.build
@@ -13,10 +13,6 @@ if arch_subdir != 'x86' and arch_subdir != 'arm' or not dpdk_conf.get('RTE_ARCH_
     subdir_done()
 endif
 
-if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
-    subdir_done()
-endif
-
 sources = files(
         'hns3_cmd.c',
         'hns3_dcb.c',
@@ -37,6 +33,8 @@ sources = files(
         'hns3_dump.c',
 )
 
+require_iova_in_mbuf = false
+
 deps += ['hash']
 
 if arch_subdir == 'arm' and dpdk_conf.get('RTE_ARCH_64')
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 3/5] dma/hisilicon: support IOVA forced as VA
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 2/5] net/hns3: support IOVA forced as VA Thomas Monjalon
@ 2023-03-14 14:29   ` Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 4/5] compress/octeontx: " Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 5/5] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
  4 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-14 14:29 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, Chengwen Feng

From: Chengwen Feng <fengchengwen@huawei.com>

Claim PMD does not require IOVA mbuf field,
so it can build when disabling enable_iova_as_pa.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/dma/hisilicon/meson.build | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/dma/hisilicon/meson.build b/drivers/dma/hisilicon/meson.build
index 0786772442..1098539e20 100644
--- a/drivers/dma/hisilicon/meson.build
+++ b/drivers/dma/hisilicon/meson.build
@@ -17,3 +17,5 @@ deps += ['bus_pci', 'dmadev']
 sources = files(
         'hisi_dmadev.c',
 )
+
+require_iova_in_mbuf = false
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 4/5] compress/octeontx: support IOVA forced as VA
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
                     ` (2 preceding siblings ...)
  2023-03-14 14:29   ` [PATCH v3 3/5] dma/hisilicon: " Thomas Monjalon
@ 2023-03-14 14:29   ` Thomas Monjalon
  2023-03-14 14:29   ` [PATCH v3 5/5] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
  4 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-14 14:29 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, Mahipal Challa, Harman Kalra, Ashish Gupta,
	Fan Zhang

From: Mahipal Challa <mchalla@marvell.com>

Claim octeontx compress, common and mempool drivers
do not require IOVA mbuf field,
so they can build when disabling enable_iova_as_pa.

Signed-off-by: Mahipal Challa <mchalla@marvell.com>
---
 drivers/common/octeontx/meson.build   | 2 ++
 drivers/compress/octeontx/meson.build | 2 ++
 drivers/mempool/octeontx/meson.build  | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/drivers/common/octeontx/meson.build b/drivers/common/octeontx/meson.build
index dc060dfea1..a15e2febf5 100644
--- a/drivers/common/octeontx/meson.build
+++ b/drivers/common/octeontx/meson.build
@@ -9,3 +9,5 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
 endif
 
 sources = files('octeontx_mbox.c')
+
+require_iova_in_mbuf = false
diff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build
index 3a29c3e609..16f973f4d7 100644
--- a/drivers/compress/octeontx/meson.build
+++ b/drivers/compress/octeontx/meson.build
@@ -11,3 +11,5 @@ sources = files('otx_zip.c', 'otx_zip_pmd.c')
 includes += include_directories('include')
 deps += ['mempool_octeontx', 'bus_pci']
 ext_deps += dep
+
+require_iova_in_mbuf = false
diff --git a/drivers/mempool/octeontx/meson.build b/drivers/mempool/octeontx/meson.build
index fb05928129..3ccecac75d 100644
--- a/drivers/mempool/octeontx/meson.build
+++ b/drivers/mempool/octeontx/meson.build
@@ -13,3 +13,5 @@ sources = files(
 )
 
 deps += ['mbuf', 'bus_pci', 'common_octeontx']
+
+require_iova_in_mbuf = false
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 5/5] drivers: skip build of sub-libs not supporting IOVA mode
  2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
                     ` (3 preceding siblings ...)
  2023-03-14 14:29   ` [PATCH v3 4/5] compress/octeontx: " Thomas Monjalon
@ 2023-03-14 14:29   ` Thomas Monjalon
  4 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-14 14:29 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, stable, Jingjing Wu, Beilei Xing,
	Timothy McDaniel, Ajit Khaparde, Somnath Kotur, John Daley,
	Hyong Youb Kim, Yuying Zhang, Maxime Coquelin, Chenbo Xia,
	Olivier Matz

If IOVA as PA is disabled and the driver requires the IOVA field,
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>
Acked-by: Shijith Thotton <sthotton@marvell.com>
---
 drivers/common/idpf/meson.build | 4 ++++
 drivers/event/dlb2/meson.build  | 5 ++++-
 drivers/net/bnxt/meson.build    | 4 ++++
 drivers/net/enic/meson.build    | 4 ++++
 drivers/net/i40e/meson.build    | 4 ++++
 drivers/net/iavf/meson.build    | 3 +++
 drivers/net/virtio/meson.build  | 4 ++++
 7 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/drivers/common/idpf/meson.build b/drivers/common/idpf/meson.build
index 58059ef443..63f60accd9 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 dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
+
 deps += ['mbuf']
 
 sources = files(
diff --git a/drivers/event/dlb2/meson.build b/drivers/event/dlb2/meson.build
index a2e60273c5..515d1795fe 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 dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
+
 sources = files(
         'dlb2.c',
         'dlb2_iface.c',
diff --git a/drivers/net/bnxt/meson.build b/drivers/net/bnxt/meson.build
index 09d494e90f..0288ed6262 100644
--- a/drivers/net/bnxt/meson.build
+++ b/drivers/net/bnxt/meson.build
@@ -8,6 +8,10 @@ if is_windows
     subdir_done()
 endif
 
+if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
+
 headers = files('rte_pmd_bnxt.h')
 cflags_options = [
         '-DSUPPORT_CFA_HW_ALL=1',
diff --git a/drivers/net/enic/meson.build b/drivers/net/enic/meson.build
index 7131a25f09..0a0992c3cb 100644
--- a/drivers/net/enic/meson.build
+++ b/drivers/net/enic/meson.build
@@ -7,6 +7,10 @@ if is_windows
     subdir_done()
 endif
 
+if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
+
 sources = files(
         'base/vnic_cq.c',
         'base/vnic_dev.c',
diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build
index e00c1a9ef9..8e53b87a65 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -13,6 +13,10 @@ if arch_subdir == 'riscv'
     subdir_done()
 endif
 
+if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
+
 cflags += ['-DPF_DRIVER',
     '-DVF_DRIVER',
     '-DINTEGRATED_VF',
diff --git a/drivers/net/iavf/meson.build b/drivers/net/iavf/meson.build
index 6df771f917..fc09ffa2ae 100644
--- a/drivers/net/iavf/meson.build
+++ b/drivers/net/iavf/meson.build
@@ -1,6 +1,9 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
 
+if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
 
 cflags += ['-Wno-strict-aliasing']
 
diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build
index 0ffd77024e..ef016c1566 100644
--- a/drivers/net/virtio/meson.build
+++ b/drivers/net/virtio/meson.build
@@ -7,6 +7,10 @@ if is_windows
     subdir_done()
 endif
 
+if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
+    subdir_done()
+endif
+
 sources += files(
         'virtio.c',
         'virtio_cvq.c',
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf
  2023-03-14 14:29   ` [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
@ 2023-03-15  1:56     ` fengchengwen
  2023-03-16 11:00       ` Thomas Monjalon
  0 siblings, 1 reply; 27+ messages in thread
From: fengchengwen @ 2023-03-15  1:56 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, Olivier Matz, Ruifeng Wang, Parav Pandit,
	Xueming Li, Tomasz Duszynski, Long Li, 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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, Liang Ma, Peter Mccarthy, Jerin Jacob,
	Harry van Haaren, Artem V. Andreev, Andrew Rybchenko,
	Ashwin Sekhar T K, Srikanth Yalavarthi, John W. Linville,
	Ciara Loftus, Chas Williams, Min Hu (Connor),
	Yuying Zhang, Gaetan Rivet, Dongdong Liu, Yisen Zhuang,
	Konstantin Ananyev, Qiming Yang, Jakub Grajciar, Tetsuya Mukawa,
	Jakub Palider, Sachin Saxena, Hemant Agrawal

Acked-by: Chengwen Feng <fengchengwen@huawei.com>

On 2023/3/14 22:29, Thomas Monjalon wrote:
> 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.
> Some bus drivers are declared compatible.
> 
> 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 <bruce.richardson@intel.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
> Acked-by: Morten Brørup <mb@smartsharesystems.com>
> ---

...

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf
  2023-03-15  1:56     ` fengchengwen
@ 2023-03-16 11:00       ` Thomas Monjalon
  0 siblings, 0 replies; 27+ messages in thread
From: Thomas Monjalon @ 2023-03-16 11:00 UTC (permalink / raw)
  To: dev
  Cc: David Marchand, Bruce Richardson, Qi Zhang, Morten Brørup,
	Shijith Thotton, Olivier Matz, Ruifeng Wang, Parav Pandit,
	Xueming Li, Tomasz Duszynski, Long Li, 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, Kevin Laatz, Pavan Nikhilesh,
	Mattias Rönnblom, Liang Ma, Peter Mccarthy, Jerin Jacob,
	Harry van Haaren, Artem V. Andreev, Andrew Rybchenko,
	Ashwin Sekhar T K, Srikanth Yalavarthi, John W. Linville,
	Ciara Loftus, Chas Williams, Min Hu (Connor),
	Yuying Zhang, Gaetan Rivet, Dongdong Liu, Yisen Zhuang,
	Konstantin Ananyev, Qiming Yang, Jakub Grajciar, Tetsuya Mukawa,
	Jakub Palider, Sachin Saxena, Hemant Agrawal, fengchengwen

15/03/2023 02:56, fengchengwen:
> On 2023/3/14 22:29, Thomas Monjalon wrote:
> > 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.
> > Some bus drivers are declared compatible.
> > 
> > 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 <bruce.richardson@intel.com>
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
> > Acked-by: Morten Brørup <mb@smartsharesystems.com>
> 
> Acked-by: Chengwen Feng <fengchengwen@huawei.com>

Applied



^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2023-03-16 11:00 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-19 11:55 [PATCH] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
2023-03-02 13:52 ` Zhang, Qi Z
2023-03-02 13:57   ` Thomas Monjalon
2023-03-02 14:16     ` Zhang, Qi Z
2023-03-03 14:23       ` Thomas Monjalon
2023-03-02 14:26 ` Morten Brørup
2023-03-02 16:01 ` [EXT] " Shijith Thotton
2023-03-06 16:13 ` [PATCH v2 0/2] refactor diasbling IOVA as PA Thomas Monjalon
2023-03-06 16:13   ` [PATCH v2 1/2] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
2023-03-06 16:35     ` Morten Brørup
2023-03-06 16:39     ` Bruce Richardson
2023-03-06 19:49       ` Thomas Monjalon
2023-03-09  1:43     ` fengchengwen
2023-03-09  7:29       ` Thomas Monjalon
2023-03-09 11:23         ` fengchengwen
2023-03-09 12:12           ` Thomas Monjalon
2023-03-09 13:10             ` Bruce Richardson
2023-03-13 15:51               ` Thomas Monjalon
2023-03-06 16:13   ` [PATCH v2 2/2] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon
2023-03-14 14:29 ` [PATCH v3 0/5] refactor disabling IOVA as PA Thomas Monjalon
2023-03-14 14:29   ` [PATCH v3 1/5] build: clarify configuration without IOVA field in mbuf Thomas Monjalon
2023-03-15  1:56     ` fengchengwen
2023-03-16 11:00       ` Thomas Monjalon
2023-03-14 14:29   ` [PATCH v3 2/5] net/hns3: support IOVA forced as VA Thomas Monjalon
2023-03-14 14:29   ` [PATCH v3 3/5] dma/hisilicon: " Thomas Monjalon
2023-03-14 14:29   ` [PATCH v3 4/5] compress/octeontx: " Thomas Monjalon
2023-03-14 14:29   ` [PATCH v3 5/5] drivers: skip build of sub-libs not supporting IOVA mode Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).