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

From: Andi Kleen
Date: Fri Feb 17 2006 - 15:53:34 EST


On Friday 17 February 2006 21:24, Daniel Yeisley wrote:
> 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)))


Actually the patch is broken. Andrew, if you merge it please add the missing { here.

Dan, please only submit patches that are compile tested at least.

-Andi


> 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/