reBoot code: can we detect if there is an AT keyboard controller?

Billy Newsom billy at nlcc.us
Wed Nov 14 12:12:22 PST 2007


AFAIK, the FreeBSD kernel still relies on a 90s codebase for rebooting... It uses the 
keyboard controller reset method to do a warm reboot.

I have had trouble with this method over the years... a Pentium Pro and more recently 
a Mac Pro with no keyboard controller. I have speculated that Mac laptops and blade 
servers would also lack the KBC. If Intel continues their progress of dropping 
deprecated hardware, the KBC could disappear in the next 3 to 5 years.

So could there be some intelligent software code to check the presence of this 
device, and if not present, use the alternate reboot? The ACPI reboot sequence, for 
example, works for FreeBSD 6.2 and later, on my Mac Pro quad Xeon, amd64.

Unfortunately, although the kernel detects the presence of a KBC during boot, it 
doesn't seem that this information gets stored as a global variable for later use. (I 
made this assertion a few times at freebsd-stable.) It seems like the logical course 
is to only reboot the keyboard controller if such a thing exists!!

Looking back at my notes and my previous research, it appears that the code is around 
where you can find the cpu_reset code near...

/* "good night, sweet prince .... <THUNK!>" */

Setting hw.acpi.handle_reboot=1 must bypass that. Could we force the use of this 
tunable when it's obvious that the KBC is missing?

Billy


More information about the freebsd-arch mailing list