All of lore.kernel.org
 help / color / mirror / Atom feed
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>,
	Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Steven Rostedt <rostedt@goodmis.org>,
	Jiri Kosina <trivial@kernel.org>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH v2 01/25] Revert smp: Fix SMP function call empty cpu mask race
Date: Sat, 14 Sep 2013 12:41:36 +0800	[thread overview]
Message-ID: <20130914044136.GA2944@udknight> (raw)
In-Reply-To: <1378915649-16395-2-git-send-email-liuj97@gmail.com>

On Thu, Sep 12, 2013 at 12:07:05AM +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.
> 
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Acked-by: Wang YanQing <udknight@gmail.com>
> Cc: Jiang Liu <liuj97@gmail.com>
> ---
>  kernel/smp.c | 16 ++--------------
>  1 file changed, 2 insertions(+), 14 deletions(-)
> 
> diff --git a/kernel/smp.c b/kernel/smp.c
> index fe9f773..a034712 100644
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@ -23,7 +23,6 @@ enum {
>  struct call_function_data {
>  	struct call_single_data	__percpu *csd;
>  	cpumask_var_t		cpumask;
> -	cpumask_var_t		cpumask_ipi;
>  };
>  
>  static DEFINE_PER_CPU_SHARED_ALIGNED(struct call_function_data, cfd_data);
> @@ -47,9 +46,6 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu)
>  		if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL,
>  				cpu_to_node(cpu)))
>  			return notifier_from_errno(-ENOMEM);
> -		if (!zalloc_cpumask_var_node(&cfd->cpumask_ipi, GFP_KERNEL,
> -				cpu_to_node(cpu)))
> -			return notifier_from_errno(-ENOMEM);
>  		cfd->csd = alloc_percpu(struct call_single_data);
>  		if (!cfd->csd) {
>  			free_cpumask_var(cfd->cpumask);
> @@ -64,7 +60,6 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu)
>  	case CPU_DEAD:
>  	case CPU_DEAD_FROZEN:
>  		free_cpumask_var(cfd->cpumask);
> -		free_cpumask_var(cfd->cpumask_ipi);
>  		free_percpu(cfd->csd);
>  		break;
>  #endif
> @@ -255,9 +250,9 @@ int smp_call_function_single(int cpu, smp_call_func_t func, void *info,
>  				csd = &__get_cpu_var(csd_data);
>  
>  			csd_lock(csd);
> -
>  			csd->func = func;
>  			csd->info = info;
> +
>  			generic_exec_single(cpu, csd, wait);
>  		} else {
>  			err = -ENXIO;	/* CPU not online */
> @@ -410,13 +405,6 @@ void smp_call_function_many(const struct cpumask *mask,
>  	if (unlikely(!cpumask_weight(cfd->cpumask)))
>  		return;
>  
> -	/*
> -	 * After we put an entry into the list, cfd->cpumask may be cleared
> -	 * again when another CPU sends another IPI for a SMP function call, so
> -	 * cfd->cpumask will be zero.
> -	 */
> -	cpumask_copy(cfd->cpumask_ipi, cfd->cpumask);
> -
>  	for_each_cpu(cpu, cfd->cpumask) {
>  		struct call_single_data *csd = per_cpu_ptr(cfd->csd, cpu);
>  		struct call_single_queue *dst =
> @@ -433,7 +421,7 @@ void smp_call_function_many(const struct cpumask *mask,
>  	}
>  
>  	/* Send a message to all CPUs in the map */
> -	arch_send_call_function_ipi_mask(cfd->cpumask_ipi);
> +	arch_send_call_function_ipi_mask(cfd->cpumask);
>  
>  	if (wait) {
>  		for_each_cpu(cpu, cfd->cpumask) {
> -- 
> 1.8.1.2
Hi Liu and all

Commit 60c323699bb308404dcb60e8808531e02651578a 
(kernel/smp.c: free related resources when failure occurs in hotplug_cfd())
is a fix patch for commit you revert, and it had been merged into mainline.

So could you ajust your patch to revert it together? I don't think we need
a separate patch to revert 60c323699bb308404dcb60e8808531e02651578a, because
your patch haven't be merged.

Thanks.

  reply	other threads:[~2013-09-14  4:41 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-11 16:07 [RFC PATCH v2 00/25] simplify generic cross CPU function call implementation Jiang Liu
2013-09-11 16:07 ` [PATCH v2 01/25] Revert smp: Fix SMP function call empty cpu mask race Jiang Liu
2013-09-14  4:41   ` Wang YanQing [this message]
2013-09-14  4:43     ` Wang YanQing
2013-09-16  2:22       ` Chen Gang
2013-09-11 16:07 ` [RFC PATCH v2 02/25] smp, alpha: kill SMP single function call interrupt Jiang Liu
2013-10-22 10:07   ` Vineet Gupta
2013-10-22 10:18     ` Vineet Gupta
2013-09-11 16:07 ` [RFC PATCH v2 03/25] smp, ARC: " Jiang Liu
2013-09-25 11:31   ` Vineet Gupta
2013-09-25 11:31     ` Vineet Gupta
2013-09-11 16:07 ` [RFC PATCH v2 04/25] smp, ARM: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-12  9:14   ` Will Deacon
2013-09-12  9:14     ` Will Deacon
2013-09-11 16:07 ` [RFC PATCH v2 05/25] smp, ARM64: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-12  9:14   ` Will Deacon
2013-09-12  9:14     ` Will Deacon
2013-09-11 16:07 ` [RFC PATCH v2 06/25] smp, blackfin: " Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 07/25] smp, hexagon: " Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 08/25] smp, IA64: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 09/25] smp, m32r: " Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 10/25] smp, metag: " Jiang Liu
2013-09-12 11:14   ` James Hogan
2013-09-12 11:14     ` James Hogan
2013-09-11 16:07 ` [RFC PATCH v2 11/25] smp, mips: kill redundant call of generic_smp_call_function_single_interrupt() Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 12/25] smp, mn10300: kill SMP single function call interrupt Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 13/25] smp, mn10300: enable arch_send_call_function_ipi_mask() Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 14/25] smp, parisc: kill SMP single function call interrupt Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 15/25] smp, ppc: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-11 20:03   ` Srivatsa S. Bhat
2013-09-11 20:03     ` Srivatsa S. Bhat
2013-09-12 14:04     ` Jiang Liu
2013-09-12 14:04       ` Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 16/25] smp, s390: prepare for killing generic_smp_call_function_single_interrupt() Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 17/25] smp, sh: kill SMP single function call interrupt Jiang Liu
2013-09-12  8:35   ` Paul Mundt
2013-09-11 16:07 ` [RFC PATCH v2 18/25] smp, sparc64: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 19/25] smp, sparc: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 20/25] smp, tile: " Jiang Liu
2013-09-11 16:51   ` Chris Metcalf
2013-09-11 16:51     ` Chris Metcalf
2013-09-11 16:07 ` [RFC PATCH v2 21/25] " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 22/25] smp, x86: " Jiang Liu
2013-09-11 16:07   ` Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 23/25] smp: cleanup unsued generic_smp_call_function_single_interrupt() Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 24/25] smp: rename call_single_queue as call_function_queue Jiang Liu
2013-09-11 16:07 ` [RFC PATCH v2 25/25] SMP, trivial: remove unused code from smp_boot.h Jiang Liu

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=20130914044136.GA2944@udknight \
    --to=udknight@gmail.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=jiang.liu@huawei.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=liuj97@gmail.com \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=shli@kernel.org \
    --cc=trivial@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.