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