Date: Mon, 28 May 2001 18:48:07 -0400 (EDT) From: Robert LaThanh <hybrid@ugrad.cs.jhu.edu> To: freebsd-questions@freebsd.org Subject: Rebooting CPU via Keyboard Controller Message-ID: <Pine.GSO.4.05.10105281846200.28707-100000@barley.cs.jhu.edu>
next in thread | raw e-mail | index | archive | help
I just spent about two days trying to figure out why my system would not reset upon issuing a reboot command. That is, it would hang at "Rebooting...". My system is an HP Brio 7113N, Intel Celeron 300a with 256MB RAM. I tried all kinds of things, changing every setting in my BIOS, removing devices (hard drives, NIC), and even whether different versions of FreeBSD could reboot with different BIOS settings -- I used to be running 4.1 and it could reboot fine, then I just did a fresh install of 4.3 and then it couldn't. Kernel option BROKEN_KEYBOARD_RESET didn't help; the keyboard reset code wasn't causing problems, it just wasn't working. Two days of troubleshooting later, I decided to try the the Linux approach of pulsing the keyboard reset line instead of just tapping it once. In src/sys/i386/i386/vm_machdep.c::cpu_reset_real() instead of hitting 0x64 once and waiting, I have it hit 100 times. Here's the simple change I made and my computer now reboots instead of hanging at "Rebooting...": src/sys/i386/i386/vm_machdep.c 485d484 < int i; 505,509c504,505 < for (i=0; i<100; i++) { /* Pulse the keyboard reset line */ < DELAY(50); < outb(IO_KBD + 4, 0xFE); < DELAY(50); < } --- > outb(IO_KBD + 4, 0xFE); > DELAY(500000); /* wait 0.5 sec to see if that did it */ Is there any reason that this shouldn't be implemented in the FreeBSD kernel, I don't see any potential harm it could cause and it may help at least a few, if not many, people with reset problems. Robert LaThanh To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.05.10105281846200.28707-100000>