On Fri, Oct 23, 2020 at 05:13:59PM -0400, Joel Fernandes wrote: > On Fri, Oct 23, 2020 at 03:53:52PM -0400, Michael Jeanson wrote: > > From: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> > > > > Considering that tracer callbacks expect RCU to be watching (for > > instance, perf uses rcu_read_lock), we need rcuidle tracepoints to issue > > rcu_irq_{enter,exit}_irqson around calls to the callbacks. So there is > > no point in using SRCU anymore given that rcuidle tracepoints need to > > ensure RCU is watching. Therefore, simply use sched-RCU like normal > > tracepoints for rcuidle tracepoints. > > High level question: > > IIRC, doing this increases overhead for general tracing that does not use > perf, for 'rcuidle' tracepoints such as the preempt/irq enable/disable > tracepoints. I remember adding SRCU because of this reason. > > Can the 'rcuidle' information not be pushed down further, such that perf does > it because it requires RCU to be watching, so that it does not effect, say, > trace events? There's very few trace_.*_rcuidle() users left. We should eradicate them and remove the option. It's bugs to begin with.