* bug in cryptodev enqueue/dequeue callbacks?
@ 2024-11-14 14:41 Konstantin Ananyev
2024-11-15 14:02 ` Honnappa Nagarahalli
0 siblings, 1 reply; 3+ messages in thread
From: Konstantin Ananyev @ 2024-11-14 14:41 UTC (permalink / raw)
To: dev; +Cc: gakhil, abhinandan.gujjar, honnappa.nagarahalli
Hi everyone,
Looking at implementation of cryptodev callbacks
(it uses DPDK RCU), it seems like there is a bug here:
at init time we don't call rte_rcu_qsbr_thread_register().
As I understand without it rte_rcu_qsbr_check() wouldn't
work properly for that thread.
Probably need to add:
static int
cryptodev_cb_init(struct rte_cryptodev *dev)
{
....
if (rte_rcu_qsbr_init(qsbr, max_threads)) {...}
+ rte_rcu_qsbr_thread_register(qsbr, 0);
Unless I am missing something obvious here?
Konstantin
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: bug in cryptodev enqueue/dequeue callbacks?
2024-11-14 14:41 bug in cryptodev enqueue/dequeue callbacks? Konstantin Ananyev
@ 2024-11-15 14:02 ` Honnappa Nagarahalli
2024-11-18 12:21 ` Konstantin Ananyev
0 siblings, 1 reply; 3+ messages in thread
From: Honnappa Nagarahalli @ 2024-11-15 14:02 UTC (permalink / raw)
To: Konstantin Ananyev; +Cc: dev, gakhil, abhinandan.gujjar, nd
> On Nov 14, 2024, at 8:41 AM, Konstantin Ananyev <konstantin.ananyev@huawei.com> wrote:
>
> Hi everyone,
>
> Looking at implementation of cryptodev callbacks
> (it uses DPDK RCU), it seems like there is a bug here:
>
> at init time we don't call rte_rcu_qsbr_thread_register().
> As I understand without it rte_rcu_qsbr_check() wouldn't
> work properly for that thread.
Yes, this understanding is correct. However, the responsibility of calling the rte_rcu_qsbr_thread_register lies with the application. The roles and responsibilities are documented at [1]
[1] https://doc.dpdk.org/guides/prog_guide/rcu_lib.html#resource-reclamation-framework-for-dpdk
>
> Probably need to add:
> static int
> cryptodev_cb_init(struct rte_cryptodev *dev)
> {
> ....
> if (rte_rcu_qsbr_init(qsbr, max_threads)) {...}
> + rte_rcu_qsbr_thread_register(qsbr, 0);
>
> Unless I am missing something obvious here?
> Konstantin
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: bug in cryptodev enqueue/dequeue callbacks?
2024-11-15 14:02 ` Honnappa Nagarahalli
@ 2024-11-18 12:21 ` Konstantin Ananyev
0 siblings, 0 replies; 3+ messages in thread
From: Konstantin Ananyev @ 2024-11-18 12:21 UTC (permalink / raw)
To: Honnappa Nagarahalli; +Cc: dev, gakhil, abhinandan.gujjar, nd
> > On Nov 14, 2024, at 8:41 AM, Konstantin Ananyev <konstantin.ananyev@huawei.com> wrote:
> >
> > Hi everyone,
> >
> > Looking at implementation of cryptodev callbacks
> > (it uses DPDK RCU), it seems like there is a bug here:
> >
> > at init time we don't call rte_rcu_qsbr_thread_register().
> > As I understand without it rte_rcu_qsbr_check() wouldn't
> > work properly for that thread.
> Yes, this understanding is correct. However, the responsibility of calling the rte_rcu_qsbr_thread_register lies with the application.
> The roles and responsibilities are documented at [1]
>
> [1] https://doc.dpdk.org/guides/prog_guide/rcu_lib.html#resource-reclamation-framework-for-dpdk
I don't think it is an option here.
cryptodev callbacks adding/removing/invoking mechanism it totally opaque to the user.
So these RCU instances are internal for cryptodev devices and shouldn't be updated for the user.
In fact, it is sort of 'speacial-case' where we have rcu with just one thread_id(==0),
and doing online/offline only.
Here is a link to original discussion:
https://mails.dpdk.org/archives/dev/2020-September/183401.html
So I still think we just forgot to call
rte_rcu_qsbr_thread_register(qsbr, 0);
here.
> >
> > Probably need to add:
> > static int
> > cryptodev_cb_init(struct rte_cryptodev *dev)
> > {
> > ....
> > if (rte_rcu_qsbr_init(qsbr, max_threads)) {...}
> > + rte_rcu_qsbr_thread_register(qsbr, 0);
> >
> > Unless I am missing something obvious here?
> > Konstantin
> >
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-11-18 12:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-14 14:41 bug in cryptodev enqueue/dequeue callbacks? Konstantin Ananyev
2024-11-15 14:02 ` Honnappa Nagarahalli
2024-11-18 12:21 ` 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).