From: Sodagudi Prasad <psodagud@codeaurora.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
isaacm@codeaurora.org, matt@codeblueprint.co.uk,
mingo@kernel.org, linux-kernel@vger.kernel.org,
gregkh@linuxfoundation.org, pkondeti@codeaurora.org,
stable@vger.kernel.org
Subject: Re: [PATCH] stop_machine: Disable preemption after queueing stopper threads
Date: Mon, 30 Jul 2018 10:12:43 -0700 [thread overview]
Message-ID: <109d0e70606ccd34861a80525d6d11aa@codeaurora.org> (raw)
In-Reply-To: <alpine.DEB.2.21.1807301440340.2518@nanos.tec.linutronix.de>
On 2018-07-30 05:41, Thomas Gleixner wrote:
> On Mon, 30 Jul 2018, Peter Zijlstra wrote:
>
>> On Mon, Jul 30, 2018 at 12:20:57PM +0200, Thomas Gleixner wrote:
>> > On Tue, 24 Jul 2018, Sebastian Andrzej Siewior wrote:
>> > > On 2018-07-23 18:13:48 [-0700], isaacm@codeaurora.org wrote:
>> > > > Hi all,
>> > > Hi,
>> > >
>> > > > Are there any comments about this patch?
>> > >
>> > > I haven't look in detail at this but your new preempt_disable() makes
>> > > things unbalanced for the err != 0 case.
>> >
>> > It doesn't but that code is really an unreadable pile of ...
>>
>> ---
>> Subject: stop_machine: Reflow cpu_stop_queue_two_works()
>>
>> The code flow in cpu_stop_queue_two_works() is a little arcane; fix
>> this by lifting the preempt_disable() to the top to create more
>> natural
>> nesting wrt the spinlocks and make the wake_up_q() and
>> preempt_enable()
>> unconditional at the end.
>>
>> Furthermore, enable preemption in the -EDEADLK case, such that we
>> spin-wait with preemption enabled.
>>
>> Suggested-by: Thomas Gleixner <tglx@linutronix.de>
>> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
>
Hi Peter/Thomas,
How about including below change as well? Currently, there is no way to
identify thread migrations completed or not. When we observe this
issue, the symptom was work queue lock up. It is better to have some
timeout here and induce the bug_on.
There is no way to identify the migration threads stuck or not.
--- a/kernel/stop_machine.c
+++ b/kernel/stop_machine.c
@@ -290,6 +290,7 @@ int stop_two_cpus(unsigned int cpu1, unsigned int
cpu2, cpu_stop_fn_t fn, void *
struct cpu_stop_done done;
struct cpu_stop_work work1, work2;
struct multi_stop_data msdata;
+ int ret;
msdata = (struct multi_stop_data){
.fn = fn,
@@ -312,7 +313,10 @@ int stop_two_cpus(unsigned int cpu1, unsigned int
cpu2, cpu_stop_fn_t fn, void *
if (cpu_stop_queue_two_works(cpu1, &work1, cpu2, &work2))
return -ENOENT;
- wait_for_completion(&done.completion);
+ ret = wait_for_completion_timeout(&done.completion,
msecs_to_jiffies(1000));
+ if (!ret)
+ BUG_ON(1);
+
> Thanks for cleaning that up!
>
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
Linux Foundation Collaborative Project
next prev parent reply other threads:[~2018-07-30 18:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 19:35 [PATCH] stop_machine: Disable preemption after queueing stopper threads Isaac J. Manjarres
2018-07-24 1:13 ` isaacm
2018-07-24 6:23 ` Sebastian Andrzej Siewior
2018-07-25 4:15 ` isaacm
2018-07-30 10:20 ` Thomas Gleixner
2018-07-30 11:21 ` Peter Zijlstra
2018-07-30 12:41 ` Thomas Gleixner
2018-07-30 17:12 ` Sodagudi Prasad [this message]
2018-07-30 17:16 ` Thomas Gleixner
2018-07-30 21:07 ` Peter Zijlstra
2018-08-01 8:07 ` Sodagudi Prasad
2018-08-06 8:37 ` Pavan Kondeti
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=109d0e70606ccd34861a80525d6d11aa@codeaurora.org \
--to=psodagud@codeaurora.org \
--cc=bigeasy@linutronix.de \
--cc=gregkh@linuxfoundation.org \
--cc=isaacm@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@codeblueprint.co.uk \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pkondeti@codeaurora.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).