From: Nick Piggin <npiggin@suse.de>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
mingo@elte.hu, cl@linux-foundation.org,
akpm@linux-foundation.org
Subject: Re: slab: setup allocators earlier in the boot sequence
Date: Fri, 12 Jun 2009 09:54:27 +0200 [thread overview]
Message-ID: <20090612075427.GA24044@wotan.suse.de> (raw)
In-Reply-To: <1244792745.30512.13.camel@penberg-laptop>
On Fri, Jun 12, 2009 at 10:45:45AM +0300, Pekka Enberg wrote:
> On Fri, 2009-06-12 at 17:34 +1000, Benjamin Herrenschmidt wrote:
> > I really believe this should be a slab internal thing, which is what my
> > patch does to a certain extent. IE. All callers need to care about is
> > KERNEL vs. ATOMIC and in some cases, NOIO or similar for filesystems
> > etc... but I don't think all sorts of kernel subsystems, because they
> > can be called early during boot, need to suddenly use GFP_NOWAIT all the
> > time.
> >
> > That's why I much prefer my approach :-) (In addition to the fact that
> > it provides the basis for also fixing suspend/resume).
>
> Sure, I think we can do what you want with the patch below.
I don't really like adding branches to slab allocator like this.
init code all needs to know what services are available, and
this includes the scheduler if it wants to do anything sleeping
(including sleeping slab allocations).
Core mm code is the last place to put in workarounds for broken
callers...
>
> But I still think we need my patch regardless. The call sites I
> converted are all init code and should be using GFP_NOWAIT. Does it fix
> your boot on powerpc?
>
> Pekka
>
> diff --git a/mm/slab.c b/mm/slab.c
> index 9a90b00..722beb5 100644
> --- a/mm/slab.c
> +++ b/mm/slab.c
> @@ -2791,6 +2791,13 @@ static int cache_grow(struct kmem_cache *cachep,
>
> offset *= cachep->colour_off;
>
> + /*
> + * Lets not wait if we're booting up or suspending even if the user
> + * asks for it.
> + */
> + if (system_state != SYSTEM_RUNNING)
> + local_flags &= ~__GFP_WAIT;
> +
> if (local_flags & __GFP_WAIT)
> local_irq_enable();
>
> diff --git a/mm/slub.c b/mm/slub.c
> index 65ffda5..f9a6bc8 100644
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -1547,6 +1547,13 @@ new_slab:
> goto load_freelist;
> }
>
> + /*
> + * Lets not wait if we're booting up or suspending even if the user
> + * asks for it.
> + */
> + if (system_state != SYSTEM_RUNNING)
> + gfpflags &= ~__GFP_WAIT;
> +
> if (gfpflags & __GFP_WAIT)
> local_irq_enable();
>
>
--
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>
next prev parent reply other threads:[~2009-06-12 7:52 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200906111959.n5BJxFj9021205@hera.kernel.org>
[not found] ` <1244770230.7172.4.camel@pasglop>
[not found] ` <1244779009.7172.52.camel@pasglop>
[not found] ` <1244780756.7172.58.camel@pasglop>
2009-06-12 5:07 ` Benjamin Herrenschmidt
2009-06-12 6:16 ` Pekka J Enberg
2009-06-12 7:34 ` Benjamin Herrenschmidt
2009-06-12 7:39 ` Benjamin Herrenschmidt
2009-06-12 7:47 ` Pekka Enberg
2009-06-12 8:17 ` Pekka Enberg
2009-06-12 8:47 ` Benjamin Herrenschmidt
2009-06-12 7:45 ` Pekka Enberg
2009-06-12 7:54 ` Nick Piggin [this message]
2009-06-12 7:59 ` Pekka Enberg
2009-06-12 8:02 ` Nick Piggin
2009-06-12 8:04 ` Pekka Enberg
2009-06-12 8:20 ` Nick Piggin
2009-06-12 8:44 ` Benjamin Herrenschmidt
2009-06-12 8:49 ` Pekka Enberg
2009-06-12 9:13 ` Nick Piggin
2009-06-12 9:24 ` Benjamin Herrenschmidt
2009-06-12 9:30 ` Nick Piggin
2009-06-12 9:44 ` Benjamin Herrenschmidt
2009-06-12 9:49 ` Nick Piggin
2009-06-12 8:44 ` Benjamin Herrenschmidt
2009-06-12 8:42 ` Benjamin Herrenschmidt
2009-06-12 8:40 ` Benjamin Herrenschmidt
2009-06-12 8:43 ` Pekka Enberg
2009-06-12 8:53 ` Benjamin Herrenschmidt
2009-06-12 9:05 ` Pekka Enberg
2009-06-12 9:14 ` Nick Piggin
2009-06-12 9:07 ` Pekka Enberg
2009-06-12 13:49 ` Christoph Lameter
2009-06-12 13:54 ` Pekka Enberg
2009-06-12 14:02 ` Benjamin Herrenschmidt
2009-06-12 14:04 ` Pekka Enberg
2009-06-12 14:07 ` Christoph Lameter
2009-06-12 14:00 ` Benjamin Herrenschmidt
2009-06-12 13:44 ` Christoph Lameter
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=20090612075427.GA24044@wotan.suse.de \
--to=npiggin@suse.de \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=cl@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@elte.hu \
--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