On Mon, Dec 11, 2000 at 02:07:50PM -0500, Levi Khatskevitch wrote:
> Hi,
> I see that software reset (like 'reboot') doesn't work with linuxbios. Is it a
> known issue? Can it theoreticaly be fixed?
I found and fixed this problem on my board quite a while back. With some
explanation, it shouldn't be too hard for you guys to figure out something
that works.
First thing you need to do is go and read arch/i386/kernel/process.c,
where the software reset functions live. Look at machine_restart().
There you'll find the linux kernel approach toward rebooting the machine.
It can use the BIOS to reboot the machine, or try to do it itself.
Obviously the BIOS attack won't work, so I suggest you go and check that
your kernel isn't trying to do that.
If it's not trying to use the bios, this is what the kernel does:
do this a bunch of times: outb(0xfe,0x64);
(I have no idea what that does).
otherwise, try and triple-fault the CPU to force a reset.
None of these worked on my board (custom embedded stuff), but all you need
to do is figure out how your board is _supposed_ to be reset, and punch
that code into machine_restart(). In my case, I bang on the reset
register in the southbridge chip:
const unsigned short PIIX4_RESET_REGISTER=0xCF9;
outb_p(2, PIIX4_RESET_REGISTER);
outb_p(6, PIIX4_RESET_REGISTER);
Good luck.
Eric