All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sven Schnelle <svens@linux.ibm.com>
To: Tejun Heo <tj@kernel.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] workqueue: fix selection of wake_cpu in kick_pool()
Date: Wed, 17 Apr 2024 17:36:38 +0200	[thread overview]
Message-ID: <yt9dpluogfw9.fsf@linux.ibm.com> (raw)
In-Reply-To: <Zh8EfxdVdiIj_27H@slm.duckdns.org> (Tejun Heo's message of "Tue, 16 Apr 2024 13:06:39 -1000")

Tejun Heo <tj@kernel.org> writes:

> On Mon, Apr 15, 2024 at 07:35:49AM +0200, Sven Schnelle wrote:
>> @@ -1277,7 +1277,8 @@ static bool kick_pool(struct worker_pool *pool)
>>  	    !cpumask_test_cpu(p->wake_cpu, pool->attrs->__pod_cpumask)) {
>>  		struct work_struct *work = list_first_entry(&pool->worklist,
>>  						struct work_struct, entry);
>> -		p->wake_cpu = cpumask_any_distribute(pool->attrs->__pod_cpumask);
>> +		p->wake_cpu = cpumask_any_and_distribute(pool->attrs->__pod_cpumask,
>> +							 cpu_online_mask);
>
> I think this can still race with the last CPU in the pod going down and
> return nr_cpu_ids. Maybe something like the following would be better?
>
> 	int wake_cpu;
>
> 	wake_cpu = cpumask_any_distribute_and(...);
> 	if (wake_cpu < nr_cpus_ids) {
> 		p->wake_cpu = wake_cpu;
> 		// update stat;
> 	}
>
> This generally seems like a good idea but isn't this still racy? The CPU may
> go down between setting p->wake_cpu and wake_up_process().

Don't know without reading the source, but how does this code normally
protect against that?

Thanks
Sven

  reply	other threads:[~2024-04-17 15:36 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-15  5:35 [PATCH] workqueue: fix selection of wake_cpu in kick_pool() Sven Schnelle
2024-04-16 23:06 ` Tejun Heo
2024-04-17 15:36   ` Sven Schnelle [this message]
2024-04-18  1:55     ` Tejun Heo
2024-04-18  5:54       ` Sven Schnelle
2024-04-18 15:56         ` Tejun Heo
2024-04-19  8:27       ` Sven Schnelle
2024-04-19 15:40         ` Tejun Heo
2024-04-22 22:44 ` Tejun Heo
2024-04-23  6:20   ` Sven Schnelle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yt9dpluogfw9.fsf@linux.ibm.com \
    --to=svens@linux.ibm.com \
    --cc=jiangshanlai@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.