On Thu, Jul 31, 2014 at 09:09:24AM -0700, Paul E. McKenney wrote: > Well, that is one of the questions in the 0/10 cover letter. If it turns > out to be necessary to worry about idle-task trampolines, it should be > possible to avoid hammering all idle CPUs in the common case. Though maybe > battery-powered devices won't need RCU-tasks.
So do we really need this to be a full blown RCU implementation? Could we not live with something like a task_barrier() function that guarantees the same as this rcu_task_synchronize() or somesuch? So for rostedt's case he could patch out all trampolines, call task_barrier() and then free them. We can make task_barrier() force each cpu to resched once -- which, if we do that after the task's have all scheduled once, could be the empty set. It also pushes the cost of this machinery into the caller of task_barrier() and not in some random kthread (yet another one). Now, if only task_work would work for kernel threads, then we could do something far nicer...
pgpHJ9e0wpObV.pgp
Description: PGP signature