DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] common/cnxk: allow enabling IOVA field in mbuf
@ 2024-10-14 11:06 Shijith Thotton
  2024-10-24 11:10 ` Jerin Jacob
  0 siblings, 1 reply; 5+ messages in thread
From: Shijith Thotton @ 2024-10-14 11:06 UTC (permalink / raw)
  To: jerinj, pbhagavatula
  Cc: dev, Shijith Thotton, Wathsala Vithanage, Bruce Richardson,
	Nithin Dabilpuram, Kiran Kumar K, Sunil Kumar Kori, Satha Rao,
	Harman Kalra

Value of RTE_IOVA_IN_MBUF was always disabled on cnxk platforms, as IOVA
in the mbuf is not required. This change modifies that behavior,
allowing RTE_IOVA_IN_MBUF to be enabled if the build option
-Denable_iova_as_pa=true is explicitly specified.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 config/arm/meson.build          | 8 ++------
 drivers/common/cnxk/meson.build | 9 +++++++++
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 012935d5d7..ca54524376 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -439,10 +439,7 @@ soc_cn9k = {
     'description': 'Marvell OCTEON 9',
     'implementer': '0x43',
     'part_number': '0xb2',
-    'numa': false,
-    'flags': [
-        ['RTE_IOVA_IN_MBUF', 0]
-    ]
+    'numa': false
 }
 
 soc_cn10k = {
@@ -451,8 +448,7 @@ soc_cn10k = {
     'flags': [
         ['RTE_MAX_LCORE', 24],
         ['RTE_MAX_NUMA_NODES', 1],
-        ['RTE_MEMPOOL_ALIGN', 128],
-        ['RTE_IOVA_IN_MBUF', 0]
+        ['RTE_MEMPOOL_ALIGN', 128]
     ],
     'part_number': '0xd49',
     'extra_march_features': ['crypto'],
diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
index dc2ddf1f20..bba780e750 100644
--- a/drivers/common/cnxk/meson.build
+++ b/drivers/common/cnxk/meson.build
@@ -108,4 +108,13 @@ deps += ['bus_pci', 'net', 'telemetry']
 
 require_iova_in_mbuf = false
 
+cnxk_socs = ['cn9k', 'cn10k', 'cn20k']
+
+# Enable RTE_IOVA_IN_MBUF only if enable_iova_as_pa is set explicitly, else disable it
+if meson.version().version_compare('>=1.1.0')
+    if '-Denable_iova_as_pa' not in meson.build_options() and soc_type in cnxk_socs
+        dpdk_conf.set10('RTE_IOVA_IN_MBUF', false)
+    endif
+endif
+
 annotate_locks = false
-- 
2.25.1


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

* Re: [PATCH] common/cnxk: allow enabling IOVA field in mbuf
  2024-10-14 11:06 [PATCH] common/cnxk: allow enabling IOVA field in mbuf Shijith Thotton
@ 2024-10-24 11:10 ` Jerin Jacob
  2024-10-24 12:09   ` Bruce Richardson
  0 siblings, 1 reply; 5+ messages in thread
From: Jerin Jacob @ 2024-10-24 11:10 UTC (permalink / raw)
  To: Shijith Thotton
  Cc: jerinj, pbhagavatula, dev, Wathsala Vithanage, Bruce Richardson,
	Nithin Dabilpuram, Kiran Kumar K, Sunil Kumar Kori, Satha Rao,
	Harman Kalra, Thomas Monjalon, David Marchand

On Mon, Oct 14, 2024 at 4:37 PM Shijith Thotton <sthotton@marvell.com> wrote:
>
> Value of RTE_IOVA_IN_MBUF was always disabled on cnxk platforms, as IOVA
> in the mbuf is not required. This change modifies that behavior,
> allowing RTE_IOVA_IN_MBUF to be enabled if the build option
> -Denable_iova_as_pa=true is explicitly specified.
>
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> ---
>
> diff --git a/config/arm/meson.build b/config/arm/meson.build
> index 012935d5d7..ca54524376 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -439,10 +439,7 @@ soc_cn9k = {
>      'description': 'Marvell OCTEON 9',
>      'implementer': '0x43',
>      'part_number': '0xb2',
> -    'numa': false,
> -    'flags': [
> -        ['RTE_IOVA_IN_MBUF', 0]
> -    ]
> +    'numa': false
>  }
>
>  soc_cn10k = {
> @@ -451,8 +448,7 @@ soc_cn10k = {
>      'flags': [
>          ['RTE_MAX_LCORE', 24],
>          ['RTE_MAX_NUMA_NODES', 1],
> -        ['RTE_MEMPOOL_ALIGN', 128],
> -        ['RTE_IOVA_IN_MBUF', 0]
> +        ['RTE_MEMPOOL_ALIGN', 128]
>      ],
>      'part_number': '0xd49',
>      'extra_march_features': ['crypto'],
> diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
> index dc2ddf1f20..bba780e750 100644
> --- a/drivers/common/cnxk/meson.build
> +++ b/drivers/common/cnxk/meson.build
> @@ -108,4 +108,13 @@ deps += ['bus_pci', 'net', 'telemetry']
>
>  require_iova_in_mbuf = false
>
> +cnxk_socs = ['cn9k', 'cn10k', 'cn20k']
> +
> +# Enable RTE_IOVA_IN_MBUF only if enable_iova_as_pa is set explicitly, else disable it
> +if meson.version().version_compare('>=1.1.0')
> +    if '-Denable_iova_as_pa' not in meson.build_options() and soc_type in cnxk_socs
> +        dpdk_conf.set10('RTE_IOVA_IN_MBUF', false)
> +    endif
> +endif

Since this is added in driver/common/cnxk, it will be late to decide.
For example,

Following PMDs will have mis match:
common - cpt, dpaax, idpf, ionic
bus - cdx, dpaa, fslmc, ifpga, uacce

I think, this check needs to move up in the chain. @Richardson, Bruce
Any thoughts on cleanly adding this kind of check in top-level meson
objects?


> +
>  annotate_locks = false
> --
> 2.25.1
>

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

* Re: [PATCH] common/cnxk: allow enabling IOVA field in mbuf
  2024-10-24 11:10 ` Jerin Jacob
