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

Schspa Shi
2022-07-08T21:45:52Z

Steven Rostedt <rostedt@goodmis.org> writes:

> 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.
>

When I say "run for a while" I mean as long as the task has
run capability, we should check the migrate disabled flag again.

> 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.

Yes, it is the only case.

> -- 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);

--
BRs
Schspa Shi