tracing: Partial revert of "tracing: Centralize preemptirq tracepoints and unify their usage"
Joel Fernandes created a nice patch that cleaned up the duplicate hooks used by lockdep and irqsoff latency tracer. It made both use tracepoints. But it caused lockdep to trigger several false positives. We have not figured out why yet, but removing lockdep from using the trace event hooks and just call its helper functions directly (like it use to), makes the problem go away. This is a partial revert of the clean up patchc3bc8fd637
("tracing: Centralize preemptirq tracepoints and unify their usage") that adds direct calls for lockdep, but also keeps most of the clean up done to get rid of the horrible preprocessor if statements. Link: http://lkml.kernel.org/r/20180806155058.5ee875f4@gandalf.local.home Cc: Peter Zijlstra <peterz@infradead.org> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Fixes:c3bc8fd637
("tracing: Centralize preemptirq tracepoints and unify their usage") Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
@@ -2840,8 +2840,7 @@ static void __trace_hardirqs_on_caller(unsigned long ip)
|
||||
debug_atomic_inc(hardirqs_on_events);
|
||||
}
|
||||
|
||||
static void lockdep_hardirqs_on(void *none, unsigned long ignore,
|
||||
unsigned long ip)
|
||||
void lockdep_hardirqs_on(unsigned long ip)
|
||||
{
|
||||
if (unlikely(!debug_locks || current->lockdep_recursion))
|
||||
return;
|
||||
@@ -2885,8 +2884,7 @@ static void lockdep_hardirqs_on(void *none, unsigned long ignore,
|
||||
/*
|
||||
* Hardirqs were disabled:
|
||||
*/
|
||||
static void lockdep_hardirqs_off(void *none, unsigned long ignore,
|
||||
unsigned long ip)
|
||||
void lockdep_hardirqs_off(unsigned long ip)
|
||||
{
|
||||
struct task_struct *curr = current;
|
||||
|
||||
@@ -4315,14 +4313,6 @@ out_restore:
|
||||
raw_local_irq_restore(flags);
|
||||
}
|
||||
|
||||
void __init lockdep_init_early(void)
|
||||
{
|
||||
#ifdef CONFIG_PROVE_LOCKING
|
||||
register_trace_prio_irq_disable(lockdep_hardirqs_off, NULL, INT_MAX);
|
||||
register_trace_prio_irq_enable(lockdep_hardirqs_on, NULL, INT_MIN);
|
||||
#endif
|
||||
}
|
||||
|
||||
void __init lockdep_init(void)
|
||||
{
|
||||
printk("Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar\n");
|
||||
|
Reference in New Issue
Block a user