Skip to content

trace-seq/seq-buf/x86/printk: Print all stacks from NMI safely

Steven Rostedt lkml 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest26 patches 29 repliesIn review
  2. v4 RFC23 patches 34 repliesSuperseded
  3. v3 RFC12 patches 64 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v2 RFC4 of 5 patches28 repliesSuperseded
v1 RFC3 patches34 repliesSuperseded

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/26tracing: Fix trace_seq_bitmask() to start at current positionkernel/trace/trace_seq.c+1 -10 replies
2/26tracing: Add trace_seq_has_overflowed() and trace_handle_return()include/linux/ftrace_event.h include/linux/trace_seq.h include/trace/ftrace.h +4 more+231 -3000 replies
3/26blktrace/tracing: Use trace_seq_has_overflowed() helper functionkernel/trace/blktrace.c+66 -820 replies
4/26ring-buffer: Remove check of trace_seq_{puts,printf}() return valueskernel/trace/ring_buffer.c+36 -390 replies
5/26tracing: Have branch tracer use trace_handle_return() helper functionkernel/trace/trace_branch.c+7 -80 replies
6/26tracing: Have function_graph use trace_seq_has_overflowed()kernel/trace/trace.h kernel/trace/trace_functions_graph.c+118 -2660 replies
7/26kprobes/tracing: Use trace_seq_has_overflowed() for overflow checkskernel/trace/trace_kprobe.c+16 -261 reply
8/26tracing: Do not check return values of trace_seq_p*() for mmio tracerkernel/trace/trace_mmiotrace.c+21 -311 reply
9/26tracing/probes: Do not use return value of trace_seq_printf()kernel/trace/trace_probe.c+6 -41 reply
10/26tracing/uprobes: Do not use return values of trace_seq_printf()kernel/trace/trace_uprobe.c+10 -133 replies
11/26tracing: Do not use return values of trace_seq_printf() in syscall tracingkernel/trace/trace_syscalls.c+15 -280 replies
12/26tracing: Remove return values of most trace_seq_*() functionsinclude/linux/trace_seq.h kernel/trace/trace_seq.c+38 -831 reply
13/26tracing: Fix return value of ftrace_raw_output_prep()include/trace/ftrace.h kernel/trace/trace_output.c+2 -51 reply
14/26tracing: Create seq_buf layer in trace_seqinclude/linux/seq_buf.h include/linux/trace_seq.h kernel/trace/Makefile +5 more+538 -1252 replies
15/26tracing: Convert seq_buf_path() to be like seq_path()include/linux/seq_buf.h kernel/trace/seq_buf.c kernel/trace/trace_seq.c+19 -150 replies
16/26tracing: Convert seq_buf fields to be like seq_file fieldsinclude/linux/seq_buf.h+4 -40 replies
17/26tracing: Add a seq_buf_clear() helper and clear len and readpos in initinclude/linux/seq_buf.h+7 -20 replies
18/26seq_buf: Create seq_buf_used() to find out how much was writteninclude/linux/seq_buf.h kernel/trace/seq_buf.c+7 -43 replies
19/26tracing: Use trace_seq_used() and seq_buf_used() instead of leninclude/linux/trace_seq.h kernel/trace/seq_buf.c kernel/trace/trace.c +3 more+60 -2215 replies
20/26seq_buf: Add seq_buf_can_fit() helper functionkernel/trace/seq_buf.c+10 -512 replies
21/26tracing: Have seq_buf use full bufferinclude/linux/seq_buf.h kernel/trace/seq_buf.c+9 -60 replies
22/26tracing: Add seq_buf_get_buf() and seq_buf_commit() helper functionsinclude/linux/seq_buf.h kernel/trace/seq_buf.c+44 -40 replies
23/26seq-buf: Make seq_buf_bprintf() conditional on CONFIG_BINARY_PRINTFinclude/linux/seq_buf.h kernel/trace/seq_buf.c+7 -20 replies
24/26seq_buf: Move the seq_buf code to lib/kernel/trace/Makefile kernel/trace/seq_buf.c lib/Makefile +1 more+352 -3530 replies
25/26printk: Add per_cpu printk func to allow printk to be divertedinclude/linux/percpu.h include/linux/printk.h kernel/printk/printk.c+34 -90 replies
26/26x86/nmi: Perform a safe NMI stack trace on all CPUsarch/x86/kernel/apic/hw_nmi.c+86 -51 reply

Reviews trailers per patch

All 26 patches have a Reviewed-by or Acked-by.

