[patch] i386 need to pass virtual address to smp_read_mpc()

From: Daniel Yeisley
Date: Fri Feb 17 2006 - 15:21:57 EST


I'm seeing a kernel panic on an ES7000-600 when booting in virtual wire
mode. The panic happens because smp_read_mpc() is passed a physical
address, and it should be virtual. I tested the attached patch on the
ES7000-600 and on a 2 cpu Dell box, and saw no problems on either.

Signed-off-by: Dan Yeisley <dan.yeisley@xxxxxxxxxx>
---

diff -Naur -p linux-2.6.16-rc1-git3-7/arch/i386/kernel/mpparse.c linux-2.6.16-rc1-git3-7-a/arch/i386/kernel/mpparse.c
--- linux-2.6.16-rc1-git3-7/arch/i386/kernel/mpparse.c 2006-01-30 18:38:18.000000000 -0500
+++ linux-2.6.16-rc1-git3-7-a/arch/i386/kernel/mpparse.c 2006-02-16 04:51:35.551014272 -0500
@@ -710,7 +710,7 @@ void __init get_smp_config (void)
* Read the physical hardware table. Anything here will
* override the defaults.
*/
- if (!smp_read_mpc((void *)mpf->mpf_physptr)) {
+ if (!smp_read_mpc(phys_to_virt(mpf->mpf_physptr)))
smp_found_config = 0;
printk(KERN_ERR "BIOS bug, MP table errors detected!...\n");
printk(KERN_ERR "... disabling SMP support. (tell your hw vendor)\n");


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/