On Thu, Aug 08, 2019 at 04:08:10PM +0100, Patrick Bellasi [off-list ref] wrote:
Well, if I've got correctly your comment in the previous message, I
would say that at this stage we don't need RCU looks at all.
Agreed.
Reason being that cpu_util_update_eff() gets called only from
cpu_uclamp_write() which is from an ongoing write operation on a cgroup
attribute and thus granted to be available.
We will eventually need to move the RCU look only down the stack when
uclamp_update_active_tasks() gets called to update the RUNNABLE tasks on
a RQ... or perhaps we don't need them since we already get the
task_rq_lock() for each task we visit.
Unless you remove css_for_each_descendant_pre() in
cpu_util_update_eff(), the rcu_read_lock() cannot go below it.
(You'd be RCU-accessing other csses that aren't pinned in the write.)
Michal