Subject: Bug Fix for ft.c - please commit
Date: Mon, 14 Feb 94 10:22:54 CST
This fixes a bug where the system can crash if the tape is used
after the floppy has been used.
a pv chain was being traversed while interrupts were
fully enabled in pmap_remove_all ... this is bogus, and
has been fixed in pmap.c. (sorry for adding the splimp)
Description:
The integer overflow instruction (into) and the interrupt instruction with
value 4 (int #4) both give rise to SIGBUS signals rather than SIGFPE. The
problem is that overflow is a trap not a fault (unlike the BOUND instruction).
When the keyboard is probed, the LED's blink quickly and
"Keyboard reset failed" is printed on the console. The
init routine keeps trying endlessly with the same behavior
as above.
I got the latest -current sup sources (06-Feb-94 12:00 GMT) to work using the
old syscons.c. The following patch makes the new syscons work:
2) Make SNAKE_SAVER like default, if no saver specified in "options"
3) Remove #ifdef STAR_SAVER before line /* make screensaver happy */
this code needed in any case.
Subject: syscons-1.3
Date: Sat, 29 Jan 94 23:33:50 MET
But here is the (hopefully) final syscons-1.3....
....
I've changed sgetc so it works as the pccons parallel
(it now uses a scgetc internally).
[
There were a couple changes that Bruce Evans sent me that were applied
to this version along with some changes that S'ren didn't incorporate
into the final version. There will be only minor changes if anything
from this version to his final release.
]
o merged and fixed timeout code from sos.
o merged DOS partition support from sos.
o fixed "extra" interrupts.
o check if malloc retuns NULL :-(.
o print drive size as in NetBSD
o after an error, return the residual count, not 0.
o give up early for > 16 heads.
o cleaned up the old-drive detection in wdgetctlr().
o rewrote wddump(). I'd been putting this off because
I'd had the dump disabled since 0.0 and had no idea
if even the standard version worked. It didn't:
(0) syscons' sgetc() interface broke some keyboard
stuff.
(1) CADDR1 is mapped using pmap() and pmap got a NULL
pointer trap (at least when I got to wddump() using
call diediedie from ddb) because the pte for CADDR1
is only supposed to be hacked on directly (e.g. in
physcopyseg()).
(2) bad144 handling was not done.
(3) it was slooow (3600 sectors/minute) because my
controller doesn't cache writes.
o miscellaneous other cleanups, e.g., removed scattered
patchkit/terry dates.
o lots of reformatting.
To be done:
o Merge/fix TIH/NetBSD bad144 code (doesn't belong in any
particular driver. Why aren't we using i386/dkbad.c?).
o Merge/fix Dyson/NetBSD clustering code (large parts
should be shared).
o Fix/extend the partition in use bits. Support extended
partitions. This should be shared by all disk drivers. Swap
to a DOS partition so that the swap space can be shared with
linux.
o Don't use polling except for initialization. Need to
reorganise the state machine. Then "extra" interrupts
shouldn't happen (except maybe one for initialization).
o Fix disklabel, boot and driver inconsistencies with
bad144 in standard versions.
o Look at latest linux clustering methods. Our disksort()
gets in the way of clustering.
o cleaned up the ATA changes (needs more work. I think
the ATA specs say that the only thing really wrong with
the original version of wx is that there was no test
for drive-ready before some commands. 400 nsec delay
suffices for almost everything and 400 nsec delay is
usually "free").