From: Wang YanQing <udknight@gmail.com>
To: Preeti U Murthy <preeti@linux.vnet.ibm.com>
Cc: xiaoguangrong@cn.fujitsu.com, mingo@elte.hu,
paulmck@linux.vnet.ibm.com, linux-kernel@vger.kernel.org,
a.p.zijlstra@chello.nl, npiggin@suse.de,
deepthi@linux.vnet.ibm.com, peterz@infradead.org,
rusty@rustcorp.com.au, heiko.carstens@de.ibm.com,
rostedt@goodmis.org, miltonm@bga.com,
srivatsa.bhat@linux.vnet.ibm.com, jens.axboe@oracle.com,
tj@kernel.org, akpm@linux-foundation.org,
svaidy@linux.vnet.ibm.com, shli@kernel.org, tglx@linutronix.de,
lig.fnst@cn.fujitsu.com, anton@samba.org
Subject: Re: [PATCH 2/3] smp/ipi:Clarify ambiguous comments around deadlock scenarios in smp_call_function variants.
Date: Sat, 6 Jul 2013 14:12:05 +0800 [thread overview]
Message-ID: <20130706061205.GA3518@udknight> (raw)
In-Reply-To: <20130705162711.16888.30274.stgit@preeti.in.ibm.com>
On Fri, Jul 05, 2013 at 09:57:11PM +0530, Preeti U Murthy wrote:
> Elaborate on when deadlocks can occur when a call is made to
> smp_call_function_single() and its friends. This avoids ambiguity about
> when to use these calls.
>
> Signed-off-by: Preeti U Murthy <preeti@linux.vnet.ibm.com>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> Cc: srivatsa.bhat@linux.vnet.ibm.com
> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Rusty Russell <rusty@rustcorp.com.au
> ---
>
> kernel/smp.c | 46 ++++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 44 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/smp.c b/kernel/smp.c
> index 89be6e6..b6981ae 100644
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@ -230,7 +230,23 @@ int smp_call_function_single(int cpu, smp_call_func_t func, void *info,
> this_cpu = get_cpu();
>
> /*
> - * Can deadlock when called with interrupts disabled.
> + * Can deadlock when called with interrupts disabled under two
> + * different circumstances depending on the wait parameter.
> + *
> + * 1. wait = 1: Two CPUs execute smp_call_function_single(), send an
> + * IPI to each other, and wait for func to finish on each other.
> + * Since they are interrupt disabled, neither receives this IPI,
> + * nor do they proceed forward,as they wait for each other to complete
> + * execution of func.
> + *
Yes, we should avoid this situation, but I am not sure whether this is
the meaning of "deadlock" in the original comment.
> + * 2. wait = 0: This function could be called from an interrupt
> + * context, and can get blocked on the csd_lock(csd) below in
> + * "non wait cases".
> + * This is because the percpu copy of csd of this_cpu is used
> + * in non wait cases. Under such circumstances, if the previous caller
> + * of this function who got preempted by this interrupt has already taken
> + * the lock under non wait condition, it will result in deadlock.
> + *
No, it will not cause deadlock, it is not mutex lock, it is busy wait, so
when the CSD_FLAG_LOCK be cleared, the code will go on running.
After stare into the kernel/smp.c, I can't catch what the exactly meaning
of the "DeadLock" in the original comment also.
I hope someone can clarify it.
Thanks.
next prev parent reply other threads:[~2013-07-06 6:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-05 16:26 [PATCH 0/3] smp/ipi: Minor cleanups in smp_call_function variants Preeti U Murthy
2013-07-05 16:27 ` [PATCH 1/3] smp/ipi: Remove redundant cfd->cpumask_ipi mask Preeti U Murthy
2013-07-06 3:13 ` Wang YanQing
2013-07-06 5:29 ` Preeti U Murthy
2013-07-06 6:03 ` Wang YanQing
2013-07-07 16:45 ` Preeti U Murthy
2013-07-05 16:27 ` [PATCH 2/3] smp/ipi:Clarify ambiguous comments around deadlock scenarios in smp_call_function variants Preeti U Murthy
2013-07-06 6:12 ` Wang YanQing [this message]
2013-07-06 7:48 ` Preeti U Murthy
2013-07-06 19:48 ` Thomas Gleixner
2013-07-07 16:29 ` Preeti U Murthy
2013-07-05 16:27 ` [PATCH 3/3] smp/ipi:Remove check around csd lock in handler for " Preeti U Murthy
2013-07-06 5:45 ` Wang YanQing
2013-07-06 8:06 ` Preeti U Murthy
2013-07-06 14:21 ` Wang YanQing
2013-07-07 16:23 ` Preeti U Murthy
2013-07-07 17:25 ` Wang YanQing
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=20130706061205.GA3518@udknight \
--to=udknight@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=anton@samba.org \
--cc=deepthi@linux.vnet.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=jens.axboe@oracle.com \
--cc=lig.fnst@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=miltonm@bga.com \
--cc=mingo@elte.hu \
--cc=npiggin@suse.de \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=preeti@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=shli@kernel.org \
--cc=srivatsa.bhat@linux.vnet.ibm.com \
--cc=svaidy@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=xiaoguangrong@cn.fujitsu.com \
/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.