@ 2024-10-24 12:09   ` Bruce Richardson
  2024-10-24 16:13     ` [EXTERNAL] " Shijith Thotton
  0 siblings, 1 reply; 5+ messages in thread
From: Bruce Richardson @ 2024-10-24 12:09 UTC (permalink / raw)
  To: Jerin Jacob
  Cc: Shijith Thotton, jerinj, pbhagavatula, dev, Wathsala Vithanage,
	Nithin Dabilpuram, Kiran Kumar K, Sunil Kumar Kori, Satha Rao,
	Harman Kalra, Thomas Monjalon, David Marchand

On Thu, Oct 24, 2024 at 04:40:40PM +0530, Jerin Jacob wrote:
> On Mon, Oct 14, 2024 at 4:37 PM Shijith Thotton <sthotton@marvell.com> wrote:
> >
> > Value of RTE_IOVA_IN_MBUF was always disabled on cnxk platforms, as IOVA
> > in the mbuf is not required. This change modifies that behavior,
> > allowing RTE_IOVA_IN_MBUF to be enabled if the build option
> > -Denable_iova_as_pa=true is explicitly specified.
> >
> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> > ---
> >
> > diff --git a/config/arm/meson.build b/config/arm/meson.build
> > index 012935d5d7..ca54524376 100644
> > --- a/config/arm/meson.build
> > +++ b/config/arm/meson.build
> > @@ -439,10 +439,7 @@ soc_cn9k = {
> >      'description': 'Marvell OCTEON 9',
> >      'implementer': '0x43',
> >      'part_number': '0xb2',
> > -    'numa': false,
> > -    'flags': [
> > -        ['RTE_IOVA_IN_MBUF', 0]
> > -    ]
> > +    'numa': false
> >  }
> >
> >  soc_cn10k = {
> > @@ -451,8 +448,7 @@ soc_cn10k = {
> >      'flags': [
> >          ['RTE_MAX_LCORE', 24],
> >          ['RTE_MAX_NUMA_NODES', 1],
> > -        ['RTE_MEMPOOL_ALIGN', 128],
> > -        ['RTE_IOVA_IN_MBUF', 0]
> > +        ['RTE_MEMPOOL_ALIGN', 128]
> >      ],
> >      'part_number': '0xd49',
> >      'extra_march_features': ['crypto'],
> > diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
> > index dc2ddf1f20..bba780e750 100644
> > --- a/drivers/common/cnxk/meson.build
> > +++ b/drivers/common/cnxk/meson.build
> > @@ -108,4 +108,13 @@ deps += ['bus_pci', 'net', 'telemetry']
> >
> >  require_iova_in_mbuf = false
> >
> > +cnxk_socs = ['cn9k', 'cn10k', 'cn20k']
> > +
> > +# Enable RTE_IOVA_IN_MBUF only if enable_iova_as_pa is set explicitly, else disable it
> > +if meson.version().version_compare('>=1.1.0')
> > +    if '-Denable_iova_as_pa' not in meson.build_options() and soc_type in cnxk_socs
> > +        dpdk_conf.set10('RTE_IOVA_IN_MBUF', false)
> > +    endif
> > +endif
> 
> Since this is added in driver/common/cnxk, it will be late to decide.
> For example,
> 
> Following PMDs will have mis match:
> common - cpt, dpaax, idpf, ionic
> bus - cdx, dpaa, fslmc, ifpga, uacce
> 
> I think, this check needs to move up in the chain. @Richardson, Bruce
> Any thoughts on cleanly adding this kind of check in top-level meson
> objects?
> 
Can you explain what you mean by a mismatch?

Can I assume that the common/cnxk is processed before any of these other
drivers? If so, then whatever values or variables set by that meson.build
file can be queried by all the others.

/Bruce

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

* RE: [EXTERNAL] Re: [PATCH] common/cnxk: allow enabling IOVA field in mbuf
  2024-10-24 12:09   ` Bruce Richardson
@ 2024-10-24 16:13     ` Shijith Thotton
  2024-10-24 16:44       ` Bruce Richardson
  0 siblings, 1 reply; 5+ messages in thread
From: Shijith Thotton @ 2024-10-24 16:13 UTC (permalink / raw)
  To: Bruce Richardson, Jerin Jacob
  Cc: Jerin Jacob, Pavan Nikhilesh Bhagavatula, dev,
	Wathsala Vithanage, Nithin Kumar Dabilpuram,
	Kiran Kumar Kokkilagadda, Sunil Kumar Kori,
	Satha Koteswara Rao Kottidi, Harman Kalra, Thomas Monjalon,
	David Marchand

>On Thu, Oct 24, 2024 at 04:40:40PM +0530, Jerin Jacob wrote:
>> On Mon, Oct 14, 2024 at 4:37 PM Shijith Thotton <sthotton@marvell.com>
>wrote:
>> >
>> > Value of RTE_IOVA_IN_MBUF was always disabled on cnxk platforms, as
>IOVA
>> > in the mbuf is not required. This change modifies that behavior,
>> > allowing RTE_IOVA_IN_MBUF to be enabled if the build option
>> > -Denable_iova_as_pa=true is explicitly specified.
>> >
>> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
>> > ---
>> >
>> > diff --git a/config/arm/meson.build b/config/arm/meson.build
>> > index 012935d5d7..ca54524376 100644
>> > --- a/config/arm/meson.build
>> > +++ b/config/arm/meson.build
>> > @@ -439,10 +439,7 @@ soc_cn9k = {
>> >      'description': 'Marvell OCTEON 9',
>> >      'implementer': '0x43',
>> >      'part_number': '0xb2',
>> > -    'numa': false,
>> > -    'flags': [
>> > -        ['RTE_IOVA_IN_MBUF', 0]
>> > -    ]
>> > +    'numa': false
>> >  }
>> >
>> >  soc_cn10k = {
>> > @@ -451,8 +448,7 @@ soc_cn10k = {
>> >      'flags': [
>> >          ['RTE_MAX_LCORE', 24],
>> >          ['RTE_MAX_NUMA_NODES', 1],
>> > -        ['RTE_MEMPOOL_ALIGN', 128],
>> > -        ['RTE_IOVA_IN_MBUF', 0]
>> > +        ['RTE_MEMPOOL_ALIGN', 128]
>> >      ],
>> >      'part_number': '0xd49',
>> >      'extra_march_features': ['crypto'],
>> > diff --git a/drivers/common/cnxk/meson.build
>b/drivers/common/cnxk/meson.build
>> > index dc2ddf1f20..bba780e750 100644
>> > --- a/drivers/common/cnxk/meson.build
>> > +++ b/drivers/common/cnxk/meson.build
>> > @@ -108,4 +108,13 @@ deps += ['bus_pci', 'net', 'telemetry']
>> >
>> >  require_iova_in_mbuf = false
>> >
>> > +cnxk_socs = ['cn9k', 'cn10k', 'cn20k']
>> > +
>> > +# Enable RTE_IOVA_IN_MBUF only if enable_iova_as_pa is set explicitly,
>else disable it
>> > +if meson.version().version_compare('>=1.1.0')
>> > +    if '-Denable_iova_as_pa' not in meson.build_options() and soc_type in
>cnxk_socs
>> > +        dpdk_conf.set10('RTE_IOVA_IN_MBUF', false)
>> > +    endif
>> > +endif
>>
>> Since this is added in driver/common/cnxk, it will be late to decide.
>> For example,
>>
>> Following PMDs will have mis match:
>> common - cpt, dpaax, idpf, ionic
>> bus - cdx, dpaa, fslmc, ifpga, uacce
>>
>> I think, this check needs to move up in the chain. @Richardson, Bruce
>> Any thoughts on cleanly adding this kind of check in top-level meson
>> objects?
>>
>Can you explain what you mean by a mismatch?
>
>Can I assume that the common/cnxk is processed before any of these other
>drivers? If so, then whatever values or variables set by that meson.build
>file can be queried by all the others.
>

The goal is to change the default value of enable_iova_as_pa to false on
CNXK platforms.

Jerin pointed out the following issue with the current patch, which causes a
mismatch during the default build (enable_iova_as_pa not specified):

1. The configuration initially sets RTE_IOVA_IN_MBUF to 1.
2. Meson proceeds through the lib and driver directories, enabling the
    build of drivers that require IOVA.
3. When Meson reaches the common/cnxk folder, it sets RTE_IOVA_IN_MBUF
     to 0.
4. The remaining configuration then disables the build of drivers that depend
     on IOVA.

The problem arises due to the extra PMDs being enabled during step 2.

We could avoid this issue by moving the check added in this patch to a
top-level Meson file, such as config/arm/meson.build.

We would like your feedback on this approach or suggestions for a better
alternative.

Thanks,
Shijith

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

* Re: [EXTERNAL] Re: [PATCH] common/cnxk: allow enabling IOVA field in mbuf
  2024-10-24 16:13     ` [EXTERNAL] " Shijith Thotton
@ 2024-10-24 16:44       ` Bruce Richardson
  0 siblings, 0 replies; 5+ messages in thread
From: Bruce Richardson @ 2024-10-24 16:44 UTC (permalink / raw)
  To: Shijith Thotton
  Cc: Jerin Jacob, Jerin Jacob, Pavan Nikhilesh Bhagavatula, dev,
	Wathsala Vithanage, Nithin Kumar Dabilpuram,
	Kiran Kumar Kokkilagadda, Sunil Kumar Kori,
	Satha Koteswara Rao Kottidi, Harman Kalra, Thomas Monjalon,
	David Marchand

On Thu, Oct 24, 2024 at 04:13:19PM +0000, Shijith Thotton wrote:
> >On Thu, Oct 24, 2024 at 04:40:40PM +0530, Jerin Jacob wrote:
> >> On Mon, Oct 14, 2024 at 4:37 PM Shijith Thotton <sthotton@marvell.com>
> >wrote:
> >> >
> >> > Value of RTE_IOVA_IN_MBUF was always disabled on cnxk platforms, as
> >IOVA
> >> > in the mbuf is not required. This change modifies that behavior,
> >> > allowing RTE_IOVA_IN_MBUF to be enabled if the build option
> >> > -Denable_iova_as_pa=true is explicitly specified.
> >> >
> >> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> >> > ---
> >> >
> >> > diff --git a/config/arm/meson.build b/config/arm/meson.build
> >> > index 012935d5d7..ca54524376 100644
> >> > --- a/config/arm/meson.build
> >> > +++ b/config/arm/meson.build
> >> > @@ -439,10 +439,7 @@ soc_cn9k = {
> >> >      'description': 'Marvell OCTEON 9',
> >> >      'implementer': '0x43',
> >> >      'part_number': '0xb2',
> >> > -    'numa': false,
> >> > -    'flags': [
> >> > -        ['RTE_IOVA_IN_MBUF', 0]
> >> > -    ]
> >> > +    'numa': false
> >> >  }
> >> >
> >> >  soc_cn10k = {
> >> > @@ -451,8 +448,7 @@ soc_cn10k = {
> >> >      'flags': [
> >> >          ['RTE_MAX_LCORE', 24],
> >> >          ['RTE_MAX_NUMA_NODES', 1],
> >> > -        ['RTE_MEMPOOL_ALIGN', 128],
> >> > -        ['RTE_IOVA_IN_MBUF', 0]
> >> > +        ['RTE_MEMPOOL_ALIGN', 128]
> >> >      ],
> >> >      'part_number': '0xd49',
> >> >      'extra_march_features': ['crypto'],
> >> > diff --git a/drivers/common/cnxk/meson.build
> >b/drivers/common/cnxk/meson.build
> >> > index dc2ddf1f20..bba780e750 100644
> >> > --- a/drivers/common/cnxk/meson.build
> >> > +++ b/drivers/common/cnxk/meson.build
> >> > @@ -108,4 +108,13 @@ deps += ['bus_pci', 'net', 'telemetry']
> >> >
> >> >  require_iova_in_mbuf = false
> >> >
> >> > +cnxk_socs = ['cn9k', 'cn10k', 'cn20k']
> >> > +
> >> > +# Enable RTE_IOVA_IN_MBUF only if enable_iova_as_pa is set explicitly,
> >else disable it
> >> > +if meson.version().version_compare('>=1.1.0')
> >> > +    if '-Denable_iova_as_pa' not in meson.build_options() and soc_type in
> >cnxk_socs
> >> > +        dpdk_conf.set10('RTE_IOVA_IN_MBUF', false)
> >> > +    endif
> >> > +endif
> >>
> >> Since this is added in driver/common/cnxk, it will be late to decide.
> >> For example,
> >>
> >> Following PMDs will have mis match:
> >> common - cpt, dpaax, idpf, ionic
> >> bus - cdx, dpaa, fslmc, ifpga, uacce
> >>
> >> I think, this check needs to move up in the chain. @Richardson, Bruce
> >> Any thoughts on cleanly adding this kind of check in top-level meson
> >> objects?
> >>
> >Can you explain what you mean by a mismatch?
> >
> >Can I assume that the common/cnxk is processed before any of these other
> >drivers? If so, then whatever values or variables set by that meson.build
> >file can be queried by all the others.
> >
> 
> The goal is to change the default value of enable_iova_as_pa to false on
> CNXK platforms.
> 
> Jerin pointed out the following issue with the current patch, which causes a
> mismatch during the default build (enable_iova_as_pa not specified):
> 
> 1. The configuration initially sets RTE_IOVA_IN_MBUF to 1.
> 2. Meson proceeds through the lib and driver directories, enabling the
>     build of drivers that require IOVA.
> 3. When Meson reaches the common/cnxk folder, it sets RTE_IOVA_IN_MBUF
>      to 0.
> 4. The remaining configuration then disables the build of drivers that depend
>      on IOVA.
> 
> The problem arises due to the extra PMDs being enabled during step 2.
> 
> We could avoid this issue by moving the check added in this patch to a
> top-level Meson file, such as config/arm/meson.build.
> 
> We would like your feedback on this approach or suggestions for a better
> alternative.
> 
Two alternatives I see:

1. One, you document that for CNXK platforms that the value must be set to
false in the build configuration. Then when processing common/cnxk folder,
you error out the configuration if the value is set to true, giving the
user a proper error message.
2. You see about changing the value as you suggest in a config meson.build
file.

Of the 2, option 1 would be by far the most preferred option. If an option
is set by the user to X, the build system should not override it to Y. This
is why meson does not provide a set_option() function, only a get_option()
one.

/Bruce

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

end of thread, other threads:[~2024-10-24 16:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-10-14 11:06 [PATCH] common/cnxk: allow enabling IOVA field in mbuf Shijith Thotton
2024-10-24 11:10 ` Jerin Jacob
2024-10-24 12:09   ` Bruce Richardson
2024-10-24 16:13     ` [EXTERNAL] " Shijith Thotton
2024-10-24 16:44       ` Bruce Richardson

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