linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	npiggin@suse.de, akpm@linux-foundation.org,
	cl@linux-foundation.org, torvalds@linux-foundation.org
Subject: Re: [PATCH v2] slab,slub: ignore __GFP_WAIT if we're booting or suspending
Date: Fri, 12 Jun 2009 21:09:40 +1000	[thread overview]
Message-ID: <1244804980.7172.124.camel@pasglop> (raw)
In-Reply-To: <20090612100756.GA25185@elte.hu>

On Fri, 2009-06-12 at 12:07 +0200, Ingo Molnar wrote:
> 
> IMHO such invisible side-channels modifying the semantics of GFP 
> flags is a bit dubious.
> 
> We could do GFP_INIT or GFP_BOOT. These can imply other useful 
> modifiers as well: panic-on-failure for example. (this would clean 
> up a fair amount of init code that currently checks for an panics on 
> allocation failure.)

I disagree.

I believe most code shouldn't have to care whether it's in boot, suspend
or similar to get the right flags to kmalloc().

This is especially true for when the allocator is called indirectly by
something that can itself be called from either boot or non-boot.

I believe the best example here is __get_vm_area() will use GFP_KERNEL.
I don't think it should be "fixed" to do anything else. The normal case
of GFP_KERNEL is correct and it shouldn't be changed to do GFP_NOWAIT
just because it happens that we use it earlier during init time.

This is also true of a lot of code used on "hotplug" path that is
commonly used at init time but can be used later on.

To some extent, the subtle distinction of whether interrupts are enabled
or not is something that shouldn't be something those callers have to
bother with. Yes, it is obvious for some strictly init code, but it's
far from being always that simple, and it's not unlikely that we'll
decide to move around in the init sequence the point at which we decide
to enable interrupts. We shouldn't have to fix half of the init code
when we do that.

In fact, we could push the logic further (but please read it all before
reacting :-) The fact that we -do- specific GFP_ATOMIC for atomic
context is -almost- a side effect of history. To some extent we could
get rid of it since we can almost always know when we are in such a
context. In that case, though, I believe we should keep it that way, at
least because it does discourage people from allocating in those
contexts which is a good thing.

Back to the general idea, I think we shouldn't burden arch, driver,
subsystem etc... code with the need to understand the system state, in
our present case, init vs. non init, but the same issue applies with
suspend/resume vs. GFP_NOIO as I explained in a separate email.

This typically a case where I believe the best way to ensure we do the
right thing is to put the check in the few common code path where
everybody funnels through, which is the allocator itself.

Cheers,
Ben.


--
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:[~2009-06-12 11:09 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-12  8:13 [PATCH 2/2] slab,slub: ignore __GFP_WAIT if we're booting or suspending Pekka J Enberg
2009-06-12  9:03 ` [PATCH v2] " Pekka J Enberg
2009-06-12  9:10   ` Ingo Molnar
2009-06-12  9:21     ` Benjamin Herrenschmidt
2009-06-12  9:24       ` Pekka Enberg
2009-06-12  9:36         ` Benjamin Herrenschmidt
2009-06-12  9:45           ` Pekka J Enberg
2009-06-12  9:58             ` Benjamin Herrenschmidt
2009-06-12 10:00               ` Pekka Enberg
2009-06-12 15:22             ` Andrew Morton
2009-06-12  9:49     ` Pekka Enberg
2009-06-12  9:52       ` Nick Piggin
2009-06-12  9:54         ` Pekka Enberg
2009-06-12  9:59         ` Benjamin Herrenschmidt
2009-06-25  4:38           ` Nick Piggin
2009-06-12 10:07       ` Ingo Molnar
2009-06-12 10:11         ` Pekka Enberg
2009-06-12 10:15           ` Nick Piggin
2009-06-12 10:30             ` Pekka J Enberg
2009-06-12 10:32               ` Pekka Enberg
2009-06-12 15:16               ` Linus Torvalds
2009-06-12 15:16                 ` Pekka Enberg
2009-06-12 11:13             ` Benjamin Herrenschmidt
2009-06-12 11:24               ` Benjamin Herrenschmidt
2009-06-12 11:11           ` Benjamin Herrenschmidt
2009-06-12 11:34             ` Pekka Enberg
2009-06-12 11:41               ` Benjamin Herrenschmidt
2009-06-12 11:43                 ` Pekka Enberg
2009-06-12 15:30               ` Andrew Morton
2009-06-12 21:42                 ` Benjamin Herrenschmidt
2009-06-25  4:41                 ` Nick Piggin
2009-06-12 11:09         ` Benjamin Herrenschmidt [this message]
2009-06-12 15:04   ` Linus Torvalds
2009-06-12 15:05     ` Pekka Enberg
2009-06-19 14:59   ` Pavel Machek
2009-06-19 22:27     ` Benjamin Herrenschmidt
2009-06-19 23:23       ` Pavel Machek
2009-06-19 23:50         ` Benjamin Herrenschmidt
2009-06-20  0:28           ` Pavel Machek
2009-06-20  2:10             ` Benjamin Herrenschmidt
2009-06-21  6:18               ` Pavel Machek
2009-06-21  9:31                 ` Benjamin Herrenschmidt
2009-06-25  4:34                   ` Nick Piggin
2009-06-25  9:56                     ` Benjamin Herrenschmidt

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=1244804980.7172.124.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@elte.hu \
    --cc=npiggin@suse.de \
    --cc=penberg@cs.helsinki.fi \
    --cc=torvalds@linux-foundation.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 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).