]> git.neil.brown.name Git - history.git/commitdiff
[SPARC64]: Only allocate cpu structs we really need in topology_init().
authorDavid S. Miller <davem@nuts.ninka.net>
Tue, 19 Aug 2003 05:08:00 +0000 (22:08 -0700)
committerDavid S. Miller <davem@nuts.ninka.net>
Tue, 19 Aug 2003 05:08:00 +0000 (22:08 -0700)
arch/sparc64/kernel/setup.c

index e3bc6bae9a973837db8f6748461e5a4231585587..113be02dfd2c65c1b0f6f0fc6b59ea8f4cf0bc6b 100644 (file)
@@ -678,21 +678,24 @@ void sun_do_break(void)
 int serial_console;
 int stop_a_enabled = 1;
 
-static struct cpu *sparc64_cpus;
-
 static int __init topology_init(void)
 {
-       int i;
+       int i, err;
 
-       sparc64_cpus = kmalloc(NR_CPUS * sizeof(struct cpu), GFP_KERNEL);
-       if (!sparc64_cpus)
-               return -ENOMEM;
-       memset(sparc64_cpus, 0, NR_CPUS * sizeof(struct cpu));
+       err = -ENOMEM;
        for (i = 0; i < NR_CPUS; i++) {
-               if (cpu_possible(i))
-                       register_cpu(&sparc64_cpus[i], i, NULL);
+               if (cpu_possible(i)) {
+                       struct cpu *p = kmalloc(sizeof(*p), GFP_KERNEL);
+
+                       if (p) {
+                               memset(p, 0, sizeof(*p));
+                               register_cpu(p, i, NULL);
+                               err = 0;
+                       }
+               }
        }
-       return 0;
+
+       return err;
 }
 
 subsys_initcall(topology_init);