patches for DPDK stable branches
 help / color / mirror / Atom feed
* [PATCH] eventdev: fix symbol export for port maintenance
@ 2023-10-10 14:00 David Marchand
  2023-10-11  6:46 ` Mattias Rönnblom
  2023-10-11  6:51 ` Jerin Jacob
  0 siblings, 2 replies; 8+ messages in thread
From: David Marchand @ 2023-10-10 14:00 UTC (permalink / raw)
  To: dev; +Cc: stable, Jerin Jacob, Mattias Rönnblom

Trying to call rte_event_maintain out of the eventdev library triggers
a link failure, as the tracepoint symbol associated to this inline
helper was not exported.

Fixes: 54f17843a887 ("eventdev: add port maintenance API")
Cc: stable@dpdk.org

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Caught by the CI when testing the dispatcher library.
See for example:
https://github.com/ovsrobot/dpdk/actions/runs/6460514355/job/17538348529#step:19:5506

---
 lib/eventdev/version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
index b03c10d99f..249eb115b1 100644
--- a/lib/eventdev/version.map
+++ b/lib/eventdev/version.map
@@ -5,6 +5,7 @@ DPDK_24 {
 	__rte_eventdev_trace_deq_burst;
 	__rte_eventdev_trace_enq_burst;
 	__rte_eventdev_trace_eth_tx_adapter_enqueue;
+	__rte_eventdev_trace_maintain;
 	__rte_eventdev_trace_timer_arm_burst;
 	__rte_eventdev_trace_timer_arm_tmo_tick_burst;
 	__rte_eventdev_trace_timer_cancel_burst;
-- 
2.41.0


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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-10 14:00 [PATCH] eventdev: fix symbol export for port maintenance David Marchand
@ 2023-10-11  6:46 ` Mattias Rönnblom
  2023-10-11  7:03   ` David Marchand
  2023-10-11  6:51 ` Jerin Jacob
  1 sibling, 1 reply; 8+ messages in thread
From: Mattias Rönnblom @ 2023-10-11  6:46 UTC (permalink / raw)
  To: David Marchand, dev; +Cc: stable, Jerin Jacob, Mattias Rönnblom

On 2023-10-10 16:00, David Marchand wrote:
> Trying to call rte_event_maintain out of the eventdev library triggers
> a link failure, as the tracepoint symbol associated to this inline
> helper was not exported.
> 
> Fixes: 54f17843a887 ("eventdev: add port maintenance API")
> Cc: stable@dpdk.org
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> Caught by the CI when testing the dispatcher library.
> See for example:
> https://github.com/ovsrobot/dpdk/actions/runs/6460514355/job/17538348529#step:19:5506
> 
> ---
>   lib/eventdev/version.map | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
> index b03c10d99f..249eb115b1 100644
> --- a/lib/eventdev/version.map
> +++ b/lib/eventdev/version.map
> @@ -5,6 +5,7 @@ DPDK_24 {
>   	__rte_eventdev_trace_deq_burst;
>   	__rte_eventdev_trace_enq_burst;
>   	__rte_eventdev_trace_eth_tx_adapter_enqueue;
> +	__rte_eventdev_trace_maintain;
>   	__rte_eventdev_trace_timer_arm_burst;
>   	__rte_eventdev_trace_timer_arm_tmo_tick_burst;
>   	__rte_eventdev_trace_timer_cancel_burst;

I can't say I know why it's needed, but the change seems consistent with 
other Eventdev trace points.

Maybe Jerin can comment on this? If not, I can dig into the details.

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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-10 14:00 [PATCH] eventdev: fix symbol export for port maintenance David Marchand
  2023-10-11  6:46 ` Mattias Rönnblom
@ 2023-10-11  6:51 ` Jerin Jacob
  2023-10-11  7:03   ` David Marchand
  2023-10-11 12:11   ` David Marchand
  1 sibling, 2 replies; 8+ messages in thread
From: Jerin Jacob @ 2023-10-11  6:51 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, stable, Jerin Jacob, Mattias Rönnblom

On Tue, Oct 10, 2023 at 7:30 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> Trying to call rte_event_maintain out of the eventdev library triggers
> a link failure, as the tracepoint symbol associated to this inline
> helper was not exported.
>
> Fixes: 54f17843a887 ("eventdev: add port maintenance API")
> Cc: stable@dpdk.org
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>

Acked-by: Jerin Jacob <jerinj@marvell.com>

David, If it is stopping dispatcher library integration, please take
this patch through main tree, if not, I will add through event tree
for rc2.


> ---
> Caught by the CI when testing the dispatcher library.
> See for example:
> https://github.com/ovsrobot/dpdk/actions/runs/6460514355/job/17538348529#step:19:5506
>
> ---
>  lib/eventdev/version.map | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
> index b03c10d99f..249eb115b1 100644
> --- a/lib/eventdev/version.map
> +++ b/lib/eventdev/version.map
> @@ -5,6 +5,7 @@ DPDK_24 {
>         __rte_eventdev_trace_deq_burst;
>         __rte_eventdev_trace_enq_burst;
>         __rte_eventdev_trace_eth_tx_adapter_enqueue;
> +       __rte_eventdev_trace_maintain;
>         __rte_eventdev_trace_timer_arm_burst;
>         __rte_eventdev_trace_timer_arm_tmo_tick_burst;
>         __rte_eventdev_trace_timer_cancel_burst;
> --
> 2.41.0
>

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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-11  6:46 ` Mattias Rönnblom
@ 2023-10-11  7:03   ` David Marchand
  2023-10-11  7:21     ` David Marchand
  0 siblings, 1 reply; 8+ messages in thread
From: David Marchand @ 2023-10-11  7:03 UTC (permalink / raw)
  To: Mattias Rönnblom; +Cc: dev, stable, Jerin Jacob, Mattias Rönnblom

On Wed, Oct 11, 2023 at 8:47 AM Mattias Rönnblom <hofors@lysator.liu.se> wrote:
>
> On 2023-10-10 16:00, David Marchand wrote:
> > Trying to call rte_event_maintain out of the eventdev library triggers
> > a link failure, as the tracepoint symbol associated to this inline
> > helper was not exported.
> >
> > Fixes: 54f17843a887 ("eventdev: add port maintenance API")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > ---
> > Caught by the CI when testing the dispatcher library.
> > See for example:
> > https://github.com/ovsrobot/dpdk/actions/runs/6460514355/job/17538348529#step:19:5506
> >
> > ---
> >   lib/eventdev/version.map | 1 +
> >   1 file changed, 1 insertion(+)
> >
> > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
> > index b03c10d99f..249eb115b1 100644
> > --- a/lib/eventdev/version.map
> > +++ b/lib/eventdev/version.map
> > @@ -5,6 +5,7 @@ DPDK_24 {
> >       __rte_eventdev_trace_deq_burst;
> >       __rte_eventdev_trace_enq_burst;
> >       __rte_eventdev_trace_eth_tx_adapter_enqueue;
> > +     __rte_eventdev_trace_maintain;
> >       __rte_eventdev_trace_timer_arm_burst;
> >       __rte_eventdev_trace_timer_arm_tmo_tick_burst;
> >       __rte_eventdev_trace_timer_cancel_burst;
>
> I can't say I know why it's needed, but the change seems consistent with
> other Eventdev trace points.

The trace point framework in DPDK relies on a per trace point global
variable (whose name is __<trace point name>):

#define __RTE_TRACE_POINT(_mode, _tp, _args, ...) \
extern rte_trace_point_t __##_tp; \
static __rte_always_inline void \
_tp _args \
{ \
        __rte_trace_point_emit_header_##_mode(&__##_tp); \
        __VA_ARGS__ \
}

When tracepoints are called from within a shared library code, and
because all symbols of a group of objects are visible, the tracepoint
symbols are resolved by the linker.
But when this tracepoint is called via an inline helper from some code
out of the shared library, this symbol must be exported in the shared
library map or it won't be visible to "external" users.


-- 
David Marchand


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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-11  6:51 ` Jerin Jacob
@ 2023-10-11  7:03   ` David Marchand
  2023-10-11 12:11   ` David Marchand
  1 sibling, 0 replies; 8+ messages in thread
From: David Marchand @ 2023-10-11  7:03 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, stable, Jerin Jacob, Mattias Rönnblom

Hello Jerin,

On Wed, Oct 11, 2023 at 8:51 AM Jerin Jacob <jerinjacobk@gmail.com> wrote:
>
> On Tue, Oct 10, 2023 at 7:30 PM David Marchand
> <david.marchand@redhat.com> wrote:
> >
> > Trying to call rte_event_maintain out of the eventdev library triggers
> > a link failure, as the tracepoint symbol associated to this inline
> > helper was not exported.
> >
> > Fixes: 54f17843a887 ("eventdev: add port maintenance API")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
>
> Acked-by: Jerin Jacob <jerinj@marvell.com>
>
> David, If it is stopping dispatcher library integration, please take
> this patch through main tree, if not, I will add through event tree
> for rc2.

I was going to suggest merging directly in main :-).
I will delegate it to me in patchwork.


Thanks.


-- 
David Marchand


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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-11  7:03   ` David Marchand
@ 2023-10-11  7:21     ` David Marchand
  2023-10-12 12:32       ` Jerin Jacob
  0 siblings, 1 reply; 8+ messages in thread
From: David Marchand @ 2023-10-11  7:21 UTC (permalink / raw)
  To: Mattias Rönnblom, Jerin Jacob; +Cc: dev, stable, Mattias Rönnblom

Jerin,

On Wed, Oct 11, 2023 at 9:03 AM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Wed, Oct 11, 2023 at 8:47 AM Mattias Rönnblom <hofors@lysator.liu.se> wrote:
> >
> > On 2023-10-10 16:00, David Marchand wrote:
> > > Trying to call rte_event_maintain out of the eventdev library triggers
> > > a link failure, as the tracepoint symbol associated to this inline
> > > helper was not exported.
> > >
> > > Fixes: 54f17843a887 ("eventdev: add port maintenance API")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > > ---
> > > Caught by the CI when testing the dispatcher library.
> > > See for example:
> > > https://github.com/ovsrobot/dpdk/actions/runs/6460514355/job/17538348529#step:19:5506
> > >
> > > ---
> > >   lib/eventdev/version.map | 1 +
> > >   1 file changed, 1 insertion(+)
> > >
> > > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
> > > index b03c10d99f..249eb115b1 100644
> > > --- a/lib/eventdev/version.map
> > > +++ b/lib/eventdev/version.map
> > > @@ -5,6 +5,7 @@ DPDK_24 {
> > >       __rte_eventdev_trace_deq_burst;
> > >       __rte_eventdev_trace_enq_burst;
> > >       __rte_eventdev_trace_eth_tx_adapter_enqueue;
> > > +     __rte_eventdev_trace_maintain;
> > >       __rte_eventdev_trace_timer_arm_burst;
> > >       __rte_eventdev_trace_timer_arm_tmo_tick_burst;
> > >       __rte_eventdev_trace_timer_cancel_burst;
> >
> > I can't say I know why it's needed, but the change seems consistent with
> > other Eventdev trace points.
>
> The trace point framework in DPDK relies on a per trace point global
> variable (whose name is __<trace point name>):
>
> #define __RTE_TRACE_POINT(_mode, _tp, _args, ...) \
> extern rte_trace_point_t __##_tp; \
> static __rte_always_inline void \
> _tp _args \
> { \
>         __rte_trace_point_emit_header_##_mode(&__##_tp); \
>         __VA_ARGS__ \
> }
>
> When tracepoints are called from within a shared library code, and
> because all symbols of a group of objects are visible, the tracepoint
> symbols are resolved by the linker.
> But when this tracepoint is called via an inline helper from some code
> out of the shared library, this symbol must be exported in the shared
> library map or it won't be visible to "external" users.

Could we describe / mention this in the trace point library doc?
Or maybe I read too quickly and there is already something but it was
not obvious to me.


-- 
David Marchand


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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-11  6:51 ` Jerin Jacob
  2023-10-11  7:03   ` David Marchand
@ 2023-10-11 12:11   ` David Marchand
  1 sibling, 0 replies; 8+ messages in thread
From: David Marchand @ 2023-10-11 12:11 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, stable, Jerin Jacob, Mattias Rönnblom

On Wed, Oct 11, 2023 at 8:51 AM Jerin Jacob <jerinjacobk@gmail.com> wrote:
> On Tue, Oct 10, 2023 at 7:30 PM David Marchand
> <david.marchand@redhat.com> wrote:
> >
> > Trying to call rte_event_maintain out of the eventdev library triggers
> > a link failure, as the tracepoint symbol associated to this inline
> > helper was not exported.
> >
> > Fixes: 54f17843a887 ("eventdev: add port maintenance API")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Jerin Jacob <jerinj@marvell.com>

Applied thanks.


-- 
David Marchand


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

* Re: [PATCH] eventdev: fix symbol export for port maintenance
  2023-10-11  7:21     ` David Marchand
@ 2023-10-12 12:32       ` Jerin Jacob
  0 siblings, 0 replies; 8+ messages in thread
From: Jerin Jacob @ 2023-10-12 12:32 UTC (permalink / raw)
  To: David Marchand
  Cc: Mattias Rönnblom, Jerin Jacob, dev, stable, Mattias Rönnblom

> > >
> > > I can't say I know why it's needed, but the change seems consistent with
> > > other Eventdev trace points.
> >
> > The trace point framework in DPDK relies on a per trace point global
> > variable (whose name is __<trace point name>):
> >
> > #define __RTE_TRACE_POINT(_mode, _tp, _args, ...) \
> > extern rte_trace_point_t __##_tp; \
> > static __rte_always_inline void \
> > _tp _args \
> > { \
> >         __rte_trace_point_emit_header_##_mode(&__##_tp); \
> >         __VA_ARGS__ \
> > }
> >
> > When tracepoints are called from within a shared library code, and
> > because all symbols of a group of objects are visible, the tracepoint
> > symbols are resolved by the linker.
> > But when this tracepoint is called via an inline helper from some code
> > out of the shared library, this symbol must be exported in the shared
> > library map or it won't be visible to "external" users.
>
> Could we describe / mention this in the trace point library doc?
> Or maybe I read too quickly and there is already something but it was
> not obvious to me.

Following text is available in
https://doc.dpdk.org/guides/prog_guide/trace_lib.html as NOTE.
We may need to update to very specific on FP trace points.


The RTE_TRACE_POINT_REGISTER defines the placeholder for the
rte_trace_point_t tracepoint object. For generic tracepoint or for
tracepoint used in public header files, the user must export a
__<trace_function_name> symbol in the library .map file for this
tracepoint to be used out of the library, in shared builds. For
example, __app_trace_string will be the exported symbol in the above
example.

>
>
> --
> David Marchand
>

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

end of thread, other threads:[~2023-10-12 12:32 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-10 14:00 [PATCH] eventdev: fix symbol export for port maintenance David Marchand
2023-10-11  6:46 ` Mattias Rönnblom
2023-10-11  7:03   ` David Marchand
2023-10-11  7:21     ` David Marchand
2023-10-12 12:32       ` Jerin Jacob
2023-10-11  6:51 ` Jerin Jacob
2023-10-11  7:03   ` David Marchand
2023-10-11 12:11   ` David Marchand

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