|
@@ -5344,11 +5344,13 @@ static void task_move_group_fair(struct task_struct *p, int on_rq)
|
|
*
|
|
*
|
|
* - Moving a forked child which is waiting for being woken up by
|
|
* - Moving a forked child which is waiting for being woken up by
|
|
* wake_up_new_task().
|
|
* wake_up_new_task().
|
|
|
|
+ * - Moving a task which has been woken up by try_to_wake_up() and
|
|
|
|
+ * waiting for actually being woken up by sched_ttwu_pending().
|
|
*
|
|
*
|
|
* To prevent boost or penalty in the new cfs_rq caused by delta
|
|
* To prevent boost or penalty in the new cfs_rq caused by delta
|
|
* min_vruntime between the two cfs_rqs, we skip vruntime adjustment.
|
|
* min_vruntime between the two cfs_rqs, we skip vruntime adjustment.
|
|
*/
|
|
*/
|
|
- if (!on_rq && !p->se.sum_exec_runtime)
|
|
|
|
|
|
+ if (!on_rq && (!p->se.sum_exec_runtime || p->state == TASK_WAKING))
|
|
on_rq = 1;
|
|
on_rq = 1;
|
|
|
|
|
|
if (!on_rq)
|
|
if (!on_rq)
|