* [GIT PULL] tracing: Updates for 5.10
@ 2020-10-15 17:53 Steven Rostedt
2020-10-15 23:08 ` pr-tracker-bot
2020-10-16 1:54 ` Linus Torvalds
0 siblings, 2 replies; 9+ messages in thread
From: Steven Rostedt @ 2020-10-15 17:53 UTC (permalink / raw)
To: Linus Torvalds
Cc: LKML, Ingo Molnar, Andrew Morton, Masami Hiramatsu, Tom Zanussi
Linus,
Updates for tracing and bootconfig:
- Add support for "bool" type in synthetic events
- Add per instance tracing for bootconfig
- Support perf-style return probe ("SYMBOL%return") in kprobes and uprobes
- Allow for kprobes to be enabled earlier in boot up
- Added tracepoint helper function to allow testing if tracepoints are
enabled in headers
- Synthetic events can now have dynamic strings (variable length)
- Various fixes and cleanups
Please pull the latest trace-v5.10 tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
trace-v5.10
Tag SHA1: 26ab68b2a2fa3a0e3724d4b025ca3a15dd7ec1f3
Head SHA1: 6107742d15832011cd0396d821f3225b52551f1f
Axel Rasmussen (1):
tracing: support "bool" type in synthetic trace events
Dan Carpenter (1):
tracing: remove a pointless assignment
Davidlohr Bueso (1):
fgraph: Convert ret_stack tasklist scanning to rcu
Gaurav Kohli (1):
tracing: Fix race in trace_open and buffer resize call
Jarkko Sakkinen (1):
kprobes: Use module_name() macro
Masami Hiramatsu (21):
tools/bootconfig: Show bootconfig compact tree from bootconfig file
tools/bootconfig: Add list option
tools/bootconfig: Make all functions static
tools/bootconfig: Add a script to generate ftrace shell-command from bootconfig
tools/bootconfig: Add a script to generates bootconfig from ftrace
tools/bootconfig: Add --init option for bconf2ftrace.sh
tracing/boot: Add per-instance tracing_on option support
Documentation: tracing: Add tracing_on option to boot-time tracer
tracing/kprobes: Support perf-style return probe
tracing/uprobes: Support perf-style return probe
Documentation: tracing: Add %return suffix description
Documentation: tracing: boot: Add an example of tracing function-calls
selftests/ftrace: Add %return suffix tests
kprobes: Init kprobes in early_initcall
tracing: Define event fields early stage
tracing: Enable adding dynamic events early stage
tracing: Enable creating new instance early boot
tracing/boot, kprobe, synth: Initialize boot-time tracing earlier
Documentation: tracing: Add the startup timing of boot-time tracing
tracing/boot: Initialize per-instance event list in early boot
tracing/boot: Add ftrace.instance.*.alloc_snapshot option
Qiujun Huang (2):
ftrace: Fix some typos in comment
tracing: Fix some typos in comments
Randy Dunlap (1):
tracing: Delete repeated words in comments
Steven Rostedt (VMware) (8):
tracepoints: Add helper to test if tracepoint is enabled in a header
mm/page_ref: Convert the open coded tracepoint enabled to the new helper
x86: Use tracepoint_enabled() for msr tracepoints instead of open coding it
tracing: Change synthetic event string format to limit printed length
ftrace: Simplify the hash calculation
ftrace: Format variable declarations of ftrace_allocate_records
tracing: Fix synthetic print fmt check for use of __get_str()
tracing: Check return value of __create_val_fields() before using its result
Sudip Mukherjee (1):
tracing: Remove a pointless assignment
Tom Zanussi (13):
tracing: Change STR_VAR_MAX_LEN
tracing: Fix parse_synth_field() error handling
tracing: Save normal string variables
tracing: Add support for dynamic strings to synthetic events
tracing: Add README information for synthetic_events file
selftests/ftrace: Add test case for synthetic event dynamic strings
tracing: Don't show dynamic string internals in synthetic event description
tracing: Move is_good_name() from trace_probe.h to trace.h
tracing: Check that the synthetic event and field names are legal
tracing: Add synthetic event error logging
selftests/ftrace: Change synthetic event name for inter-event-combined test
tracing: Handle synthetic event array field type checking correctly
selftests/ftrace: Add test case for synthetic event syntax errors
Wei Yang (6):
tracing: toplevel d_entry already initialized
tracing: make tracing_init_dentry() returns an integer instead of a d_entry pointer
ftrace: Use fls() to get the bits for dup_hash()
ftrace: Simplify the dyn_ftrace->flags macro
ftrace: Simplify the calculation of page number for ftrace_page->records
ftrace: ftrace_global_list is renamed to ftrace_ops_list
Xianting Tian (1):
tracing: Use __this_cpu_read() in trace_buffered_event_enable()
----
Documentation/trace/boottime-trace.rst | 38 ++
Documentation/trace/events.rst | 15 +-
Documentation/trace/histogram.rst | 18 +
Documentation/trace/kprobetrace.rst | 2 +
Documentation/trace/tracepoints.rst | 27 ++
Documentation/trace/uprobetracer.rst | 2 +
MAINTAINERS | 1 +
arch/x86/include/asm/msr.h | 20 +-
include/linux/ftrace.h | 11 +-
include/linux/page_ref.h | 42 +--
include/linux/tracepoint-defs.h | 34 ++
kernel/kprobes.c | 2 +-
kernel/trace/fgraph.c | 8 +-
kernel/trace/ftrace.c | 24 +-
kernel/trace/ring_buffer.c | 10 +
kernel/trace/synth_event_gen_test.c | 18 +-
kernel/trace/trace.c | 111 ++++--
kernel/trace/trace.h | 31 +-
kernel/trace/trace_boot.c | 23 +-
kernel/trace/trace_dynevent.c | 10 +-
kernel/trace/trace_events.c | 140 ++++---
kernel/trace/trace_events_hist.c | 45 ++-
kernel/trace/trace_events_synth.c | 413 ++++++++++++++++++---
kernel/trace/trace_functions.c | 22 +-
kernel/trace/trace_functions_graph.c | 8 +-
kernel/trace/trace_hwlat.c | 8 +-
kernel/trace/trace_kprobe.c | 41 +-
kernel/trace/trace_printk.c | 8 +-
kernel/trace/trace_probe.h | 14 +-
kernel/trace/trace_stack.c | 12 +-
kernel/trace/trace_stat.c | 8 +-
kernel/trace/trace_synth.h | 6 +-
kernel/trace/trace_uprobe.c | 24 +-
kernel/trace/tracing_map.c | 2 +-
tools/bootconfig/main.c | 147 +++++---
tools/bootconfig/scripts/bconf2ftrace.sh | 199 ++++++++++
tools/bootconfig/scripts/ftrace.sh | 109 ++++++
tools/bootconfig/scripts/ftrace2bconf.sh | 244 ++++++++++++
tools/bootconfig/scripts/xbc.sh | 56 +++
.../ftrace/test.d/kprobe/kprobe_syntax_errors.tc | 6 +
.../test.d/kprobe/kretprobe_return_suffix.tc | 21 ++
.../ftrace/test.d/kprobe/uprobe_syntax_errors.tc | 6 +
.../trigger-inter-event-combined-hist.tc | 8 +-
.../trigger-synthetic-event-dynstring.tc | 31 ++
.../trigger-synthetic_event_syntax_errors.tc | 19 +
45 files changed, 1709 insertions(+), 335 deletions(-)
create mode 100755 tools/bootconfig/scripts/bconf2ftrace.sh
create mode 100644 tools/bootconfig/scripts/ftrace.sh
create mode 100755 tools/bootconfig/scripts/ftrace2bconf.sh
create mode 100644 tools/bootconfig/scripts/xbc.sh
create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_return_suffix.tc
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-dynstring.tc
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic_event_syntax_errors.tc
---------------------------
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-15 17:53 [GIT PULL] tracing: Updates for 5.10 Steven Rostedt
@ 2020-10-15 23:08 ` pr-tracker-bot
2020-10-16 1:54 ` Linus Torvalds
1 sibling, 0 replies; 9+ messages in thread
From: pr-tracker-bot @ 2020-10-15 23:08 UTC (permalink / raw)
To: Steven Rostedt
Cc: Linus Torvalds, LKML, Ingo Molnar, Andrew Morton,
Masami Hiramatsu, Tom Zanussi
The pull request you sent on Thu, 15 Oct 2020 13:53:45 -0400:
> git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git trace-v5.10
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/fefa636d815975b34afc45f50852a2810fb23ba9
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-15 17:53 [GIT PULL] tracing: Updates for 5.10 Steven Rostedt
2020-10-15 23:08 ` pr-tracker-bot
@ 2020-10-16 1:54 ` Linus Torvalds
2020-10-16 2:21 ` Steven Rostedt
2020-10-16 2:34 ` [GIT PULL] tracing: Updates for 5.10 Masami Hiramatsu
1 sibling, 2 replies; 9+ messages in thread
From: Linus Torvalds @ 2020-10-16 1:54 UTC (permalink / raw)
To: Steven Rostedt
Cc: LKML, Ingo Molnar, Andrew Morton, Masami Hiramatsu, Tom Zanussi
On Thu, Oct 15, 2020 at 10:53 AM Steven Rostedt <rostedt@goodmis.org> wrote:
>
> Updates for tracing and bootconfig:
Hmm. I haven't verified that this came from you, but it seems likely..
Once again my clang build shows something that I don't see in my
allmodconfig gcc build:
WARNING: modpost: vmlinux.o(.text+0x1e5b06): Section mismatch in
reference from the function __trace_early_add_events() to the function
.init.text:__trace_early_add_new_event()
The function __trace_early_add_events() references
the function __init __trace_early_add_new_event().
This is often because __trace_early_add_events lacks a __init
annotation or the annotation of __trace_early_add_new_event is wrong.
Hmm?
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-16 1:54 ` Linus Torvalds
@ 2020-10-16 2:21 ` Steven Rostedt
2020-10-16 2:53 ` Masami Hiramatsu
2020-10-16 2:34 ` [GIT PULL] tracing: Updates for 5.10 Masami Hiramatsu
1 sibling, 1 reply; 9+ messages in thread
From: Steven Rostedt @ 2020-10-16 2:21 UTC (permalink / raw)
To: Linus Torvalds
Cc: LKML, Ingo Molnar, Andrew Morton, Masami Hiramatsu, Tom Zanussi
On Thu, 15 Oct 2020 18:54:34 -0700
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Thu, Oct 15, 2020 at 10:53 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > Updates for tracing and bootconfig:
>
> Hmm. I haven't verified that this came from you, but it seems likely..
> Once again my clang build shows something that I don't see in my
> allmodconfig gcc build:
>
> WARNING: modpost: vmlinux.o(.text+0x1e5b06): Section mismatch in
> reference from the function __trace_early_add_events() to the function
> .init.text:__trace_early_add_new_event()
> The function __trace_early_add_events() references
> the function __init __trace_early_add_new_event().
> This is often because __trace_early_add_events lacks a __init
> annotation or the annotation of __trace_early_add_new_event is wrong.
>
> Hmm?
>
> Linus
I see the issue, and I wonder if it has to do with optimization, for gcc
not to warn.
The issue is that we have:
trace_array_create() that can be called at any time. And it has:
if (trace_instance_dir) {
ret = trace_array_create_dir(tr);
if (ret)
goto out_free_tr;
} else
__trace_early_add_events(tr);
Where trace_instance_dir gets set at boot up, and thus the else statement
will never get called after that.
The __trace_early_add_events() then calls __trace_early_add_new_events()
which is __init.
I don't know how gcc didn't trigger this and clang does.
I'll have to think about how to untangle this. Is there some kind of
annotation that makes it show that a path can only be called at boot up and
not later?
-- Steve
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-16 2:21 ` Steven Rostedt
@ 2020-10-16 2:53 ` Masami Hiramatsu
2020-10-16 3:54 ` Steven Rostedt
0 siblings, 1 reply; 9+ messages in thread
From: Masami Hiramatsu @ 2020-10-16 2:53 UTC (permalink / raw)
To: Steven Rostedt
Cc: Linus Torvalds, LKML, Ingo Molnar, Andrew Morton,
Masami Hiramatsu, Tom Zanussi
On Thu, 15 Oct 2020 22:21:39 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:
> On Thu, 15 Oct 2020 18:54:34 -0700
> Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
> > On Thu, Oct 15, 2020 at 10:53 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > Updates for tracing and bootconfig:
> >
> > Hmm. I haven't verified that this came from you, but it seems likely..
> > Once again my clang build shows something that I don't see in my
> > allmodconfig gcc build:
> >
> > WARNING: modpost: vmlinux.o(.text+0x1e5b06): Section mismatch in
> > reference from the function __trace_early_add_events() to the function
> > .init.text:__trace_early_add_new_event()
> > The function __trace_early_add_events() references
> > the function __init __trace_early_add_new_event().
> > This is often because __trace_early_add_events lacks a __init
> > annotation or the annotation of __trace_early_add_new_event is wrong.
> >
> > Hmm?
> >
> > Linus
>
> I see the issue, and I wonder if it has to do with optimization, for gcc
> not to warn.
I also couldn't reproduce it even with CONFIG_DEBUG_SECTION_MISMATCH=y.
It seems that the __trace_early_add_new_event() is inlined in
__trace_early_add_events().
$ eu-readelf -w kernel/trace/trace_events.o
...
[ 1af20] subprogram abbrev: 53
name (strp) "__trace_early_add_new_event"
decl_file (data1) trace_events.c (1)
decl_line (data2) 2502
decl_column (data1) 1
prototyped (flag_present) yes
type (ref4) [ cc]
inline (data1) inlined (1)
$ gcc -v
...
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
>
> The issue is that we have:
>
> trace_array_create() that can be called at any time. And it has:
>
> if (trace_instance_dir) {
> ret = trace_array_create_dir(tr);
> if (ret)
> goto out_free_tr;
> } else
> __trace_early_add_events(tr);
>
>
> Where trace_instance_dir gets set at boot up, and thus the else statement
> will never get called after that.
>
> The __trace_early_add_events() then calls __trace_early_add_new_events()
> which is __init.
>
> I don't know how gcc didn't trigger this and clang does.
>
> I'll have to think about how to untangle this. Is there some kind of
> annotation that makes it show that a path can only be called at boot up and
> not later?
What happen if we use Peter's static_call() and update it after boot up?
Or, we might need to break apart the trace_array_create() and restruct
it as __init trace_array_early_create() and trace_array_create().
Thank you,
--
Masami Hiramatsu <mhiramat@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-16 2:53 ` Masami Hiramatsu
@ 2020-10-16 3:54 ` Steven Rostedt
2020-10-16 4:05 ` Masami Hiramatsu
2020-10-16 4:20 ` [PATCH] tracing: Remove __init from __trace_early_add_new_event() Masami Hiramatsu
0 siblings, 2 replies; 9+ messages in thread
From: Steven Rostedt @ 2020-10-16 3:54 UTC (permalink / raw)
To: Masami Hiramatsu
Cc: Linus Torvalds, LKML, Ingo Molnar, Andrew Morton, Tom Zanussi
On Fri, 16 Oct 2020 11:53:23 +0900
Masami Hiramatsu <mhiramat@kernel.org> wrote:
> >
> > I'll have to think about how to untangle this. Is there some kind of
> > annotation that makes it show that a path can only be called at boot up and
> > not later?
>
> What happen if we use Peter's static_call() and update it after boot up?
I think that's a bit over engineering ;-)
> Or, we might need to break apart the trace_array_create() and restruct
> it as __init trace_array_early_create() and trace_array_create().
That will likely make the code a bit more complex and possibly add as much
code as we save from the __init sections.
I think the best solution is what you proposed, and removing the __init,
and possibly making that function inline as well.
Care to send an official patch?
Thanks!
-- Steve
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-16 3:54 ` Steven Rostedt
@ 2020-10-16 4:05 ` Masami Hiramatsu
2020-10-16 4:20 ` [PATCH] tracing: Remove __init from __trace_early_add_new_event() Masami Hiramatsu
1 sibling, 0 replies; 9+ messages in thread
From: Masami Hiramatsu @ 2020-10-16 4:05 UTC (permalink / raw)
To: Steven Rostedt
Cc: Linus Torvalds, LKML, Ingo Molnar, Andrew Morton, Tom Zanussi
On Thu, 15 Oct 2020 23:54:44 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:
> On Fri, 16 Oct 2020 11:53:23 +0900
> Masami Hiramatsu <mhiramat@kernel.org> wrote:
>
> > >
> > > I'll have to think about how to untangle this. Is there some kind of
> > > annotation that makes it show that a path can only be called at boot up and
> > > not later?
> >
> > What happen if we use Peter's static_call() and update it after boot up?
>
> I think that's a bit over engineering ;-)
>
> > Or, we might need to break apart the trace_array_create() and restruct
> > it as __init trace_array_early_create() and trace_array_create().
>
> That will likely make the code a bit more complex and possibly add as much
> code as we save from the __init sections.
>
> I think the best solution is what you proposed, and removing the __init,
> and possibly making that function inline as well.
>
> Care to send an official patch?
Sure, I'll send it.
Thank you,
--
Masami Hiramatsu <mhiramat@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] tracing: Remove __init from __trace_early_add_new_event()
2020-10-16 3:54 ` Steven Rostedt
2020-10-16 4:05 ` Masami Hiramatsu
@ 2020-10-16 4:20 ` Masami Hiramatsu
1 sibling, 0 replies; 9+ messages in thread
From: Masami Hiramatsu @ 2020-10-16 4:20 UTC (permalink / raw)
To: Linus Torvalds, Steven Rostedt
Cc: Masami Hiramatsu, LKML, Ingo Molnar, Andrew Morton, Tom Zanussi
The commit 720dee53ad8d ("tracing/boot: Initialize per-instance event
list in early boot") removes __init from __trace_early_add_events()
but __trace_early_add_new_event() still has __init and will cause a
section mismatch.
Remove __init from __trace_early_add_new_event() as same as
__trace_early_add_events().
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
kernel/trace/trace_events.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 851ab37058dd..e705f06c68c6 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -2498,7 +2498,7 @@ __trace_add_new_event(struct trace_event_call *call, struct trace_array *tr)
* for enabling events at boot. We want to enable events before
* the filesystem is initialized.
*/
-static __init int
+static int
__trace_early_add_new_event(struct trace_event_call *call,
struct trace_array *tr)
{
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [GIT PULL] tracing: Updates for 5.10
2020-10-16 1:54 ` Linus Torvalds
2020-10-16 2:21 ` Steven Rostedt
@ 2020-10-16 2:34 ` Masami Hiramatsu
1 sibling, 0 replies; 9+ messages in thread
From: Masami Hiramatsu @ 2020-10-16 2:34 UTC (permalink / raw)
To: Linus Torvalds
Cc: Steven Rostedt, LKML, Ingo Molnar, Andrew Morton,
Masami Hiramatsu, Tom Zanussi
On Thu, 15 Oct 2020 18:54:34 -0700
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Thu, Oct 15, 2020 at 10:53 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > Updates for tracing and bootconfig:
>
> Hmm. I haven't verified that this came from you, but it seems likely..
> Once again my clang build shows something that I don't see in my
> allmodconfig gcc build:
>
> WARNING: modpost: vmlinux.o(.text+0x1e5b06): Section mismatch in
> reference from the function __trace_early_add_events() to the function
> .init.text:__trace_early_add_new_event()
> The function __trace_early_add_events() references
> the function __init __trace_early_add_new_event().
> This is often because __trace_early_add_events lacks a __init
> annotation or the annotation of __trace_early_add_new_event is wrong.
>
> Hmm?
Oops, that's my fault.
The commit 720dee53ad8d ("tracing/boot: Initialize per-instance event list
in early boot") removes __init from __trace_early_add_events() but I
forgot to do same on __trace_early_add_new_event().
Would this work?
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 851ab37058dd..e705f06c68c6 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -2498,7 +2498,7 @@ __trace_add_new_event(struct trace_event_call *call, struct trace_array *tr)
* for enabling events at boot. We want to enable events before
* the filesystem is initialized.
*/
-static __init int
+static int
__trace_early_add_new_event(struct trace_event_call *call,
struct trace_array *tr)
{
--
Masami Hiramatsu <mhiramat@kernel.org>
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-10-16 4:20 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-15 17:53 [GIT PULL] tracing: Updates for 5.10 Steven Rostedt
2020-10-15 23:08 ` pr-tracker-bot
2020-10-16 1:54 ` Linus Torvalds
2020-10-16 2:21 ` Steven Rostedt
2020-10-16 2:53 ` Masami Hiramatsu
2020-10-16 3:54 ` Steven Rostedt
2020-10-16 4:05 ` Masami Hiramatsu
2020-10-16 4:20 ` [PATCH] tracing: Remove __init from __trace_early_add_new_event() Masami Hiramatsu
2020-10-16 2:34 ` [GIT PULL] tracing: Updates for 5.10 Masami Hiramatsu
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).