mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
sched: core: reset preemption/irqsoff disable timestamp
Preempt/irqsoff tracer notes down preemption/irqs disabled timestamp and compares it with enable timestamp to report prolonged disabling callers at latency tracking. But they don't reset the time stamp at re-enable time. The time stamp could be stale and possible to report same latency multiple times or false positive. This could be possible when callsites uses notrace API (__preempt_) for preemption disable and tracable API (preempt_) for enable (ex: softirq). Fix it by resetting the preempt/irqsoff disable timestamp at re-enable time. Change-Id: I6790227998881922a9339869ce9ee2dab6202567 Signed-off-by: Lingutla Chandrasekhar <clingutla@codeaurora.org>
This commit is contained in:
parent
0dbcf5d8eb
commit
617f2e7fe2
2 changed files with 2 additions and 0 deletions
|
|
@ -3964,6 +3964,7 @@ static inline void preempt_latency_stop(int val)
|
|||
trace_sched_preempt_disable(delta, ps->irqs_disabled,
|
||||
ps->caddr[0], ps->caddr[1],
|
||||
ps->caddr[2], ps->caddr[3]);
|
||||
ps->ts = 0;
|
||||
trace_preempt_on(CALLER_ADDR0, get_lock_parent_ip());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -640,6 +640,7 @@ void tracer_hardirqs_on(unsigned long a0, unsigned long a1)
|
|||
delta > sysctl_irqsoff_tracing_threshold_ns)
|
||||
trace_irqs_disable(delta, is->caddr[0], is->caddr[1],
|
||||
is->caddr[2], is->caddr[3]);
|
||||
is->ts = 0;
|
||||
lockdep_on();
|
||||
#endif /* CONFIG_PREEMPTIRQ_EVENTS */
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue