* [PATCH] tracepoints: Use new static branch API
@ 2024-10-01 22:24 Josh Poimboeuf
2024-10-07 18:25 ` Josh Poimboeuf
0 siblings, 1 reply; 3+ messages in thread
From: Josh Poimboeuf @ 2024-10-01 22:24 UTC (permalink / raw)
To: Steven Rostedt
Cc: Masami Hiramatsu, Mathieu Desnoyers, linux-kernel,
linux-trace-kernel, Alice Ryhl
The old static key API based on 'struct static_key' is deprecated.
Convert tracepoints to use the new API.
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
include/linux/tracepoint-defs.h | 4 ++--
include/linux/tracepoint.h | 8 ++++----
kernel/tracepoint.c | 4 ++--
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/include/linux/tracepoint-defs.h b/include/linux/tracepoint-defs.h
index 4dc4955f0fbf..60a6e8314d4c 100644
--- a/include/linux/tracepoint-defs.h
+++ b/include/linux/tracepoint-defs.h
@@ -31,7 +31,7 @@ struct tracepoint_func {
struct tracepoint {
const char *name; /* Tracepoint name */
- struct static_key key;
+ struct static_key_false key;
struct static_call_key *static_call_key;
void *static_call_tramp;
void *iterator;
@@ -83,7 +83,7 @@ struct bpf_raw_event_map {
#ifdef CONFIG_TRACEPOINTS
# define tracepoint_enabled(tp) \
- static_key_false(&(__tracepoint_##tp).key)
+ static_branch_unlikely(&(__tracepoint_##tp).key)
#else
# define tracepoint_enabled(tracepoint) false
#endif
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index 6be396bb4297..ab5162fc3e4a 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -228,7 +228,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
#define __DECLARE_TRACE_RCU(name, proto, args, cond) \
static inline void trace_##name##_rcuidle(proto) \
{ \
- if (static_key_false(&__tracepoint_##name.key)) \
+ if (static_branch_unlikely(&__tracepoint_##name.key)) \
__DO_TRACE(name, \
TP_ARGS(args), \
TP_CONDITION(cond), 1); \
@@ -254,7 +254,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
extern struct tracepoint __tracepoint_##name; \
static inline void trace_##name(proto) \
{ \
- if (static_key_false(&__tracepoint_##name.key)) \
+ if (static_branch_unlikely(&__tracepoint_##name.key)) \
__DO_TRACE(name, \
TP_ARGS(args), \
TP_CONDITION(cond), 0); \
@@ -291,7 +291,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
static inline bool \
trace_##name##_enabled(void) \
{ \
- return static_key_false(&__tracepoint_##name.key); \
+ return static_branch_unlikely(&__tracepoint_##name.key);\
}
/*
@@ -308,7 +308,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
struct tracepoint __tracepoint_##_name __used \
__section("__tracepoints") = { \
.name = __tpstrtab_##_name, \
- .key = STATIC_KEY_INIT_FALSE, \
+ .key = STATIC_KEY_FALSE_INIT, \
.static_call_key = &STATIC_CALL_KEY(tp_func_##_name), \
.static_call_tramp = STATIC_CALL_TRAMP_ADDR(tp_func_##_name), \
.iterator = &__traceiter_##_name, \
diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c
index 8d1507dd0724..dc160cc0b616 100644
--- a/kernel/tracepoint.c
+++ b/kernel/tracepoint.c
@@ -358,7 +358,7 @@ static int tracepoint_add_func(struct tracepoint *tp,
tracepoint_update_call(tp, tp_funcs);
/* Both iterator and static call handle NULL tp->funcs */
rcu_assign_pointer(tp->funcs, tp_funcs);
- static_key_enable(&tp->key);
+ static_branch_enable(&tp->key);
break;
case TP_FUNC_2: /* 1->2 */
/* Set iterator static call */
@@ -414,7 +414,7 @@ static int tracepoint_remove_func(struct tracepoint *tp,
if (tp->unregfunc && static_key_enabled(&tp->key))
tp->unregfunc();
- static_key_disable(&tp->key);
+ static_branch_disable(&tp->key);
/* Set iterator static call */
tracepoint_update_call(tp, tp_funcs);
/* Both iterator and static call handle NULL tp->funcs */
--
2.46.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] tracepoints: Use new static branch API
2024-10-01 22:24 [PATCH] tracepoints: Use new static branch API Josh Poimboeuf
@ 2024-10-07 18:25 ` Josh Poimboeuf
2024-10-07 18:27 ` Steven Rostedt
0 siblings, 1 reply; 3+ messages in thread
From: Josh Poimboeuf @ 2024-10-07 18:25 UTC (permalink / raw)
To: Steven Rostedt
Cc: Masami Hiramatsu, Mathieu Desnoyers, linux-kernel,
linux-trace-kernel, Alice Ryhl
On Tue, Oct 01, 2024 at 03:24:01PM -0700, Josh Poimboeuf wrote:
> The old static key API based on 'struct static_key' is deprecated.
> Convert tracepoints to use the new API.
>
> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Steven,
The kernel test robot found this patch breaks the build with
CONFIG_HIST_TRIGGERS:
https://lore.kernel.org/202410040333.vJSL1NXx-lkp@intel.com
Here's the fix, do you want to squash it in or should I post a v2?
diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index 5f9119eb7c67..cc2924ad32a3 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -822,7 +822,7 @@ static inline void trace_synth(struct synth_event *event, u64 *var_ref_vals,
{
struct tracepoint *tp = event->tp;
- if (unlikely(atomic_read(&tp->key.enabled) > 0)) {
+ if (unlikely(static_key_enabled(&tp->key))) {
struct tracepoint_func *probe_func_ptr;
synth_probe_func_t probe_func;
void *__data;
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] tracepoints: Use new static branch API
2024-10-07 18:25 ` Josh Poimboeuf
@ 2024-10-07 18:27 ` Steven Rostedt
0 siblings, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2024-10-07 18:27 UTC (permalink / raw)
To: Josh Poimboeuf
Cc: Masami Hiramatsu, Mathieu Desnoyers, linux-kernel,
linux-trace-kernel, Alice Ryhl
On Mon, 7 Oct 2024 11:25:21 -0700
Josh Poimboeuf <jpoimboe@kernel.org> wrote:
> On Tue, Oct 01, 2024 at 03:24:01PM -0700, Josh Poimboeuf wrote:
> > The old static key API based on 'struct static_key' is deprecated.
> > Convert tracepoints to use the new API.
> >
> > Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
>
> Steven,
>
> The kernel test robot found this patch breaks the build with
> CONFIG_HIST_TRIGGERS:
>
> https://lore.kernel.org/202410040333.vJSL1NXx-lkp@intel.com
>
> Here's the fix, do you want to squash it in or should I post a v2?
Please post a v2. My workflow relies on patchwork, as it will automatically
update the status of the patch as it goes through git trees and my
"for-next/linus" postings.
If I modify the patch, then I need to do it manually.
-- Steve
>
> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
> index 5f9119eb7c67..cc2924ad32a3 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -822,7 +822,7 @@ static inline void trace_synth(struct synth_event *event, u64 *var_ref_vals,
> {
> struct tracepoint *tp = event->tp;
>
> - if (unlikely(atomic_read(&tp->key.enabled) > 0)) {
> + if (unlikely(static_key_enabled(&tp->key))) {
> struct tracepoint_func *probe_func_ptr;
> synth_probe_func_t probe_func;
> void *__data;
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-07 18:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-01 22:24 [PATCH] tracepoints: Use new static branch API Josh Poimboeuf
2024-10-07 18:25 ` Josh Poimboeuf
2024-10-07 18:27 ` Steven Rostedt
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).