x86: make generic arch support NUMAQ, fix #2
authorYinghai Lu <yhlu.kernel@gmail.com>
Tue, 10 Jun 2008 01:11:36 +0000 (18:11 -0700)
committerIngo Molnar <mingo@elte.hu>
Tue, 8 Jul 2008 08:36:04 +0000 (10:36 +0200)
we are checking mptable early for numaq, so don't need to reserve_bootmem
for it. bootmem is not there yet.

do the same thing as 64-bit.

found it on 64g above system from 64-bit kernel kexec to 32 bit kernel with
numaq support.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/mpparse.c

index 6ae60909b6019cc01a1be16b18781173fbc2bd57..7ac1b689b70ad23bee24ded01bd2afd081372e15 100644 (file)
@@ -853,9 +853,13 @@ static int __init smp_scan_config(unsigned long base, unsigned long length,
                        smp_found_config = 1;
 #endif
                        mpf_found = mpf;
-#ifdef CONFIG_X86_32
+
                        printk(KERN_INFO "found SMP MP-table at [%p] %08lx\n",
                               mpf, virt_to_phys(mpf));
+
+                       if (!reserve)
+                               return 1;
+#ifdef CONFIG_X86_32
                        reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE,
                                        BOOTMEM_DEFAULT);
                        if (mpf->mpf_physptr) {
@@ -877,9 +881,6 @@ static int __init smp_scan_config(unsigned long base, unsigned long length,
                        }
 
 #else
-                       if (!reserve)
-                               return 1;
-
                        reserve_bootmem_generic(virt_to_phys(mpf), PAGE_SIZE,
                                BOOTMEM_DEFAULT);
                        if (mpf->mpf_physptr)