diff options
author | Pekka Enberg <penberg@cs.helsinki.fi> | 2009-06-12 07:03:06 -0400 |
---|---|---|
committer | Pekka Enberg <penberg@cs.helsinki.fi> | 2009-06-12 11:53:33 -0400 |
commit | 7e85ee0c1d15ca5f8bff0f514f158eba1742dd87 (patch) | |
tree | 8f9c21f0df6bea88740d7dd48834ac9ffc238e93 /init | |
parent | eb91f1d0a531289e18f5587dc197d12a251c66a3 (diff) |
slab,slub: don't enable interrupts during early boot
As explained by Benjamin Herrenschmidt:
Oh and btw, your patch alone doesn't fix powerpc, because it's missing
a whole bunch of GFP_KERNEL's in the arch code... You would have to
grep the entire kernel for things that check slab_is_available() and
even then you'll be missing some.
For example, slab_is_available() didn't always exist, and so in the
early days on powerpc, we used a mem_init_done global that is set form
mem_init() (not perfect but works in practice). And we still have code
using that to do the test.
Therefore, mask out __GFP_WAIT, __GFP_IO, and __GFP_FS in the slab allocators
in early boot code to avoid enabling interrupts.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'init')
-rw-r--r-- | init/main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c index b3e8f14c568a..f6204f712e7c 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -640,6 +640,7 @@ asmlinkage void __init start_kernel(void) | |||
640 | "enabled early\n"); | 640 | "enabled early\n"); |
641 | early_boot_irqs_on(); | 641 | early_boot_irqs_on(); |
642 | local_irq_enable(); | 642 | local_irq_enable(); |
643 | kmem_cache_init_late(); | ||
643 | 644 | ||
644 | /* | 645 | /* |
645 | * HACK ALERT! This is early. We're enabling the console before | 646 | * HACK ALERT! This is early. We're enabling the console before |