DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] rcu: add deprecation notice about limit on defer queue element size
@ 2025-05-22 23:37 Andre Muezerie
  2025-07-01  7:56 ` David Marchand
  2025-07-01 14:17 ` Thomas Monjalon
  0 siblings, 2 replies; 6+ messages in thread
From: Andre Muezerie @ 2025-05-22 23:37 UTC (permalink / raw)
  Cc: dev, Andre Muezerie

The functions rte_rcu_qsbr_dq_create and rte_rcu_qsbr_dq_reclaim establish
no limit on the size of each element in the defer queue. With DPDK 25.11 a
hard limit will be set (``RTE_QSBR_ESIZE_MAX``). This will allow fixed
C arrays to be used in the functions' implementations, avoiding VLAs and
use of alloca().

Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
---
 doc/guides/rel_notes/deprecation.rst | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 36489f6e68..78b2a27b52 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -17,6 +17,12 @@ Other API and ABI deprecation notices are to be posted below.
 Deprecation Notices
 -------------------
 
+* rcu: The functions ``rte_rcu_qsbr_dq_create`` and ``rte_rcu_qsbr_dq_reclaim``
+  establish no limit on the size of each element in the defer queue. With
+  DPDK 25.11 a hard limit will be set (``RTE_QSBR_ESIZE_MAX``). This will
+  allow fixed C arrays to be used in the functions' implementations,
+  avoiding VLAs and use of alloca().
+
 * build: The ``enable_kmods`` option is deprecated and will be removed in a future release.
   Setting/clearing the option has no impact on the build.
   Instead, kernel modules will be always built for OS's where out-of-tree kernel modules
-- 
2.49.0.vfs.0.3


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

* Re: [PATCH] rcu: add deprecation notice about limit on defer queue element size
  2025-05-22 23:37 [PATCH] rcu: add deprecation notice about limit on defer queue element size Andre Muezerie
@ 2025-07-01  7:56 ` David Marchand
  2025-07-01 14:17 ` Thomas Monjalon
  1 sibling, 0 replies; 6+ messages in thread
From: David Marchand @ 2025-07-01  7:56 UTC (permalink / raw)
  To: Andre Muezerie
  Cc: dev, Thomas Monjalon, Bruce Richardson, Honnappa Nagarahalli,
	Konstantin Ananyev

On Fri, May 23, 2025 at 1:37 AM Andre Muezerie
<andremue@linux.microsoft.com> wrote:
>
> The functions rte_rcu_qsbr_dq_create and rte_rcu_qsbr_dq_reclaim establish
> no limit on the size of each element in the defer queue. With DPDK 25.11 a
> hard limit will be set (``RTE_QSBR_ESIZE_MAX``). This will allow fixed
> C arrays to be used in the functions' implementations, avoiding VLAs and
> use of alloca().
>
> Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>

Acked-by: David Marchand <david.marchand@redhat.com>


-- 
David Marchand


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

* Re: [PATCH] rcu: add deprecation notice about limit on defer queue element size
  2025-05-22 23:37 [PATCH] rcu: add deprecation notice about limit on defer queue element size Andre Muezerie
  2025-07-01  7:56 ` David Marchand
@ 2025-07-01 14:17 ` Thomas Monjalon
  2025-07-10 14:37   ` Andre Muezerie
  1 sibling, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2025-07-01 14:17 UTC (permalink / raw)
  To: Andre Muezerie
  Cc: dev, Konstantin Ananyev, David Marchand, Bruce Richardson,
	honnappa.nagarahalli

23/05/2025 01:37, Andre Muezerie:
> The functions rte_rcu_qsbr_dq_create and rte_rcu_qsbr_dq_reclaim establish
> no limit on the size of each element in the defer queue.

Very good, we need more unlimited API in DPDK.

> With DPDK 25.11 a hard limit will be set (``RTE_QSBR_ESIZE_MAX``).

I think it is a step in the wrong direction.
I prefer having no limit.

> This will allow fixed C arrays to be used in the functions' implementations,
> avoiding VLAs and use of alloca().

I don't understand this justification.
Why trying to remove the 2 alloca() in the lib RCU?



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

* Re: [PATCH] rcu: add deprecation notice about limit on defer queue element size
  2025-07-01 14:17 ` Thomas Monjalon
@ 2025-07-10 14:37   ` Andre Muezerie
  2025-07-11 12:38     ` Thomas Monjalon
  0 siblings, 1 reply; 6+ messages in thread
From: Andre Muezerie @ 2025-07-10 14:37 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Konstantin Ananyev, David Marchand, Bruce Richardson,
	honnappa.nagarahalli

On Tue, Jul 01, 2025 at 04:17:20PM +0200, Thomas Monjalon wrote:
> 23/05/2025 01:37, Andre Muezerie:
> > The functions rte_rcu_qsbr_dq_create and rte_rcu_qsbr_dq_reclaim establish
> > no limit on the size of each element in the defer queue.
> 
> Very good, we need more unlimited API in DPDK.
> 
> > With DPDK 25.11 a hard limit will be set (``RTE_QSBR_ESIZE_MAX``).
> 
> I think it is a step in the wrong direction.
> I prefer having no limit.
> 
> > This will allow fixed C arrays to be used in the functions' implementations,
> > avoiding VLAs and use of alloca().
> 
> I don't understand this justification.
> Why trying to remove the 2 alloca() in the lib RCU?
> 

