Re: [PATCH v4 1/2] sched/rt: fix bad task migration for rt tasks

Steven Rostedt
2022-07-08T21:26:23Z

On Sat, 9 Jul 2022 05:17:54 +0800
Schspa Shi <schspa@gmail.com> wrote:

> +++ b/kernel/sched/rt.c
> @@ -1998,11 +1998,14 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq)
> * the mean time, task could have
> * migrated already or had its affinity changed.
> * Also make sure that it wasn't scheduled on its rq.
> + * It is possible the task has running for a while,

I don't understand the "running for a while" part. That doesn't make sense.

The only way this can happen is that it was scheduled, set
"migrate_disabled" and then got preempted where it's no longer on the run
queue.

-- Steve

> + * And we check task migration disable flag here.
> */
> if (unlikely(task_rq(task) != rq ||
> !cpumask_test_cpu(lowest_rq->cpu, &task->cpus_mask) ||
> task_running(rq, task) ||
> !rt_task(task) ||
> + is_migration_disabled(task) ||
> !task_on_rq_queued(task))) {
>
> double_unlock_balance(rq, lowest_rq);