Messages in this thread | | | Date | Thu, 14 May 2015 10:56:37 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH] tracing: Add comments explaining cpu online filter for trace events |
| |
On Thu, 14 May 2015 19:46:11 +0530 Shreyas B Prabhu <shreyas@linux.vnet.ibm.com> wrote:
> > Thanks for the comments, but can't these still be called with > > preemption enabled. What happens when CONFIG_DEBUG_PREEMPT is set and > > you enable these tracepoints. Wont it trigger a warning about > > smp_processor_id() being used in preemptible code? > > > Yes. It does trigger "using smp_processor_id() in preemptible code" > warnings. But as you mentioned in the previous comments, we should be > safe even if the trace call happens from a preemptible section. Let me > play out the scenarios here again- > > The task gets migrated after the smp_processor_id() > 1. From an online cpu to another online cpu - No impact > 2. From an online cpu to an offline cpu - Should never happen > 3. From an offline cpu to an online cpu - IIUC, once a cpu has been > offlined it returns to cpu_idle_loop, discovers its offline and calls > arch_cpu_idle_dead. All this happens with preemption disabled. So this > scenario too should never happen. > > So I don't see any downside to changing smp_processor_id() to > raw_smp_processor_id() which will suppress the warnings. If you agree > I'll send a patch doing this.
Yes, please use the raw_smp_processor_id(), and you can add the above description about why it is safe to do so (in the comments).
> > Another alternative which is perhaps worth considering is to change > __DO_TRACE itself to check for offline cpu, without a trace event > specifying the check. This will prevent any currently uncaught and any > future tracepoints from using RCU on offline cpus. But I guess it's > little extreme considering only a low fraction of tracepoints have > potential of being called from offline cpus.
I think that's a bit extreme, as it would cause an impact to the speed of tracepoints in the hot path.
-- Steve
| |