PatchPetr MladekJiri KosinaPaul E. McKenneyMasami HiramatsuSrikar Dronamraju
1/26R-b
2/26R-b
3/26R-b
4/26R-b
5/26R-b
6/26R-b
7/26R-b A-b R-b
8/26R-b
9/26R-b A-b
10/26R-b R-b A-b
11/26R-b
12/26R-b
13/26Reminded-by R-b
14/26R-b T-b A-b
15/26R-b T-b A-b
16/26R-b T-b A-b
17/26R-b T-b A-b
18/26R-b
19/26R-b R-b R-b
20/26R-b
21/26R-b T-b A-b
22/26R-b T-b A-b
23/26R-b T-b A-b
24/26R-b T-b A-b
25/26R-b T-b A-b A-b
26/26R-b T-b A-b A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.

Read the v5 thread

Cover letter [PATCH 00/26 v5] trace-seq/seq-buf/x86/printk: Print all stacks from NMI safely

Version 5!

Full diff between v4 and v5 will be replied to this email.

Here's the summary of the differences since version 4:

. Various clean ups

. Added trace_seq_used() to be used instead of s->seq.len

. Used seq_buf_used() instead of s->len

. Fixed output of ftrace_raw_output_prep() as well as caller code

. Fixed up tracing_fill_pipe_page() The logic was a bit whacky
and this was needed when introducing trace_seq_used()

. Rebased on latest ftrace/core code

. Fixed uprobe to be like probe code in print_uprobe_event()

. Introduced new seq_buf_can_fit() to remove the likelyhood of
screwing up the s->len + * < s->size code. Now it's just seq_buf_can_fit(s, len) which will tell us if the len can still fit in the buffer.

Enjoy,

-- Steve

Steven Rostedt (Red Hat) (26):
tracing: Fix trace_seq_bitmask() to start at current position
tracing: Add trace_seq_has_overflowed() and trace_handle_return() blktrace/tracing: Use trace_seq_has_overflowed() helper function
ring-buffer: Remove check of trace_seq_{puts,printf}() return values
tracing: Have branch tracer use trace_handle_return() helper function
tracing: Have function_graph use trace_seq_has_overflowed() kprobes/tracing: Use trace_seq_has_overflowed() for overflow checks
tracing: Do not check return values of trace_seq_p*() for mmio tracer tracing/probes: Do not use return value of trace_seq_printf() tracing/uprobes: Do not use return values of trace_seq_printf()
tracing: Do not use return values of trace_seq_printf() in syscall tracing
tracing: Remove return values of most trace_seq_*() functions
tracing: Fix return value of ftrace_raw_output_prep()
tracing: Create seq_buf layer in trace_seq
tracing: Convert seq_buf_path() to be like seq_path()
tracing: Convert seq_buf fields to be like seq_file fields
tracing: Add a seq_buf_clear() helper and clear len and readpos in init
seq_buf: Create seq_buf_used() to find out how much was written
tracing: Use trace_seq_used() and seq_buf_used() instead of len
seq_buf: Add seq_buf_can_fit() helper function
tracing: Have seq_buf use full buffer
tracing: Add seq_buf_get_buf() and seq_buf_commit() helper functions
seq-buf: Make seq_buf_bprintf() conditional on CONFIG_BINARY_PRINTF
seq_buf: Move the seq_buf code to lib/
printk: Add per_cpu printk func to allow printk to be diverted x86/nmi: Perform a safe NMI stack trace on all CPUs

----

 arch/x86/kernel/apic/hw_nmi.c        |  91 +++++++-
 include/linux/ftrace_event.h         |  11 +
 include/linux/percpu.h               |   3 +
 include/linux/printk.h               |   2 +
 include/linux/seq_buf.h              | 136 ++++++++++++
 include/linux/trace_seq.h            |  77 ++++---
 include/trace/ftrace.h               |   8 +-
 kernel/printk/printk.c               |  38 +++-
 kernel/trace/blktrace.c              | 148 ++++++-------
 kernel/trace/ring_buffer.c           |  75 +++----
 kernel/trace/trace.c                 | 126 ++++++-----
 kernel/trace/trace.h                 |   3 +-
 kernel/trace/trace_branch.c          |  15 +-
 kernel/trace/trace_events.c          |   9 +-
 kernel/trace/trace_functions_graph.c | 393 +++++++++++----------------------
 kernel/trace/trace_kprobe.c          |  42 ++--
 kernel/trace/trace_mmiotrace.c       |  52 ++---
 kernel/trace/trace_output.c          | 417 ++++++++++++++---------------------
 kernel/trace/trace_output.h          |  16 +-
 kernel/trace/trace_probe.c           |  10 +-
 kernel/trace/trace_seq.c             | 253 +++++++++------------
 kernel/trace/trace_syscalls.c        |  43 ++--
 kernel/trace/trace_uprobe.c          |  23 +-
 lib/Makefile                         |   2 +-
 lib/seq_buf.c                        | 351 +++++++++++++++++++++++++++++
 25 files changed, 1323 insertions(+), 1021 deletions(-)