Linux 2.2.4/SMP/IO-APIC cannot reboot machine : workaround found

Fabien Collin (Fabien.Collin@cern.ch)
Wed, 31 Mar 1999 21:58:27 +0100


Hello,

Recently, I saw several messages on this list from users
reporting they couldn't reboot their SMP machines with kernel 2.2.X.

Someone proposed a patch (which didn't work), others recommended
to upgrade the BIOS.

I have the same problem using a Tyan Thunder 100 with the 440GX
chipset using BIOS 1.16a. Kernel is 2.2.2 and 2.2.4 (sorry I didn't
try 2.2.5 yet, I cannot keep up...). The shutdown procedure goes ok
until you get the 'disabling symmetric IO mode... ...done' msg. Then
the machine is stuck. You have to press reset or the power button to
reboot. Pretty sad...

I tried to upgrade the BIOS to version 1.16b but with no success.

I then looked at the code in io_apic.c and process.c
(under arch/i386/kernel) and finally concluded that this piece of code
in process.c is responsible for the hang :

if(!reboot_thru_bios) {
/* rebooting needs to touch the page at absolute addr 0
*/
*((unsigned short *)__va(0x472)) = reboot_mode;
for (;;) {
int i;
for (i=0; i<100; i++) {
kb_wait();
udelay(50);
outb(0xfe,0x64); /* pulse reset
low */
udelay(50);
}
/* That didn't work - force a triple fault.. */
__asm__ __volatile__("lidt %0": :"m" (no_idt));
__asm__ __volatile__("int3");
}
}

It seems to me that my motherboard doesn't really like to be
rebooted like that using that strange (keyboard ?) IO port. By the way
where is my i8042 databook 8-) ?

To solve the problem, I have added the following line in
lilo.conf : append="reboot=bios"

It solved my problem. In this case, the above piece of code
is not executed and reboot proceeds normally using a more traditionnal
piece of code (see process.c).

Could other people tell me if this really solves this reboot
problem on other motherboards ?

Fabien

----------------------------------------------------------------------
Fabien COLLIN
CERN e-mail : Fabien.Collin@cern.ch
Information Technology Division
Building 31 Office 2-015 Tel : + 41 22 767 9457
1211 Geneva 23 GSM : + 41 79 201 0278
SWITZERLAND Fax : + 41 22 767 9345
----------------------------------------------------------------------

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