Subject: Latest "si" driver (disconnect/reselect works!)
To: None <fair@clock.org>
From: Gordon W. Ross <gwr@mc.com>
List: port-sun3
Date: 11/21/1995 12:06:33
> Date: Tue, 21 Nov 1995 02:53:41 -0800
> From: "Erik E. Fair" (Time Keeper) <fair@clock.org>
>
> I attempted to set si_options = 7, and run that way. This didn't work for
> me with the pair of old SCSI-1 Micropolis drives on my test system; a
> number of things failed in odd ways, and when I tried to run a benchmark
> (the 10MB dd's from the raw devices), the system went catatonic (interrupts
> (ping & tty) answered, but no activity). I'm gonna back off and try again
> with si_options = 3.
I presume this is just a bug with cmd timeout handling, or possibly
some unwanted concurrency somewhere in the driver. We'll nail it
eventually. When the si driver stops, please do the following:
Break into DDB (tty: send "line break", kbd/display: L1-A)
db> call ncr5380_show_state
db> call ncr5380_show_trace
The "show_trace" will produce 1024 lines of output, so you
probably want to skip that unless you use the tty console
and have the session logged with something like xterm.
> Two items:
>
> 1. if the behavior is device dependent, perhaps whether the driver does
> "select/reselect" and other stuff should be in a per-unit flag. Of course,
> this complicates the driver behavior a lot...
Maybe, but it should not be necessary, especially if the cmd timeout
mechanism will (when fixed) resume the unit after reselect is missed.
> 2. being a hacker of the old school, I never did learn any of this symbolic
> debugging stuff, or gdb's twisted behaviors - adb is my tool of choice for
> poking through core dumps, and "printf" is my friend for real time
> debugging. So, given that there is no adb in NetBSD, how can one coerce gdb
> into writing either/both the executable (e.g. /netbsd) and/or the core file
> (e.g. /dev/kmem)? This would be a lot quicker than recompiling ncr_si.c.
> Alas, attempts to RTFM have not yet yielded this morsel of information.
Oh, I should have described how to do this:
Boot the kernel with a PROM command like this:
b sd() -ds
The boot program will stop once, after a message like:
Debug mode - enter c to continue...
Do as it says, then you'll get another stop in DDB.
(Very early in kernel initialization.) Do this:
db> w si_options 7
(or whatever value you feel brave enough to try 8^)
Finally, continue using:
db> cont
Gordon