On Thu, Feb 13, 2020 at 09:28:14AM +0100, Peter Zijlstra wrote: > On Wed, Feb 12, 2020 at 06:27:02PM -0500, Joel Fernandes wrote: > > On Wed, Feb 12, 2020 at 10:01:42PM +0100, Peter Zijlstra wrote: > > > > +#define trace_rcu_enter() \ > > > +({ \ > > > + unsigned long state = 0; \ > > > + if (!rcu_is_watching()) { \ > > > + if (in_nmi()) { \ > > > + state = __TR_NMI; \ > > > + rcu_nmi_enter(); \ > > > + } else { \ > > > + state = __TR_IRQ; \ > > > + rcu_irq_enter_irqsave(); \ > > > > Since rcu_irq_enter_irqsave can be called from a tracer context, should those > > be marked with notrace as well? AFAICS, there's no notrace marking on them. > > It should work, these functions are re-entrant (as are IRQs / NMIs) and > Steve wants to be able to trace RCU itself. Hoping there are no recursion scenarios possible, but that sounds good to me. thanks, - Joel