From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
To: Thomas Monjalon <thomas@monjalon.net>,
Andre Muezerie <andremue@linux.microsoft.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
David Marchand <david.marchand@redhat.com>,
Bruce Richardson <bruce.richardson@intel.com>,
"honnappa.nagarahalli@arm.com" <honnappa.nagarahalli@arm.com>
Subject: RE: [PATCH] rcu: add deprecation notice about limit on defer queue element size
Date: Mon, 14 Jul 2025 09:01:23 +0000 [thread overview]
Message-ID: <b2f6bd8eda1c4e728caeb5ee918d0068@huawei.com> (raw)
In-Reply-To: <5695570.h0BymrIErR@thomas>
>
> 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
prev parent reply other threads:[~2025-07-14 9:01 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-22 23:37 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 message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b2f6bd8eda1c4e728caeb5ee918d0068@huawei.com \
--to=konstantin.ananyev@huawei.com \
--cc=andremue@linux.microsoft.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=honnappa.nagarahalli@arm.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).