rsp@decvax.dec.com (Ricky Palmer - (603)881-0370 - ZK3-3/T74) (02/03/89)
------- There have been several inquiries about SCSI and the DECstation 3100 (PMAX). The usual caveat applies, i.e., only DEC supplied SCSI devices are ever supported or recommended by DEC; however, the SCSI bus on the 3100 is ANSI standard. The Ultrix SCSI driver currently supports only disk and tape (random access and sequential access) SCSI device types, but it will eventually be quite easy to add other kinds of SCSI devices. The devices must adhere to the electrical specifications defined in the ANSI specification and should also support the "common command set" as defined in that document. As Jim Gettys has pointed out you are always on your own and some non-DEC disks/tapes may very well have microcode or design differences that preclude their use on the DECstation 3100. Our own experiences in testing new devices uncovered microcode bugs in several devices we qualified. The bus is single-ended and cannot exceed 6 meters in length. And 6 meters means exactly 6 meters. This includes any cable inside the box plus however much cable is used outside the box. The bus is very sensitive to this length and many problems that wouldn't exist otherwise may crop up if this rule is not followed closely. The 3100 supports both synchronous and asynchronous devices. The bus data rate for synchronous transfers is 4 MB/sec. The SCSI host adapter is a custom DEC gate array and as such is proprietary. You should consult the appropriate person for information on what configurations of disks/tapes are available and recommended by DEC. One recommended SCSI ID ordering is given below but may differ depending on your particular configuration: 7 - reserved 6 - host DECstation 3100 CPU (the boot ROM sets it to 6) 5 - TK50Z TAPE asynch. device only (external sidecar) 4 - RRD40 CDROM asynch. device only (external sidecar) 3 - RZ23 DISK asynch. device only (internal mount only) 2 - RZ23 DISK asynch. device only (internal mount only) 1 - RZ55 DISK synch. device (can run asynch. too)(external) 0 - RZ55 DISK synch. device (can run asynch. too)(external) This list is only valid for this particular combination of devices. Obviously if you decide to put together a 3100 with only external RZ55's you could conceivably have a synchronous RZ55 at ID slots 0, 1, 2, and 3 and no RZ23's. The above example has the recommended ID values for the particular devices used but is by no means all inclusive. The logic above is simply that the slower devices (tape and CDROM) should be closest to the CPU and the fastest devices farthest away from the CPU. There is no requirement as to how many synchronous versus asynchronous devices you can have. If you wish to have all synchronous it will work or all asynchronous will work. The most important criteria for performance of a given SCSI target is how well the target is built. Some of the latest SCSI devices I have seen are quite nice. For those who would like to connect their own devices to the bus the Ultrix driver allows the addition and definition of new devices in the "scsi_data.c" file supplied with every binary or source license, in other words, you don't need anything but your friendly editor and some information on your particular device to add it to the data file, recompile the data file, and reload your kernel. An example disk entry might look like the following (this assumes an entry for the partition table for your device not shown here): #define DEV_MYDISK "MYD100" struct scsi_devtab scsi_devtab[] = { {"MYDISK 100", 10, DEV_MYDISK, SZ_DISK, sz_myd100_sizes, SCSI_TRYSYNC | \ SCSI_STARTUNIT | SCSI_REQSNS | SCSI_TESTUNITREADY | SCSI_READCAPACITY, 0 }, { 0 }, }; where the first field is the vendor returned string identifying the drive, the second field is the length of the string, the third field is the Ultrix name for the device, the fourth field is the class of SCSI device, in this case disk, the fifth is the partition table entry, and the last field is a mask of bits that defines what action(s) the driver probe routines should take upon system boot. All the currently defined fields are: SCSI_TRYSYNC - set the device up as synchronous SCSI_REQSNS - send a REQUEST SENSE SCSI command SCSI_STARTUNIT - send a START/STOP UNIT SCSI command SCSI_TESTUNITREADY - send a TEST UNIT READY SCSI command SCSI_READCAPACITY - send a READ CAPACITY SCSI command SCSI_NODIAG - don't issue SEND DIAGNOSTIC command A sample tape entry along with the disk might be: #define DEV_MYTAPE "MYT100" struct scsi_devtab scsi_devtab[] = { {"MYDISK 100", 10, DEV_MYDISK, SZ_DISK, sz_myd100_sizes, SCSI_TRYSYNC | \ SCSI_STARTUNIT | SCSI_REQSNS | SCSI_TESTUNITREADY | SCSI_READCAPACITY, 0 }, {"MYTAPE 100", 10, DEV_MYTAPE, SZ_TAPE, sz_null, SCSI_NODIAG, 0}, { 0 }, }; The data file that comes with Ultrix has a default case for any disk you happen to try. If it works for a particular disk you have only a 'c' partition initially, but the partition table can be changed once your up and running off your system disk. This is more of a "last resort" attempt to size any random disk that you might try. I hope this answers some of the questions out there. This interface is not laid in stone and could change in future releases as new revisions and changes to the driver occur, but for the initial cut at it with what devices we did support it took us a long way toward supporting disks and tapes easily and effectively. And boy does this little box push the data around fast!!!! --- Ricky Palmer Ultrix Advanced Development --- Digital Equipment Corporation --- Nashua, New Hampshire --- ... One of the fathers of PMAX ...