> From: David Marchand [mailto:david.march...@redhat.com]
> Sent: Friday, 16 December 2022 09.09
> 
> Morten,
> 
> On Thu, Dec 15, 2022 at 11:21 AM Morten Brørup
> <m...@smartsharesystems.com> wrote:
> > > > Shouldn't these callbacks be called from the EAL threads too,
> e.g.
> > > from eal_thread_loop()?
> > > >
> > > > I looks like they are only called from
> eal_lcore_non_eal_allocate(),
> > > which is only called from rte_thread_register().
> > >
> > > These should be called for already present lcores on callback
> > > registration.
> > > See rte_lcore_callback_register().
> >
> > That is completely useless! They need to be called from the thread
> itself, so they have the correct environment, thread local storage,
> thread id, and similar context.
> 
> If it is broken, please fix it or come with a better implementation.
> 
> At the time, existing modules were storing their per lcore/thread
> private info using a local array and dereferencing it using
> rte_lcore_id() or a criteria of their liking.
> The callbacks have to be carefully written to explicitly initialise
> per lcore/thread private info.
> I thought it was enough, plus nobody objected.

Apparently, you were not alone thinking it was enough. :-)

> 
> 
> Now, some things to consider for this requirement you want to add.
> 
> If we want an application to be able to register callbacks after
> rte_eal_init(), we need to wake/interrupt all EAL threads from what
> they are doing.
> Once EAL threads enter some job the application gave, they won't
> reread anything from EAL.
> 
> Or we could require that callbacks are registered before
> rte_eal_init(), the init() callback could be called as the last step
> once all DPDK modules are initialised but before the application calls
> rte_eal_remote_launch().
> 
> But the problem of needing the break EAL threads from what they are
> doing is also present when we want to call the uninit() callback.
> And there, I have no good idea.

Thank you for sharing your thoughts on this, David. Very valuable insights!

I will try to determine the relevant scope and come up with a rough RFC, hoping 
to meet the December 25th proposal deadline for version 23.03.

-Morten

Reply via email to