[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <m2v8s7mg78.fsf@gmail.com>
Date: Sat, 09 Jul 2022 05:32:25 +0800
From: Schspa Shi <schspa@...il.com>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: mingo@...hat.com, peterz@...radead.org, juri.lelli@...hat.com,
vincent.guittot@...aro.org, dietmar.eggemann@....com,
bsegall@...gle.com, mgorman@...e.de, bristot@...hat.com,
vschneid@...hat.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4 1/2] sched/rt: fix bad task migration for rt tasks
Steven Rostedt <rostedt@...dmis.org> writes:
> On Sat, 9 Jul 2022 05:17:54 +0800
> Schspa Shi <schspa@...il.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
Powered by blists - more mailing lists