linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Christoph Lameter <cl@linux.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Mel Gorman <mgorman@techsingularity.net>,
	Vlastimil Babka <vbabka@suse.cz>,
	Dmitry Vyukov <dvyukov@google.com>, Tejun Heo <tj@kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	syzkaller <syzkaller@googlegroups.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: mm: deadlock between get_online_cpus/pcpu_alloc
Date: Thu, 9 Feb 2017 20:15:47 +0100	[thread overview]
Message-ID: <20170209191547.GA31906@dhcp22.suse.cz> (raw)
In-Reply-To: <alpine.DEB.2.20.1702091048330.24346@east.gentwo.org>

On Thu 09-02-17 11:22:49, Cristopher Lameter wrote:
> On Thu, 9 Feb 2017, Thomas Gleixner wrote:
> 
> > You are just not getting it, really.
> >
> > The problem is that this for_each_online_cpu() is racy against a concurrent
> > hot unplug and therefor can queue stuff for a not longer online cpu. That's
> > what the mm folks tried to avoid by preventing a CPU hotplug operation
> > before entering that loop.
> 
> With a stop machine action it is NOT racy because the machine goes into a
> special kernel state that guarantees that key operating system structures
> are not touched. See mm/page_alloc.c's use of that characteristic to build
> zonelists. Thus it cannot be executing for_each_online_cpu and related
> tasks (unless one does not disable preempt .... but that is a given if a
> spinlock has been taken)..

Christoph, you are completely ignoring the reality and the code. There
is no need for stop_machine nor it is helping anything. As the matter
of fact there is a synchronization with the cpu hotplug needed if you
want to make a per-cpu specific operations. get_online_cpus is the
most straightforward and heavy weight way to do this synchronization
but not the only one. As the patch [1] describes we do not really need
get_online_cpus in drain_all_pages because we can do _better_. But
this is not in any way a generic thing applicable to other code paths.

If you disagree then you are free to post patches but hand waving you
are doing here is just wasting everybody's time. So please cut it here
unless you have specific proposals to improve the current situation.

Thanks!

[1] http://lkml.kernel.org/r/20170207201950.20482-1-mhocko@kernel.org
-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2017-02-09 19:15 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-29 12:44 Dmitry Vyukov
2017-01-29 17:22 ` Vlastimil Babka
2017-01-30 15:48   ` Dmitry Vyukov
2017-02-06 19:13     ` Dmitry Vyukov
2017-02-06 22:05       ` Mel Gorman
2017-02-07  8:48         ` Michal Hocko
2017-02-07  9:23           ` Vlastimil Babka
2017-02-07  9:46             ` Mel Gorman
2017-02-07  9:53             ` Michal Hocko
2017-02-07 10:42             ` Mel Gorman
2017-02-07 11:13               ` Mel Gorman
2017-02-07  9:43           ` Mel Gorman
2017-02-07  9:49             ` Vlastimil Babka
2017-02-07 10:05               ` Michal Hocko
2017-02-07 10:28               ` Mel Gorman
2017-02-07 10:35                 ` Michal Hocko
2017-02-07 11:34                   ` Mel Gorman
2017-02-07 11:43                     ` Michal Hocko
2017-02-07 11:54                       ` Vlastimil Babka
2017-02-07 12:08                         ` Michal Hocko
2017-02-07 12:37                       ` Michal Hocko
2017-02-07 12:43                         ` Vlastimil Babka
2017-02-07 12:48                           ` Michal Hocko
2017-02-07 13:57                             ` Vlastimil Babka
2017-02-07 13:58                         ` Mel Gorman
2017-02-07 14:19                           ` Michal Hocko
2017-02-07 15:34                             ` Michal Hocko
2017-02-07 16:22                               ` Mel Gorman
2017-02-07 16:41                                 ` Michal Hocko
2017-02-07 16:55                                   ` Christoph Lameter
2017-02-07 22:25                                     ` Thomas Gleixner
2017-02-08  7:35                                       ` Michal Hocko
2017-02-08 12:02                                         ` Thomas Gleixner
2017-02-08 12:21                                           ` Michal Hocko
2017-02-08 12:26                                           ` Mel Gorman
2017-02-08 13:23                                             ` Thomas Gleixner
2017-02-08 14:03                                               ` Mel Gorman
2017-02-08 14:11                                                 ` Peter Zijlstra
2017-02-08 15:11                                         ` Christoph Lameter
2017-02-08 15:21                                           ` Michal Hocko
2017-02-08 16:17                                             ` Christoph Lameter
2017-02-08 17:46                                               ` Thomas Gleixner
2017-02-09  3:15                                                 ` Christoph Lameter
2017-02-09 11:42                                                   ` Thomas Gleixner
2017-02-09 14:00                                                     ` Christoph Lameter
2017-02-09 14:53                                                       ` Thomas Gleixner
2017-02-09 15:42                                                         ` Christoph Lameter
2017-02-09 16:12                                                           ` Thomas Gleixner
2017-02-09 17:22                                                             ` Christoph Lameter
2017-02-09 17:40                                                               ` Thomas Gleixner
2017-02-09 19:15                                                               ` Michal Hocko [this message]
2017-02-10 17:58                                                                 ` Christoph Lameter
2017-02-08 15:06                                       ` Christoph Lameter
2017-02-07 17:03                               ` Tejun Heo
2017-02-07 20:16                                 ` Michal Hocko
2017-02-07 13:03                       ` Mel Gorman
2017-02-07 13:48                         ` Michal Hocko
2017-02-07 11:24         ` Tetsuo Handa
2017-02-07  8:43       ` Michal Hocko
2017-02-07 21:53       ` Thomas Gleixner

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=20170209191547.GA31906@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=dvyukov@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=syzkaller@googlegroups.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=vbabka@suse.cz \
    /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