Re: PROBLEM: "shutdown -r now" (lilo, win98) (fwd)

Richard B. Johnson (root@chaos.analogic.com)
Tue, 8 Jan 2002 15:51:24 -0500 (EST)


On Tue, 8 Jan 2002, Mike Castle wrote:

> On Tue, Jan 08, 2002 at 08:15:07PM +0000, Alan Cox wrote:
> > Some windows driver is assuming things that the BIOS has not cleared up
> > on reset and whichit probably shouldn't. Its not uncommon to have to
> > powercycle a box between OS's. Sometimes you see it with windows hanging
> > sometimes with Linux
>
> I thought that Linux forced a cold-restart upon a reboot to solve this very
> issue. At least wrt the BIOS.
>
> Perhaps a physical component needs that power cycle to do a reset?
>

You can force a processor-reset in the simplist way, with an Intel
paged executive....

make a module that has open() only. Call it a character device with
some unused major number. Make a 'device', /dev/reboot with that
major number.

Install it. When you want to re-boot, execute cat</dev/reboot
from your scripts after file-systems have been umounted.

The simple code in open() is:

__asm__ __volatile__("movl $0, %%eax\n movl %%eax, %%cr0\n");

Actually, all you have to do is reset the paging-bit when executing
from an area in which there is not a 1:1 correspondence between
physical and virtual (like in the module).

This has worked on every system in which I have found the normal
shut-down code resulted in some strange start-up or a failure to
shut down.

This processor-reset starts execution at 0xffff0000, where the
BIOS ROM exists before it's shadowed, just like power-on.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (797.90 BogoMips).

I was going to compile a list of innovations that could be
attributed to Microsoft. Once I realized that Ctrl-Alt-Del
was handled in the BIOS, I found that there aren't any.

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