tracing: various fixes
Subsystems (7)
Steven Rostedt
maintainerIngo,
Please pull the latest tip/perf/core tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
tip/perf/core
Head SHA1: 7e9a49ef542610609144d1afcd516dc3fafac4d6
Gleb Natapov (1):
jump_label: jump_label_inc may return before the code is patched
Ilya Dryomov (1):
tracing: fix event_subsystem ref counting
Jiri Olsa (1):
tracing/latency: Fix header output for latency tracers
Li Zefan (2):
tracing: Restore system filter behavior
tracing: update Documentation on max preds limit
Steven Rostedt (5):
tracing: Add boiler plate for subsystem filter
lockdep: Show subclass in pretty print of lockdep output
ftrace: Remove force undef config value left for testing
perf: Fix parsing of __print_flags() in TP_printk()
ftrace: Fix hash record accounting bug
----
Documentation/trace/events.txt | 2 -- include/linux/ftrace_event.h | 2 ++ kernel/jump_label.c | 3 ++- kernel/lockdep.c | 30 +++++++++++++----------------- kernel/trace/ftrace.c | 5 +++-- kernel/trace/trace.c | 15 +++++++++++++++ kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 1 - kernel/trace/trace_events_filter.c | 33 +++++++++++++++++++++++++-------- kernel/trace/trace_irqsoff.c | 13 ++++++++++++- kernel/trace/trace_sched_wakeup.c | 13 ++++++++++++- tools/perf/util/trace-event-parse.c | 2 ++ 12 files changed, 87 insertions(+), 33 deletions(-)
Steven Rostedt
maintainerPATCH 1/10 tracing: fix event_subsystem ref counting
From: Ilya Dryomov <[email protected]>
Fix a bug introduced by e9dbfae5, which prevents event_subsystem from ever being released.
Ref_count was added to keep track of subsystem users, not for counting events. Subsystem is created with ref_count = 1, so there is no need to increment it for every event, we have nr_events for that. Fix this by touching ref_count only when we actually have a new user - subsystem_open().
--- kernel/trace/trace_events.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
kernel/trace/trace_events.c +0 -1
@@ -1078,7 +1078,6 @@ event_subsystem_dir(const char *name, struct dentry *d_events)/* First see if we did not already create this dir */ list_for_each_entry (system, &event_subsystems, list) {if (strcmp (system->name, name) ==0 ) { -__get_system (system); system->nr_events++;return system->entry; }
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 2/10 tracing: Restore system filter behavior
In reply to Steven RostedtFrom: Li Zefan <[email protected]>
Though not all events have field 'prev_pid', it was allowed to do this:
# echo 'prev_pid == 100' > events/sched/filter
but commit 75b8e98263fdb0bfbdeba60d4db463259f1fe8a2 (tracing/filter: Swap entire filter of events) broke it without any reason.
--- include/linux/ftrace_event.h | 2 ++ kernel/trace/trace_events_filter.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletions(-)
include/linux/ftrace_event.h +2 -0
@@ -172,6 +172,7 @@ enum {TRACE_EVENT_FL_FILTERED_BIT ,TRACE_EVENT_FL_RECORDED_CMD_BIT ,TRACE_EVENT_FL_CAP_ANY_BIT , + TRACE_EVENT_FL_NO_SET_FILTER_BIT, }; enum {
@@ -179,6 +180,7 @@ enum {TRACE_EVENT_FL_FILTERED = (1 <<TRACE_EVENT_FL_FILTERED_BIT ),TRACE_EVENT_FL_RECORDED_CMD = (1 <<TRACE_EVENT_FL_RECORDED_CMD_BIT ),TRACE_EVENT_FL_CAP_ANY = (1 <<TRACE_EVENT_FL_CAP_ANY_BIT ), + TRACE_EVENT_FL_NO_SET_FILTER = (1 << TRACE_EVENT_FL_NO_SET_FILTER_BIT), }; struct ftrace_event_call {
kernel/trace/trace_events_filter.c +6 -1
@@ -1649,7 +1649,9 @@ static int replace_system_preds(struct event_subsystem *system,*/ err =replace_preds (call,NULL , ps, filter_string, true);if (err) - goto fail; + call->flags |=TRACE_EVENT_FL_NO_SET_FILTER ; +else + call->flags &= ~TRACE_EVENT_FL_NO_SET_FILTER ; }list_for_each_entry (call, &ftrace_events, list) {
@@ -1658,6 +1660,9 @@ static int replace_system_preds(struct event_subsystem *system,if (strcmp (call->class->system, system->name) !=0 )continue ; +if (call->flags &TRACE_EVENT_FL_NO_SET_FILTER ) +continue ; + filter_item =kzalloc (sizeof (*filter_item),GFP_KERNEL );if (!filter_item) goto fail_mem;
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 3/10 tracing: Add boiler plate for subsystem filter
In reply to Steven RostedtFrom: Steven Rostedt <[email protected]>
The system filter can be used to set multiple event filters that exist within the system. But currently it displays the last filter written that does not necessarily correspond to the filters within the system. The system filter itself is not used to filter any events. The system filter is just a means to set filters of the events within it.
Because this causes an ambiguous state when the system filter reads a filter string but the events within the system have different strings it is best to just show a boiler plate:
### global filter ###
# Use this to set filters for multiple events.
# Only events with the given fields will be affected.
# If no events are modified, an error message will be displayed here.
If an error occurs while writing to the system filter, the system filter will replace the boiler plate with the error message as it currently does.
--- kernel/trace/trace_events_filter.c | 26 +++++++++++++++++++------- 1 files changed, 19 insertions(+), 7 deletions(-)
kernel/trace/trace_events_filter.c +19 -7
@@ -27,6 +27,12 @@#include "trace.h" #include "trace_output.h" +#define DEFAULT_SYS_FILTER_MESSAGE \ + "### global filter ###\n" \ + "# Use this to set filters for multiple events.\n" \ + "# Only events with the given fields will be affected.\n" \ + "# If no events are modified, an error message will be displayed here" +enum filter_op_ids {OP_OR ,
@@ -646,7 +652,7 @@ void print_subsystem_event_filter(struct event_subsystem *system,if (filter && filter->filter_string)trace_seq_printf (s,"%s\n" , filter->filter_string);else -trace_seq_printf (s,"none\n" ); +trace_seq_printf (s,DEFAULT_SYS_FILTER_MESSAGE "\n" );mutex_unlock (&event_mutex); }
@@ -1838,7 +1844,10 @@ int apply_subsystem_event_filter(struct event_subsystem *system,if (!filter) goto out; -replace_filter_string (filter, filter_string); +/* System filters just show a default message */ +kfree (filter->filter_string); + filter->filter_string =NULL ; +/* * No event actually uses the system filter * we can free it without synchronize_sched().
@@ -1848,14 +1857,12 @@ int apply_subsystem_event_filter(struct event_subsystem *system,parse_init (ps, filter_ops, filter_string); err =filter_parse (ps); -if (err) { -append_filter_err (ps, system->filter); - goto out; - } +if (err) + goto err_filter; err =replace_system_preds (system, ps, filter_string);if (err) -append_filter_err (ps, system->filter); + goto err_filter; out:filter_opstack_clear (ps);
@@ -1865,6 +1872,11 @@ out_unlock:mutex_unlock (&event_mutex);return err; + +err_filter: +replace_filter_string (filter, filter_string); +append_filter_err (ps, system->filter); + goto out; }#ifdef CONFIG_PERF_EVENTS
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 4/10 tracing: update Documentation on max preds limit
In reply to Steven RostedtFrom: Li Zefan <[email protected]>
Preds is no longer stored in a fixed-size stack. The max preds now is 2^14, and is way more than enough, so don't bother to document it.
--- Documentation/trace/events.txt | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
Documentation/trace/events.txt +0 -2
@@ -191,8 +191,6 @@ And for string fields they are: Currently, only exact string matches are supported. -Currently, the maximum number of predicates in a filter is 16. - 5.2 Setting filters -------------------
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 5/10 lockdep: Show subclass in pretty print of lockdep output
In reply to Steven RostedtFrom: Steven Rostedt <[email protected]>
The pretty print of the lockdep debug splat uses just the lock name to show how the locking scenario happens. But when it comes to nesting locks, the output becomes confusing which takes away the point of the pretty printing of the lock scenario.
Without displaying the subclass info, we get the following output:
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(slock-AF_INET);
lock(slock-AF_INET);
lock(slock-AF_INET); lock(slock-AF_INET);
*** DEADLOCK ***
The above looks more of a A->A locking bug than a A->B B->A. By adding the subclass to the output, we can see what really happened:
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(slock-AF_INET);
lock(slock-AF_INET/1);
lock(slock-AF_INET); lock(slock-AF_INET/1);
*** DEADLOCK ***
This bug was discovered while tracking down a real bug caught by lockdep.
--- kernel/lockdep.c | 30 +++++++++++++----------------- 1 files changed, 13 insertions(+), 17 deletions(-)
kernel/lockdep.c +13 -17
@@ -490,36 +490,32 @@ void get_usage_chars(struct lock_class *class, char usage[LOCK_USAGE_CHARS]) usage[i] ='\0' ; } -static int __print_lock_name (struct lock_class *class) +static void __print_lock_name (struct lock_class *class) {char str[KSYM_NAME_LEN ];const char *name; name = class->name; -if (!name) - name =__get_key_name (class->key, str); - -return printk ("%s" , name); -} - -static void print_lock_name (struct lock_class *class) -{ -char str[KSYM_NAME_LEN ], usage[LOCK_USAGE_CHARS ]; -const char *name; - -get_usage_chars (class, usage); - - name = class->name;if (!name) { name =__get_key_name (class->key, str); -printk (" (%s" , name); +printk ("%s" , name); }else { -printk (" (%s" , name); +printk ("%s" , name);if (class->name_version >1 )printk ("#%d" , class->name_version);if (class->subclass)printk ("/%d" , class->subclass); } +} + +static void print_lock_name (struct lock_class *class) +{ +char usage[LOCK_USAGE_CHARS ]; + +get_usage_chars (class, usage); + +printk (" (" ); +__print_lock_name (class);printk ("){%s}" , usage); }
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 6/10 ftrace: Remove force undef config value left for testing
In reply to Steven RostedtFrom: Steven Rostedt <[email protected]>
A forced undef of a config value was used for testing and was accidently left in during the final commit. This causes x86 to run slower than needed while running function tracing as well as causes the function graph selftest to fail when DYNMAIC_FTRACE is not set. This is because the code in MCOUNT expects the ftrace code to be processed with the config value set that happened to be forced not set.
The forced config option was left in by:
commit 6331c28c962561aee59e5a493b7556a4bb585957
ftrace: Fix dynamic selftest failure on some archs
--- kernel/trace/ftrace.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
kernel/trace/ftrace.c +0 -1
@@ -151,7 +151,6 @@ void clear_ftrace_function(void) ftrace_pid_function = ftrace_stub; } -#undef CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST#ifndef CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST /* * For those archs that do not test ftrace_trace_stop in their
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 7/10 jump_label: jump_label_inc may return before the code is patched
In reply to Steven RostedtFrom: Gleb Natapov <[email protected]>
If cpu A calls jump_label_inc() just after atomic_add_return() is called by cpu B, atomic_inc_not_zero() will return value greater then zero and jump_label_inc() will return to a caller before jump_label_update() finishes its job on cpu B.
--- kernel/jump_label.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
kernel/jump_label.c +2 -1
@@ -66,8 +66,9 @@ void jump_label_inc(struct jump_label_key *key)return ;jump_label_lock (); -if (atomic_add_return (1 , &key->enabled) ==1 ) +if (atomic_read (&key->enabled) ==0 )jump_label_update (key,JUMP_LABEL_ENABLE ); +atomic_inc (&key->enabled);jump_label_unlock (); }
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 8/10 perf: Fix parsing of __print_flags() in TP_printk()
In reply to Steven RostedtFrom: Steven Rostedt <[email protected]>
A update is made to the sched:sched_switch event that adds some logic to the first parameter of the __print_flags() that shows the state of tasks. This change cause perf to fail parsing the flags.
A simple fix is needed to have the parser be able to process ops within the argument.
--- tools/perf/util/trace-event-parse.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
tools/perf/util/trace-event-parse.c +2 -0
@@ -1537,6 +1537,8 @@ process_flags(struct event *event, struct print_arg *arg, char **tok) field =malloc_or_die (sizeof (*field)); type =process_arg (event, field, &token); +while (type ==EVENT_OP ) + type =process_op (event, field, &token);if (test_type_token (type, token,EVENT_DELIM ,"," )) goto out_free;
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 9/10 ftrace: Fix hash record accounting bug
In reply to Steven RostedtFrom: Steven Rostedt <[email protected]>
If the set_ftrace_filter is cleared by writing just whitespace to it, then the filter hash refcounts will be decremented but not updated. This causes two bugs:
1) No functions will be enabled for tracing when they all should be
2) If the users clears the set_ftrace_filter twice, it will crash ftrace:
------------[ cut here ]------------ WARNING: at /home/rostedt/work/git/linux-trace.git/kernel/trace/ftrace.c:1384 __ftrace_hash_rec_update.part.27+0x157/0x1a7() Modules linked in: Pid: 2330, comm: bash Not tainted 3.1.0-test+ #32 Call Trace: [<ffffffff81051828>] warn_slowpath_common+0x83/0x9b [<ffffffff8105185a>] warn_slowpath_null+0x1a/0x1c [<ffffffff810ba362>] __ftrace_hash_rec_update.part.27+0x157/0x1a7 [<ffffffff810ba6e8>] ? ftrace_regex_release+0xa7/0x10f [<ffffffff8111bdfe>] ? kfree+0xe5/0x115 [<ffffffff810ba51e>] ftrace_hash_move+0x2e/0x151 [<ffffffff810ba6fb>] ftrace_regex_release+0xba/0x10f [<ffffffff8112e49a>] fput+0xfd/0x1c2 [<ffffffff8112b54c>] filp_close+0x6d/0x78 [<ffffffff8113a92d>] sys_dup3+0x197/0x1c1 [<ffffffff8113a9a6>] sys_dup2+0x4f/0x54 [<ffffffff8150cac2>] system_call_fastpath+0x16/0x1b ---[ end trace 77a3a7ee73794a02 ]---
--- kernel/trace/ftrace.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
kernel/trace/ftrace.c +3 -1
@@ -1210,7 +1210,9 @@ ftrace_hash_move(struct ftrace_ops *ops, int enable,if (!src->count) {free_ftrace_hash_rcu (*dst);rcu_assign_pointer (*dst,EMPTY_HASH ); -return 0 ; +/* still need to update the function records */ + ret =0 ; + goto out; }/*
Signature · 1 line
1.7.7
Steven Rostedt
maintainerPATCH 10/10 tracing/latency: Fix header output for latency tracers
In reply to Steven RostedtFrom: Jiri Olsa <[email protected]>
In case the the graph tracer (CONFIG_FUNCTION_GRAPH_TRACER) or even the function tracer (CONFIG_FUNCTION_TRACER) are not set, the latency tracers do not display proper latency header.
The involved/fixed latency tracers are:
wakeup_rt
wakeup
preemptirqsoff
preemptoff
irqsoff
The patch adds proper handling of tracer configuration options for latency tracers, and displaying correct header info accordingly.
* The current output (for wakeup tracer) with both graph and function tracers disabled is:
# tracer: wakeup
#
<idle>-0 0d.h5 1us+: 0:120:R + [000] 7: 0:R watchdog/0
<idle>-0 0d.h5 3us+: ttwu_do_activate.clone.1 <-try_to_wake_up
...* The fixed output is:
# tracer: wakeup
#
# wakeup latency trace v1.1.5 on 3.1.0-tip+
# --------------------------------------------------------------------
# latency: 55 us, #4/4, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
# -----------------
# | task: migration/0-6 (uid:0 nice:0 policy:1 rt_prio:99)
# -----------------
#
# _------=> CPU#
# / _-----=> irqs-off
# | / _----=> need-resched
# || / _---=> hardirq/softirq
# ||| / _--=> preempt-depth
# |||| / delay
# cmd pid ||||| time | caller
# \ / ||||| \ | /
cat-1129 0d..4 1us : 1129:120:R + [000] 6: 0:R migration/0
cat-1129 0d..4 2us+: ttwu_do_activate.clone.1 <-try_to_wake_up* The current output (for wakeup tracer) with only function tracer enabled is:
# tracer: wakeup
#
cat-1140 0d..4 1us+: 1140:120:R + [000] 6: 0:R migration/0
cat-1140 0d..4 2us : ttwu_do_activate.clone.1 <-try_to_wake_up* The fixed output is:
# tracer: wakeup
#
# wakeup latency trace v1.1.5 on 3.1.0-tip+
# --------------------------------------------------------------------
# latency: 207 us, #109/109, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
# -----------------
# | task: watchdog/1-12 (uid:0 nice:0 policy:1 rt_prio:99)
# -----------------
#
# _------=> CPU#
# / _-----=> irqs-off
# | / _----=> need-resched
# || / _---=> hardirq/softirq
# ||| / _--=> preempt-depth
# |||| / delay
# cmd pid ||||| time | caller
# \ / ||||| \ | /
<idle>-0 1d.h5 1us+: 0:120:R + [001] 12: 0:R watchdog/1
<idle>-0 1d.h5 3us : ttwu_do_activate.clone.1 <-try_to_wake_up--- kernel/trace/trace.c | 15 +++++++++++++++ kernel/trace/trace.h | 1 + kernel/trace/trace_irqsoff.c | 13 ++++++++++++- kernel/trace/trace_sched_wakeup.c | 13 ++++++++++++- 4 files changed, 40 insertions(+), 2 deletions(-)
kernel/trace/trace.c +15 -0
@@ -2140,6 +2140,21 @@ enum print_line_t print_trace_line(struct trace_iterator *iter)return print_trace_fmt (iter); } +void trace_latency_header (struct seq_file *m) +{ +struct trace_iterator *iter = m->private; + +/* print nothing if the buffers are empty */ +if (trace_empty (iter)) +return ; + +if (iter->iter_flags &TRACE_FILE_LAT_FMT ) +print_trace_header (m, iter); + +if (!(trace_flags &TRACE_ITER_VERBOSE )) +print_lat_help_header (m); +} +void trace_default_header (struct seq_file *m) {struct trace_iterator *iter = m->private;
kernel/trace/trace.h +1 -0
@@ -370,6 +370,7 @@ void trace_graph_function(struct trace_array *tr,unsigned long ip, unsigned long parent_ip, unsigned long flags, int pc); +void trace_latency_header (struct seq_file *m);void trace_default_header (struct seq_file *m);void print_trace_header (struct seq_file *m,struct trace_iterator *iter);int trace_empty (struct trace_iterator *iter);
kernel/trace/trace_irqsoff.c +12 -1
@@ -280,9 +280,20 @@ static enum print_line_t irqsoff_print_line(struct trace_iterator *iter) }static void irqsoff_graph_return (struct ftrace_graph_ret *trace) { } -static void irqsoff_print_header (struct seq_file *s) { }static void irqsoff_trace_open (struct trace_iterator *iter) { }static void irqsoff_trace_close (struct trace_iterator *iter) { } + +#ifdef CONFIG_FUNCTION_TRACER +static void irqsoff_print_header (struct seq_file *s) +{ +trace_default_header (s); +} +#else +static void irqsoff_print_header (struct seq_file *s) +{ +trace_latency_header (s); +} +#endif /* CONFIG_FUNCTION_TRACER */ #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ /*
kernel/trace/trace_sched_wakeup.c +12 -1
@@ -280,9 +280,20 @@ static enum print_line_t wakeup_print_line(struct trace_iterator *iter) }static void wakeup_graph_return (struct ftrace_graph_ret *trace) { } -static void wakeup_print_header (struct seq_file *s) { }static void wakeup_trace_open (struct trace_iterator *iter) { }static void wakeup_trace_close (struct trace_iterator *iter) { } + +#ifdef CONFIG_FUNCTION_TRACER +static void wakeup_print_header (struct seq_file *s) +{ +trace_default_header (s); +} +#else +static void wakeup_print_header (struct seq_file *s) +{ +trace_latency_header (s); +} +#endif /* CONFIG_FUNCTION_TRACER */ #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ /*
Signature · 1 line
1.7.7
Quoted 31 lines · Steven Rostedt
Ingo,
Please pull the latest tip/perf/core tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
tip/perf/coreHead SHA1:
7e9a49ef542610609144d1afcd516dc3fafac4d6Gleb Natapov (1):
jump_label:jump_label_incmay return before the code is patchedIlya Dryomov (1):
tracing: fixevent_subsystemref countingJiri Olsa (1):
tracing/latency: Fix header output for latency tracersLi Zefan (2):
tracing: Restore system filter behavior
tracing: update Documentation on max preds limitSteven Rostedt (5):
tracing: Add boiler plate for subsystem filter
lockdep: Show subclass in pretty print of lockdep output
ftrace: Remove force undef config value left for testing
perf: Fix parsing of__print_flags()inTP_printk()
ftrace: Fix hash record accounting bug----
Quoted 13 lines
Documentation/trace/events.txt | 2 -- include/linux/ftrace_event.h | 2 ++ kernel/jump_label.c | 3 ++- kernel/lockdep.c | 30 +++++++++++++----------------- kernel/trace/ftrace.c | 5 +++-- kernel/trace/trace.c | 15 +++++++++++++++ kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 1 - kernel/trace/trace_events_filter.c | 33 +++++++++++++++++++++++++-------- kernel/trace/trace_irqsoff.c | 13 ++++++++++++- kernel/trace/trace_sched_wakeup.c | 13 ++++++++++++- tools/perf/util/trace-event-parse.c | 2 ++ 12 files changed, 87 insertions(+), 33 deletions(-)
Pulled, thanks a lot Steve!
Ingo
Steven Rostedt
maintainerQuoted 47 lines · Ingo Molnar
Quoted 31 lines · Steven Rostedt
Ingo,
Please pull the latest tip/perf/core tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
tip/perf/coreHead SHA1:
7e9a49ef542610609144d1afcd516dc3fafac4d6Gleb Natapov (1):
jump_label:jump_label_incmay return before the code is patchedIlya Dryomov (1):
tracing: fixevent_subsystemref countingJiri Olsa (1):
tracing/latency: Fix header output for latency tracersLi Zefan (2):
tracing: Restore system filter behavior
tracing: update Documentation on max preds limitSteven Rostedt (5):
tracing: Add boiler plate for subsystem filter
lockdep: Show subclass in pretty print of lockdep output
ftrace: Remove force undef config value left for testing
perf: Fix parsing of__print_flags()inTP_printk()
ftrace: Fix hash record accounting bug----
Quoted 13 lines
Documentation/trace/events.txt | 2 -- include/linux/ftrace_event.h | 2 ++ kernel/jump_label.c | 3 ++- kernel/lockdep.c | 30 +++++++++++++----------------- kernel/trace/ftrace.c | 5 +++-- kernel/trace/trace.c | 15 +++++++++++++++ kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 1 - kernel/trace/trace_events_filter.c | 33 +++++++++++++++++++++++++-------- kernel/trace/trace_irqsoff.c | 13 ++++++++++++- kernel/trace/trace_sched_wakeup.c | 13 ++++++++++++- tools/perf/util/trace-event-parse.c | 2 ++ 12 files changed, 87 insertions(+), 33 deletions(-)
Quoted 1 line
Pulled, thanks a lot Steve!
Hi Ingo,
All these were bug fixes and I was hopping that it would have been pushed to Linus. I know it just missed the merge window (it was posted during -rc1) but they are fixes, not enhancements, and I still believe they are fine for an -rc3 release. I would have even had it pushed before -rc1 but it took time running them through all my tests.
-- Steve
Quoted 50 lines · Steven Rostedt
Quoted 47 lines · Ingo Molnar
Quoted 31 lines · Steven Rostedt
Ingo,
Please pull the latest tip/perf/core tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
tip/perf/coreHead SHA1:
7e9a49ef542610609144d1afcd516dc3fafac4d6Gleb Natapov (1):
jump_label:jump_label_incmay return before the code is patchedIlya Dryomov (1):
tracing: fixevent_subsystemref countingJiri Olsa (1):
tracing/latency: Fix header output for latency tracersLi Zefan (2):
tracing: Restore system filter behavior
tracing: update Documentation on max preds limitSteven Rostedt (5):
tracing: Add boiler plate for subsystem filter
lockdep: Show subclass in pretty print of lockdep output
ftrace: Remove force undef config value left for testing
perf: Fix parsing of__print_flags()inTP_printk()
ftrace: Fix hash record accounting bug----
Quoted 13 lines
Documentation/trace/events.txt | 2 -- include/linux/ftrace_event.h | 2 ++ kernel/jump_label.c | 3 ++- kernel/lockdep.c | 30 +++++++++++++----------------- kernel/trace/ftrace.c | 5 +++-- kernel/trace/trace.c | 15 +++++++++++++++ kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 1 - kernel/trace/trace_events_filter.c | 33 +++++++++++++++++++++++++-------- kernel/trace/trace_irqsoff.c | 13 ++++++++++++- kernel/trace/trace_sched_wakeup.c | 13 ++++++++++++- tools/perf/util/trace-event-parse.c | 2 ++ 12 files changed, 87 insertions(+), 33 deletions(-)Quoted 1 line
Pulled, thanks a lot Steve!
Quoted 8 lines
Hi Ingo,
All these were bug fixes and I was hopping that it would have been pushed to Linus. I know it just missed the merge window (it was posted during -rc1) but they are fixes, not enhancements, and I still believe they are fine for an -rc3 release. I would have even had it pushed before -rc1 but it took time running them through all my tests.
Hm, not all were regression fixes and the branch was named */core so i took it into perf/core.
Could you perhaps cherry-pick the most crutial regression fixes into an urgent branch? We could still push that upstream.
Thanks,
Ingo
Steven Rostedt
maintainerQuoted 2 lines · Ingo Molnar
Hm, not all were regression fixes and the branch was named */core so i took it into perf/core.
Yeah it happened just at the end of the merge window. I didn't really know what branch to name it.
Quoted 3 lines
Could you perhaps cherry-pick the most crutial regression fixes into an urgent branch? We could still push that upstream.
Looking at each patch, I would say 6 of the ten need to go in. Most are marked as stable since they break the last tree. I could just send them all to stable if it seems strange to have this many patches in two pull requests.
-- Steve
Quoted 9 lines · Steven Rostedt
Quoted 2 lines · Ingo Molnar
Hm, not all were regression fixes and the branch was named */core so i took it into perf/core.
Yeah it happened just at the end of the merge window. I didn't really know what branch to name it.
Quoted 1 line
Quoted 8 lines
Quoted 3 lines
Could you perhaps cherry-pick the most crutial regression fixes into an urgent branch? We could still push that upstream.
Looking at each patch, I would say 6 of the ten need to go in. Most are marked as stable since they break the last tree. I could just send them all to stable if it seems strange to have this many patches in two pull requests.
We can cherry-pick those 6 patches into perf/urgent - just make sure you merge the cherry-picked branch into your devel branch before adding new changes to the same files, there will be tons of conflicts otherwise.
Thanks,
Ingo