From: Wang YanQing <udknight@gmail.com>
To: Jiang Liu <liuj97@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Shaohua Li <shli@kernel.org>, Jiang Liu <jiang.liu@huawei.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@elte.hu>, Steven Rostedt <rostedt@goodmis.org>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
liguang <lig.fnst@cn.fujitsu.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 1/3] SMP: kill redundant call_function_data->cpumask_ipi field
Date: Tue, 10 Sep 2013 10:32:15 +0800 [thread overview]
Message-ID: <20130910023215.GA5955@udknight> (raw)
In-Reply-To: <1378653745-8343-1-git-send-email-liuj97@gmail.com>
On Sun, Sep 08, 2013 at 11:22:23PM +0800, Jiang Liu wrote:
> From: Jiang Liu <jiang.liu@huawei.com>
>
> Commit f44310b98ddb7 "smp: Fix SMP function call empty cpu mask race"
> introduced field call_function_data->cpumask_ipi to resolve a race
> condition in smp_call_function_many().
>
> Later commit 9a46ad6d6df3 "smp: make smp_call_function_many() use logic
> similar to smp_call_function_single()" fixed the same issue in another
> way when optimizing smp_call_function_many(), which then obsoletes
> changes introduced by commit f44310b98ddb7. So revert it.
>
Yes, you are right, after commit 9a46ad6d6df3, we can revert f44310b98ddb7.
Maybe use "Revert smp: Fix SMP function call empty cpu mask race" is a better
subject.
> We may also keep call_function_data->cpumask_ipi field and use it to
> optimize smp_call_function_many() as below:
> diff --git a/kernel/smp.c b/kernel/smp.c
> index fe9f773..dd852fb 100644
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@ -428,6 +428,8 @@ void smp_call_function_many(const struct cpumask *mask,
> csd->info = info;
>
> raw_spin_lock_irqsave(&dst->lock, flags);
> + if (list_empty(&dst->list))
> + cpumask_clear_cpu(cpu, cfd->cpumask_ipi);
> list_add_tail(&csd->list, &dst->list);
> raw_spin_unlock_irqrestore(&dst->lock, flags);
> }
>
Your optimization don't need to keep cpumask_ipi, just clear cfd->cpumask,
and test whether cfd->cpumask is empty after "for_each_cpu(cpu, cfd->cpumask)".
Acked-by: Wang YanQing <udknight@gmail.com>
Thanks.
prev parent reply other threads:[~2013-09-10 2:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-08 15:22 [PATCH v1 1/3] SMP: kill redundant call_function_data->cpumask_ipi field Jiang Liu
2013-09-08 15:22 ` [PATCH v1 2/3] SMP: simpilify function generic_smp_call_function_single_interrupt() Jiang Liu
2013-09-09 2:08 ` Xie XiuQi
2013-09-08 15:22 ` [PATCH v1 3/3] SMP, trivial: remove unused code from smp_boot.h Jiang Liu
2013-09-10 2:32 ` Wang YanQing [this message]
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=20130910023215.GA5955@udknight \
--to=udknight@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=jiang.liu@huawei.com \
--cc=lig.fnst@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=liuj97@gmail.com \
--cc=mingo@elte.hu \
--cc=paul.gortmaker@windriver.com \
--cc=rostedt@goodmis.org \
--cc=shli@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.