Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Jan 1996 13:33:55 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        chx0@mail.opensol.com.ar (CHX0)
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: reboot
Message-ID:  <199601152033.NAA28111@phaeton.artisoft.com>
In-Reply-To: <199601151450.LAA14696@mail.opensol.com.ar> from "CHX0" at Jan 15, 96 11:50:38 am

next in thread | previous in thread | raw e-mail | index | archive | help
> My system running 2.1.0-RELEASE doesn't reboot even after setting
> BROKEN_KEYBOARD_RESET ni the new rebuilt kernel (the whole change
> is that now it doesn't print the message that the keyboard reset
> didn't work). Any clue about this ? Does FreeBSD attempt to do a
> cold or a warm boot ? does it use int 19 h ?

It uses the keboard reset.

If your BIOS is stupid, it relies on the reset code being called in
real mode, and if it's only dumb, it relies on the gate A20 geing
in the default state to address wrap the ROMs.

When this fails on a dumb or stupid BIOS, a triple fault is generated,
which is supposed to cause the CPU reset to strobe.

In a bad motherboard implementation, a triple fault will not cause a
reset, since the strobe is considered a soft rather than a hard reset.


It is possible to put the gate A20 back before doing the reset.  This
will fix approximately 15-20% of the reset problems (ie: 1-2% of all
the machines out there, since most don't have reset problems).

It's very difficult to get back into real mode.  Probably, it wants
VM86 support for triggering the processor back (or more locore.s
support for the same reasons).

On PCI and EISA systems (most new systems have PCI), the problem can
be fixed by using the bus-defined reset mechanism.  This would be
about 65-70% of all systems with reset problem, or 7-8%.

The remaining 10-20% *require* real mode and have no other workarounds.

The general recommendations are:

1)	Implement the A20 fix
2)	Implement (and prefer the use of) PCI/EISA bus based reset
3)	Implement the "return to real mode" reset
4)	Update BIOS that wants the A20 fix
5)	Update motherboards that don't do the triple fault


The first three will guarantee FreeBSD total coverage, the last two
will guarntee you a system that will work correctly with OS's other
than FreeBSD (should you be silly enough to run them 8-)).


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601152033.NAA28111>