From: "Andi Kleen" <ak@suse.de>

This fixes the erroneous No mptables found printk on x86_64 mpparse.  We will
only print the message now if no mptables are found after all scans complete.

Signed-off-by: Justin M. Forbes <jmforbes@linuxtx.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/x86_64/kernel/mpparse.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff -puN arch/x86_64/kernel/mpparse.c~x86_64-fix-mptables-printk arch/x86_64/kernel/mpparse.c
--- 25/arch/x86_64/kernel/mpparse.c~x86_64-fix-mptables-printk	2005-01-09 23:01:31.223636392 -0800
+++ 25-akpm/arch/x86_64/kernel/mpparse.c	2005-01-09 23:01:31.228635632 -0800
@@ -576,7 +576,6 @@ static int __init smp_scan_config (unsig
 	extern void __bad_mpf_size(void); 
 	unsigned int *bp = phys_to_virt(base);
 	struct intel_mp_floating *mpf;
-	static int printed __initdata; 
 
 	Dprintk("Scan SMP from %p for %ld bytes.\n", bp,length);
 	if (sizeof(*mpf) != 16)
@@ -600,10 +599,6 @@ static int __init smp_scan_config (unsig
 		bp += 4;
 		length -= 16;
 	}
-	if (!printed) {		
-		printk(KERN_INFO "No mptable found.\n");
-		printed = 1;
-	}
 	return 0;
 }
 
@@ -640,7 +635,11 @@ void __init find_intel_smp (void)
 
 	address = *(unsigned short *)phys_to_virt(0x40E);
 	address <<= 4;
-	smp_scan_config(address, 0x1000);
+	if (smp_scan_config(address, 0x1000))
+		return;
+
+	/* If we have come this far, we did not find an MP table  */
+	 printk(KERN_INFO "No mptable found.\n");
 }
 
 /*
_