From cebda4b7a3455755bb20b8e2cee8049fdbeb416d Mon Sep 17 00:00:00 2001 From: Steve Muckle Date: Tue, 29 Apr 2014 14:16:47 -0700 Subject: [PATCH] sched: window-stats: adjust RQ curr, prev sums on task migration Adjust cpu's busy time in its recent and previous window upon task migration. This would enable scheduler to provide better inputs to cpufreq governor on a cpu's busy time in a given window. Change-Id: Idec2ca459382e9f46d882da3af53148412d631c6 Signed-off-by: Steve Muckle Signed-off-by: Srivatsa Vaddagiri --- kernel/sched/core.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 238dfe87ad80..89247c82da3c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1623,8 +1623,24 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu) p->se.nr_migrations++; perf_event_task_migrate(p); - if (p->state == TASK_RUNNING) +#if defined(CONFIG_SCHED_FREQ_INPUT) || defined(CONFIG_SCHED_HMP) + if (p->on_rq) { + struct rq *src_rq = task_rq(p); + struct rq *dest_rq = cpu_rq(new_cpu); + + p->on_rq = 0; /* Fixme */ update_task_ravg(p, task_rq(p), 0); + p->on_rq = 1; /* Fixme */ + update_task_ravg(dest_rq->curr, dest_rq, 1); + + + src_rq->curr_runnable_sum -= p->ravg.sum; + src_rq->prev_runnable_sum -= p->ravg.prev_window; + dest_rq->curr_runnable_sum += p->ravg.sum; + dest_rq->prev_runnable_sum += p->ravg.prev_window; + } +#endif + } __set_task_cpu(p, new_cpu);