[RFC GIT PULL] sched; Fix a few missing rq clock updates

From: Frederic Weisbecker
Date: Thu Apr 11 2013 - 19:51:17 EST


Hi,

So I revisited the rq clock series I had for dynticks. The patches
actually were about upstream issues so I refactored the fixes
under that angle and gave up with the wrong asumption that rq
clock relies on the tick for its updates.

Patches 1-4 fix some missing updates. Additionally I removed
2 of these updates from the previous set:

* No need to update the rq clock on idle_balance() because it should
follow a call to deactivate_task() (unless TIF_NEED_RESCHED is set
on idle without new task on the runqueue, not sure we want to cover that).

* No need to update for try_to_wake_up_local() -> ttwu_do_wakeup() -> check_preempt_curr()
as it's following deactivate_task().

Patch 5 brings accessors that will be necessary to settle an rq clock
debugging engine. What remains is to tag scheduler's entry/exit points
and report missing or redundant update_rq_clock() before calls to
rq_clock() and rq_clock_task().

The branch is pullable from:

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
sched/core

HEAD: 8b5fa0f1de7e41176dc68740de7548110a404538

Thanks.

---
Frederic Weisbecker (5):
sched: Update rq clock before migrating tasks out of dying CPU
sched: Update rq clock before setting fair group shares
sched: Update rq clock before calling check_preempt_curr()
sched: Update rq clock earlier in unthrottle_cfs_rq
sched: Use an accessor to read rq clock

kernel/sched/core.c | 15 ++++++++++--
kernel/sched/fair.c | 51 +++++++++++++++++++++++++--------------------
kernel/sched/rt.c | 8 +++---
kernel/sched/sched.h | 10 +++++++++
kernel/sched/stats.h | 8 +++---
kernel/sched/stop_task.c | 8 +++---
6 files changed, 62 insertions(+), 38 deletions(-)

--
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/