On modern SPARC based machines, the onboard OpenFirmware knows how
to program and use various types of Symbios SCSI cards (also known as
LSI Logic SCSI controllers or what used to be called NCR SCSI
controllers). One of the problems encountered when using a third
party card, not supplied by Sun is that the SCSI card will often
(always?) not get reset properly when the machine is rebooted or
power-cycled. Not resetting the PCI SCSI controller can have
reliability consequences if the computer's boot device is located on
the PCI SCSI controller. Specifically, the computer will often failed
to boot, with a message similar to Drive not ready.
Often the only operation truely needed to make the any SCSI problems disappear is to have the computer perform a probe of the PCI SCSI bus.
Most SPARC machines have the capability to execute a user-supplied
program before any booting attempt is made, this is refered to as the
nvramrc. The following nvramrc will print a
message, and then perform the initialization of the PCI scsi
card. The text inside the parentheses are just comments, but
should help describe what is happening.
: probe-scsi-device ( probe a specific SCSI controller )
." Probing " parse-word 2dup type ." :" cr (report what's being probed )
" show-children" execute-device-method drop cr ( perform the probe )
;
." Probing normal devices... " cr cr
probe-all
probe-scsi-device /pci@1f,0/pci@1/pci@1/scsi@f
ttya io
cr banner
." Proceeding with boot... " cr
The ttya io is required for BSD/OS to operate
properly. Without that command, the BSD/OS boot program
(/boot) would give up, because the PROM stdin and stdout
channels were not defined. This command may, or may not, be necessary
for FreeBSD, NetBSD, OpenBSD or Solaris. It probably is required,
as the normal thing that gets done (install-console) to
hook up the console doesn't get done in this nvramrc.
If you are going to do this on a SPARC machine, you might need to
adjust the actual locator for the PCI SCSI controller that you have.
This happens to be correct for a Sun Netra-T1 model 105, but your
computer might be different. You can probably use the
probe-scsi-all command from the PROM monitor to
determine which controllers you have on your computer.
Thanks to Chris Ross for supplying both the idea and the implementation.
Back to the page of Not So Frequently Asked Questions.