From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Pekka Enberg <penberg@cs.helsinki.fi>
Subject: Re: slab: setup allocators earlier in the boot sequence
Date: Fri, 12 Jun 2009 13:56:49 +1000 [thread overview]
Message-ID: <1244779009.7172.52.camel@pasglop> (raw)
In-Reply-To: <1244770230.7172.4.camel@pasglop>
> This seem to explode in various places on powerpc :-(
Main breakage is that slab now gets used a lot earlier than init_IRQ and
time_init(), but kmalloc() internally hard-enables interrupts when
GFP_WAIT is passed (it should not but that another side effect of the
change, see below). So we have the decrementer (CPU timer) popping and
it crashes on uninitialized data structures in the timer code.
The reason GFP_WAIT is passed comes from various bits of init code we
have using a function we call alloc_maybe_bootmem() which does kmalloc
if initialized and alloc_bootmem() before...
The problem is that we routinely call that with GFP_KERNEL since we used
to know it would default to bootmem before IRQs can be enabled safely,
which is no longer the case.
At this stage, I'm tempted to rip the all off and just use kmalloc
GFP_NOWAIT for now.
But it would be useful to have kmalloc -itself- remove GFP_WAIT when
called to early so that code doesn't have to do something different
depending on when it's called. In fact, we similarily need to remove
__GFP_IO/FS when in suspend/resume sequence...
For example, we have code for allocating IRQ remapping related data
structures that can be called very early at init_IRQ() time, or later if
some driver or bus wants to register a cascaded IRQ controller.
Cheers,
Ben.
next prev parent reply other threads:[~2009-06-12 3:57 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200906111959.n5BJxFj9021205@hera.kernel.org>
2009-06-12 1:29 ` slab: setup allocators earlier in the boot sequence Benjamin Herrenschmidt
2009-06-12 1:30 ` Benjamin Herrenschmidt
2009-06-12 3:56 ` Benjamin Herrenschmidt [this message]
2009-06-12 4:25 ` Benjamin Herrenschmidt
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
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=1244779009.7172.52.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=linux-kernel@vger.kernel.org \
--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