Only because other developer expressed concerns that using alloca() allows
ill-intended callers to cause a stack overflow.
I personally also prefer to have no hardcoded limits.

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

* Re: [PATCH] rcu: add deprecation notice about limit on defer queue element size
  2025-07-10 14:37   ` Andre Muezerie
@ 2025-07-11 12:38     ` Thomas Monjalon
  2025-07-14  9:01       ` Konstantin Ananyev
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2025-07-11 12:38 UTC (permalink / raw)
  To: Andre Muezerie
  Cc: dev, Konstantin Ananyev, David Marchand, Bruce Richardson,
	honnappa.nagarahalli

10/07/2025 16:37, Andre Muezerie:
> On Tue, Jul 01, 2025 at 04:17:20PM +0200, Thomas Monjalon wrote:
> > 23/05/2025 01:37, Andre Muezerie:
> > > The functions rte_rcu_qsbr_dq_create and rte_rcu_qsbr_dq_reclaim establish
> > > no limit on the size of each element in the defer queue.
> > 
> > Very good, we need more unlimited API in DPDK.
> > 
> > > With DPDK 25.11 a hard limit will be set (``RTE_QSBR_ESIZE_MAX``).
> > 
> > I think it is a step in the wrong direction.
> > I prefer having no limit.
> > 
> > > This will allow fixed C arrays to be used in the functions' implementations,
> > > avoiding VLAs and use of alloca().
> > 
> > I don't understand this justification.
> > Why trying to remove the 2 alloca() in the lib RCU?
> > 
> 
> Only because other developer expressed concerns that using alloca() allows
> ill-intended callers to cause a stack overflow.
> I personally also prefer to have no hardcoded limits.

Yes I vote for keeping alloca().




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

* RE: [PATCH] rcu: add deprecation notice about limit on defer queue element size
  2025-07-11 12:38     ` Thomas Monjalon
@ 2025-07-14  9:01       ` Konstantin Ananyev
  0 siblings, 0 replies; 6+ messages in thread
From: Konstantin Ananyev @ 2025-07-14  9:01 UTC (permalink / raw)
  To: Thomas Monjalon, Andre Muezerie
  Cc: dev, David Marchand, Bruce Richardson, honnappa.nagarahalli



> 
> 10/07/2025 16:37, Andre Muezerie:
> > On Tue, Jul 01, 2025 at 04:17:20PM +0200, Thomas Monjalon wrote:
> > > 23/05/2025 01:37, Andre Muezerie:
> > > > The functions rte_rcu_qsbr_dq_create and rte_rcu_qsbr_dq_reclaim establish
> > > > no limit on the size of each element in the defer queue.
> > >
> > > Very good, we need more unlimited API in DPDK.
> > >
> > > > With DPDK 25.11 a hard limit will be set (``RTE_QSBR_ESIZE_MAX``).
> > >
> > > I think it is a step in the wrong direction.
> > > I prefer having no limit.
> > >
> > > > This will allow fixed C arrays to be used in the functions' implementations,
> > > > avoiding VLAs and use of alloca().
> > >
> > > I don't understand this justification.
> > > Why trying to remove the 2 alloca() in the lib RCU?
> > >
> >
> > Only because other developer expressed concerns that using alloca() allows
> > ill-intended callers to cause a stack overflow.
> > I personally also prefer to have no hardcoded limits.
> 
> Yes I vote for keeping alloca().
> 

Probably it was me who expressed some concerns, sorry for late reply.
I can only repeat what I already replied to David:
 
For that particular case, my reasons are mostly conceptual:
using alloca() doesn't really differ from simply using VLA,
in fact it makes code looks uglier.
I understand that we do want MSVC enabled, and in many cases such mechanical
replacement is ok, but probably better to avoid  it whenever possible. 

 suppose we have 3 options:
1) use predefined max value (it could be quite big to fit any reasonable usage, let say 1KB or so).
2) use alloca().
3) come-up with some smarter approach.

For 3) - I don't have any good ideas.
One option would be to create that ring RING_F_MP_HTS_ENQ  flags,
then we can use peek API  for enqueue part too (rte_ring_enqueue_bulk_elem_start).
That would solve an issue, as in that case we wouldn't need to make temp copy of data on the stack.
My preference would be either 1) or 3), but I could leave with 2) too - specially that I don't really use that part of RCU lib.
Would be really good to hear opinion of RCU lib maintainer.

Konstantin

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

end of thread, other threads:[~2025-07-14  9:01 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-22 23:37 [PATCH] rcu: add deprecation notice about limit on defer queue element size Andre Muezerie
2025-07-01  7:56 ` David Marchand
2025-07-01 14:17 ` Thomas Monjalon
2025-07-10 14:37   ` Andre Muezerie
2025-07-11 12:38     ` Thomas Monjalon
2025-07-14  9:01       ` Konstantin Ananyev

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