On Wed, 12 Feb 2020 10:32:14 +0100 Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > Because of the requirement that no tracing happens until after we've > incremented preempt_count, see nmi_enter() / trace_rcu_enter(), mark > these functions as notrace. I actually depend on these function being traced. We do have "preempt_enable_notrace()" and "preempt_disable_notrace()" for places that shouldn't be traced. Can't we use those? (or simply __preempt_count_add()) in the nmi_enter() code instead? (perhaps create a preempt_count_add_notrace()). -- Steve > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > --- > kernel/sched/core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -3781,7 +3781,7 @@ static inline void preempt_latency_start > } > } > > -void preempt_count_add(int val) > +void notrace preempt_count_add(int val) > { > #ifdef CONFIG_DEBUG_PREEMPT > /* > @@ -3813,7 +3813,7 @@ static inline void preempt_latency_stop( > trace_preempt_on(CALLER_ADDR0, get_lock_parent_ip()); > } > > -void preempt_count_sub(int val) > +void notrace preempt_count_sub(int val) > { > #ifdef CONFIG_DEBUG_PREEMPT > /* >