Re: [2.4][2.5][Trivial Patch] Bug in i386/kernel/process.c?

Disconnect (lkml@sigkill.net)
04 Jul 2003 12:40:04 -0400


Er, that patch won't apply to 2.5 - the code is the same, but its moved
to reboot.c.

Same change, diff't file/offset.

On Thu, 2003-07-03 at 12:26, Disconnect wrote:
> I was poking into how to force a warm boot (found it easily enough) and
> started reading process.c, where the details live.
>
> We have:
> static int reboot_mode;
> int reboot_thru_bios;
>
> static int __init reboot_setup(char *str)
> {
> ...set reboot_mode/reboot_thru_bios according to reboot=...
> }
> __setup("reboot=", reboot_setup);
>
> Farther down:
> /* Write 0x1234 to absolute memory location 0x472. The BIOS
> reads
> this on booting to tell it to "Bypass memory test (also warm
> boot)". This seems like a fairly standard thing that gets
> set by
> REBOOT.COM programs, and the previous reset routine did this
> too. */
>
> *((unsigned short *)0x472) = reboot_mode;
> (similar code farther down in !reboot_thru_bios)
>
> ....but reboot_mode doesn't seem to be initialized if you don't set it
> via reboot=...? (Same for reboot_thru_bios)
>
> A simple patch to use the defaults (according to the code comments) is
> below; if this is right please push accordingly:
>
> Its against 2.4 but should apply to 2.5 as well.
> --- build-dis5-final/arch/i386/kernel/process.c.orig 2003-07-03 12:15:36.000000000 -0400
> +++ build-dis5-final/arch/i386/kernel/process.c 2003-07-03 12:16:46.000000000 -0400
> @@ -152,8 +152,8 @@
> __setup("idle=", idle_setup);
>
> static long no_idt[2];
> -static int reboot_mode;
> -int reboot_thru_bios;
> +static int reboot_mode = 0x1234;
> +int reboot_thru_bios = 1;
>
> #ifdef CONFIG_SMP
> int reboot_smp = 0;

-- 
Disconnect <lkml@sigkill.net>

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