diff options
author | Christoph Lameter <clameter@engr.sgi.com> | 2007-05-06 14:48:58 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 12:12:51 -0700 |
commit | 476f35348eb8d2a827765992899fea78b7dcc46f (patch) | |
tree | 81dbace9de3d4ffa3ecc67bffe265134962117bd /mm/page_alloc.c | |
parent | aee16b3cee2746880e40945a9b5bff4f309cfbc4 (diff) | |
download | linux-476f35348eb8d2a827765992899fea78b7dcc46f.tar.gz linux-476f35348eb8d2a827765992899fea78b7dcc46f.tar.bz2 linux-476f35348eb8d2a827765992899fea78b7dcc46f.zip |
Safer nr_node_ids and nr_node_ids determination and initial values
The nr_cpu_ids value is currently only calculated in smp_init. However, it
may be needed before (SLUB needs it on kmem_cache_init!) and other kernel
components may also want to allocate dynamically sized per cpu array before
smp_init. So move the determination of possible cpus into sched_init()
where we already loop over all possible cpus early in boot.
Also initialize both nr_node_ids and nr_cpu_ids with the highest value they
could take. If we have accidental users before these values are determined
then the current valud of 0 may cause too small per cpu and per node arrays
to be allocated. If it is set to the maximum possible then we only waste
some memory for early boot users.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 353ce9039a86..019ceda6a8b6 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -665,7 +665,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, } #if MAX_NUMNODES > 1 -int nr_node_ids __read_mostly; +int nr_node_ids __read_mostly = MAX_NUMNODES; EXPORT_SYMBOL(nr_node_ids); /* |