'\" te .\" Copyright (c) 1995, Sun Microsystems, Inc. .\" All Rights Reserved .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH FAS 7D "Jun 20, 1997" .SH NAME fas \- FAS SCSI Host Bus Adapter Driver .SH SYNOPSIS .LP .nf fas@\fIsbus-slot\fR,0x8800000 .fi .SH DESCRIPTION .sp .LP The \fBfas\fR Host Bus Adapter driver is a \fBSCSA\fR compliant nexus driver that supports the Qlogic FAS366 \fBSCSI\fR chip. .sp .LP The \fBfas\fR driver supports the standard functions provided by the \fBSCSA\fR interface. The driver supports tagged and untagged queuing, wide and fast \fBSCSI,\fR almost unlimited transfer size (using a moving \fBDVMA\fR window approach), and auto request sense; but it does not support linked commands. .SS "Driver Configuration" .sp .LP The \fBfas\fR driver can be configured by defining properties in \fBfas.conf\fR which override the global \fBSCSI\fR settings. Supported properties are: \fBscsi-options\fR, \fBtarget<\fIn\fR>-scsi-options\fR, \fBscsi-reset-delay\fR, \fBscsi-watchdog-tick\fR, \fBscsi-tag-age-limit\fR, \fBscsi-initiator-id\fR. .sp .LP \fBtarget<\fIn\fR>-scsi-options\fR overrides the \fBscsi-options\fR property value for \fBtarget<\fIn\fR>\fR. <\fIn\fR> can vary from decimal \fB0\fR to \fB15\fR. The supported \fBscsi-options\fR are: \fBSCSI_OPTIONS_DR\fR, \fBSCSI_OPTIONS_SYNC\fR, \fBSCSI_OPTIONS_TAG\fR, \fBSCSI_OPTIONS_FAST\fR, and \fBSCSI_OPTIONS_WIDE\fR. .sp .LP After periodic interval \fBscsi-watchdog-tick\fR, the \fBfas\fR driver searches all current and disconnected commands for timeouts. .sp .LP \fBscsi-tag-age-limit\fR is the number of times that the \fBfas\fR driver attempts to allocate a particular tag ID that is currently in use after going through all tag IDs in a circular fashion. After finding the same tag ID in use \fBscsi-tag-age-limit\fR times, no more commands will be submitted to this target until all outstanding commands complete or timeout. .sp .LP Refer to \fBscsi_hba_attach\fR(9F) for details. .SH EXAMPLES .LP \fBExample 1 \fRA sample of fas configuration file .sp .LP Create a file called \fB/kernel/drv/fas.conf\fR and add this line: .sp .LP \fBscsi-options=0x78;\fR .sp .LP This disables tagged queuing, Fast \fBSCSI,\fR and Wide mode for all \fBfas\fR instances. The following example disables an option for one specific \fBfas\fR (refer to \fBdriver.conf\fR(4) for more details): .sp .in +2 .nf name="fas" parent="/iommu@f,e0000000/sbus@f,e0001000" reg=3,0x8800000,0x10,3,0x8810000,0x40 target1-scsi-options=0x58 scsi-options=0x178 scsi-initiator-id=6; .fi .in -2 .sp .LP Note that the default initiator ID in OBP is 7 and that the change to ID 6 will occur at attach time. It may be preferable to change the initiator ID in OBP. .sp .LP The example above sets \fBscsi-options\fR for target 1 to \fB0x58\fR and all other targets on this \fBSCSI\fR bus to \fB0x178\fR. .sp .LP The physical pathname of the parent can be determined using the \fB/devices\fR tree or following the link of the logical device name: .sp .in +2 .nf # ls \fB-l\fR /dev/rdsk/c1t3d0s0 lrwxrwxrwx 1 root other 78 Aug 28 16:05 /dev/rdsk/c1t3d0s0 -> \&.\|.\|/.\|.\|/devices/iommu@f,e0000000\ sbus@f,e0001000/SUNW,fas@3,8800000/sd@3,0:a,raw .fi .in -2 .sp .LP Determine the register property values using the output from \fBprtconf\fR(1M) (with the \fB-v\fR option): .sp .in +2 .nf SUNW,fas, instance #0 \|.\|.\|.\|. Register Specifications: Bus Type=0x3, Address=0x8800000, Size=10 Bus Type=0x3, Address=0x8810000, Size=40 .fi .in -2 .sp .LP \fBscsi-options\fR can also be specified per device type using the device inquiry string. All the devices with the same inquiry string will have the same \fBscsi-options\fR set. This can be used to disable some \fBscsi-options\fR on all the devices of the same type. .sp .in +2 .nf device-type-scsi-options-list= "TOSHIBA XM5701TASUN12XCD", "cd-scsi-options"; cd-scsi-options = 0x0; .fi .in -2 .sp .LP The above entry in \fB/kernel/drv/fas.conf\fR sets the \fBscsi-options\fR for all devices with inquiry string \fBTOSHIBA XM5701TASUN12XCD\fR to \fBcd-scsi-options\fR. To get the inquiry string, run the \fBprobe-scsi\fR or \fBprobe-scsi-all\fR command at the \fBok\fR prompt before booting the system. .sp .LP To set \fBscsi-options\fR more specifically per target: .sp .in +2 .nf target1-scsi-options=0x78; device-type-scsi-options-list = "SEAGATE ST32550W", "seagate-scsi-options" ; seagate-scsi-options = 0x58; scsi-options=0x3f8; .fi .in -2 .sp .LP The above sets \fBscsi-options\fR for target 1 to \fB0x78\fR and for all other targets on this \fBSCSI\fR bus to \fB0x3f8\fR except for one specific disk type which will have \fBscsi-options\fR set to \fB0x58\fR. .sp .LP \fBscsi-options\fR specified per target ID have the highest precedence, followed by \fBscsi-options\fR per device type. Global \fBfas scsi-options\fR (effecting all instances) per bus have the lowest precedence. .sp .LP The system needs to be rebooted before the specified \fBscsi-options\fR take effect. .SS "Driver Capabilities" .sp .LP The target driver needs to set capabilities in the \fBfas\fR driver in order to enable some driver features. The target driver can query and modify these capabilities: \fBsynchronous\fR, \fBtagged-qing\fR, \fBwide-xfer\fR, \fBauto-rqsense\fR, \fBqfull-retries\fR, \fBqfull-retry-interval\fR. All other capabilities can only be queried. .sp .LP By default, \fBtagged-qing\fR, \fBauto-rqsense\fR, and \fBwide-xfer\fR capabilities are disabled, while \fBdisconnect\fR, \fBsynchronous\fR, and \fBuntagged-qing\fR are enabled. These capabilities can only have binary values (\fB0\fR or \fB1\fR). The default value for \fBqfull-retries\fR is \fB10\fR and the default value for \fBqfull-retry-interval\fR is \fB100\fR. The \fBqfull-retries\fR capability is a \fBuchar_t\fR (\fB0\fR to \fB255\fR) while \fBqfull-retry-interval\fR is a \fBushort_t\fR (\fB0\fR to \fB65535\fR). .sp .LP The target driver needs to enable \fBtagged-qing\fR and \fBwide-xfer\fR explicitly. The \fBuntagged-qing\fR capability is always enabled and its value cannot be modified, because \fBfas\fR can queue commands even when \fBtagged-qing\fR is disabled. .sp .LP Whenever there is a conflict between the value of \fBscsi-options\fR and a capability, the value set in \fBscsi-options\fR prevails. Only \fBwhom != 0\fR is supported in the \fBscsi_ifsetcap\fR(9F) call. .sp .LP Refer to \fBscsi_ifsetcap\fR(9F) and \fBscsi_ifgetcap\fR(9F) for details. .SH FILES .sp .ne 2 .na \fB\fB/kernel/drv/fas\fR\fR .ad .RS 24n \fBELF\fR Kernel Module .RE .sp .ne 2 .na \fB\fB/kernel/drv/fas.conf\fR\fR .ad .RS 24n Optional configuration file .RE .SH ATTRIBUTES .sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS box; c | c l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE _ Architecture T{ Limited to Sparc SBus-based systems with FAS366-based SCSI port and SunSWIFT SBus SCSI Host Adapter/Fast Ethernet option. T} .TE .SH SEE ALSO .sp .LP \fBprtconf\fR(1M), \fBdriver.conf\fR(4), \fBattributes\fR(5), \fBscsi_abort\fR(9F), \fBscsi_hba_attach\fR(9F), \fBscsi_ifgetcap\fR(9F), \fBscsi_ifsetcap\fR(9F), \fBscsi_reset\fR(9F), \fBscsi_sync_pkt\fR(9F), \fBscsi_transport\fR(9F), \fBscsi_device\fR(9S), \fBscsi_extended_sense\fR(9S), \fBscsi_inquiry\fR(9S), \fBscsi_pkt\fR(9S) .sp .LP \fIWriting Device Drivers\fR .sp .LP \fIANSI Small Computer System Interface-2 (SCSI-2)\fR .sp .LP QLogic Corporation, \fIFAS366 Technical Manuals\fR. .SH DIAGNOSTICS .sp .LP The messages described below are some that may appear on the system console, as well as being logged. .sp .LP The first five messages may be displayed while the \fBfas\fR driver is trying to attach; these messages mean that the \fBfas\fR driver was unable to attach. All of these messages are preceded by "fas%d", where "%d" is the instance number of the \fBfas\fR controller. .sp .ne 2 .na \fBDevice in slave-only slot\fR .ad .sp .6 .RS 4n The SBus device has been placed in a slave-only slot and will not be accessible; move to non-slave-only SBus slot. .RE .sp .ne 2 .na \fBDevice is using a hilevel intr\fR .ad .sp .6 .RS 4n The device was configured with an interrupt level that cannot be used with this \fBfas\fR driver. Check the SBus device. .RE .sp .ne 2 .na \fBCannot alloc dma handle\fR .ad .sp .6 .RS 4n Driver was unable to allocate memory for a DMA controller. .RE .sp .ne 2 .na \fBCannot alloc cmd area\fR .ad .sp .6 .RS 4n Driver was unable to allocate memory for a command address. .RE .sp .ne 2 .na \fBCannot create kmem_cache\fR .ad .sp .6 .RS 4n Driver was unable to allocate memory for internal data structures. .RE .sp .ne 2 .na \fBUnable to map FAS366 registers\fR .ad .sp .6 .RS 4n Driver was unable to map device registers; check for bad hardware. Driver did not attach to device; \fBSCSI\fR devices will be inaccessible. .RE .sp .ne 2 .na \fBCannot add intr\fR .ad .sp .6 .RS 4n Driver could not add its interrupt service routine to the kernel. .RE .sp .ne 2 .na \fBCannot map dma\fR .ad .sp .6 .RS 4n Driver was unable to locate a \fBDMA\fR controller. This is an auto-configuration error. .RE .sp .ne 2 .na \fBCannot bind cmdarea\fR .ad .sp .6 .RS 4n Driver was unable to bind the \fBDMA\fR handle to an address. .RE .sp .ne 2 .na \fBCannot create devctl minor node\fR .ad .sp .6 .RS 4n Driver is unable to create a minor node for the controller. .RE .sp .ne 2 .na \fBCannot attach\fR .ad .sp .6 .RS 4n The driver was unable to attach; usually follows another warning that indicates why attach failed. .RE .sp .ne 2 .na \fBDisabled TQ since disconnects are disabled\fR .ad .sp .6 .RS 4n Tagged queuing was disabled because disconnects were disabled in \fBscsi-options\fR. .RE .sp .ne 2 .na \fBBad clock frequency\fR .ad .sp .6 .RS 4n Check for bad hardware. .RE .sp .ne 2 .na \fBSync of pkt (
) failed\fR .ad .sp .6 .RS 4n Syncing a \fBSCSI\fR packet failed. Refer to \fBscsi_sync_pkt\fR(9F). .RE .sp .ne 2 .na \fBAll tags in use!\fR .ad .sp .6 .RS 4n The driver could not allocate another tag number. The target devices do not properly support tagged queuing. .RE .sp .ne 2 .na \fBGross error in FAS366 status\fR .ad .sp .6 .RS 4n The driver experienced severe \fBSCSI\fR bus problems. Check cables and terminator. .RE .sp .ne 2 .na \fBSpurious interrupt\fR .ad .sp .6 .RS 4n The driver received an interrupt while the hardware was not interrupting. .RE .sp .ne 2 .na \fBLost state in phasemanage\fR .ad .sp .6 .RS 4n The driver is confused about the state of the \fBSCSI\fR bus. .RE .sp .ne 2 .na \fBUnrecoverable DMA \fBerror\fR \fBduring selection\fR\fR .ad .sp .6 .RS 4n The \fBDMA\fR controller experienced host SBus problems. Check for bad hardware. .RE .sp .ne 2 .na \fBBad sequence step () in selection\fR .ad .sp .6 .RS 4n The FAS366 hardware reported a bad sequence step. Check for bad hardware. .RE .sp .ne 2 .na \fBUndetermined selection failure\fR .ad .sp .6 .RS 4n The selection of a target failed unexpectedly. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (bad reselect bytes)\fR .ad .sp .6 .RS 4n A reconnect failed, target sent incorrect number of message bytes. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (bad identify message)\fR .ad .sp .6 .RS 4n A reconnect failed, target didn't send identify message or it got corrupted. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (not in msgin phase)\fR .ad .sp .6 .RS 4n Incorrect \fBSCSI\fR bus phase after reconnection. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (unexpected bus free)\fR .ad .sp .6 .RS 4n Incorrect \fBSCSI\fR bus phase after reconnection. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (timeout on receiving tag msg)\fR .ad .sp .6 .RS 4n A reconnect failed; target failed to send tag bytes. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (botched tag)\fR .ad .sp .6 .RS 4n A reconnect failed; target failed to send tag bytes. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (invalid tag)\fR .ad .sp .6 .RS 4n A reconnect failed; target sent incorrect tag bytes. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (Parity error in reconnect msg's)\fR .ad .sp .6 .RS 4n A reconnect failed; parity error detected. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget : failed reselection (no command)\fR .ad .sp .6 .RS 4n A reconnect failed; target accepted \fBabort\fR or \fBreset\fR, but still tries to reconnect. Check for bad hardware. .RE .sp .ne 2 .na \fBUnexpected bus free\fR .ad .sp .6 .RS 4n Target disconnected from the bus without notice. Check for bad hardware. .RE .sp .ne 2 .na \fBTarget didn't disconnect after sending \fR .ad .sp .6 .RS 4n The target unexpectedly did not disconnect after sending \fB<\fR\fImessage\fR\fB>.\fR .RE .sp .ne 2 .na \fBBad sequence step (0x?) in selection\fR .ad .sp .6 .RS 4n The sequence step register shows an improper value. The target might be misbehaving. .RE .sp .ne 2 .na \fBIllegal dma boundary?\fR .ad .sp .6 .RS 4n An attempt was made to cross a boundary that the driver could not handle. .RE .sp .ne 2 .na \fBUnwanted data xfer direction for Target \fR .ad .sp .6 .RS 4n The target went into an unexpected phase. .RE .sp .ne 2 .na \fBUnrecoverable DMA error on dma \fR .ad .sp .6 .RS 4n There is a \fBDMA\fR error while sending/receiving data. The host \fBDMA\fR controller is experiencing some problems. .RE .sp .ne 2 .na \fBSCSI bus DATA IN phase parity error\fR .ad .sp .6 .RS 4n The driver detected parity errors on the \fBSCSI\fR bus. .RE .sp .ne 2 .na \fBSCSI bus MESSAGE IN phase parity error\fR .ad .sp .6 .RS 4n The driver detected parity errors on the \fBSCSI\fR bus. .RE .sp .ne 2 .na \fBSCSI bus STATUS phase parity \fBerror\fR\fR .ad .sp .6 .RS 4n The driver detected parity errors on the \fBSCSI\fR bus. .RE .sp .ne 2 .na \fBPremature end of extended message\fR .ad .sp .6 .RS 4n An extended \fBSCSI\fR bus message did not complete. Suspect a target firmware problem. .RE .sp .ne 2 .na \fBPremature end of input message\fR .ad .sp .6 .RS 4n A multibyte input message was truncated. Suspect a target firmware problem. .RE .sp .ne 2 .na \fBInput message botch\fR .ad .sp .6 .RS 4n The driver is confused about messages coming from the target. .RE .sp .ne 2 .na \fBExtended message is too long\fR .ad .sp .6 .RS 4n The extended message sent by the target is longer than expected. .RE .sp .ne 2 .na \fB message from Target garbled\fR .ad .sp .6 .RS 4n Target \fB<\fR\fIm\fR\fB>\fR sent message \fB<\fR\fIname\fR\fB>\fR of value \fB<\fR\fIn\fR\fB>\fR which the driver did not understand. .RE .sp .ne 2 .na \fBTarget rejects our message \fR .ad .sp .6 .RS 4n Target \fB<\fR\fIn\fR\fB>\fR rejected a message sent by the driver. .RE .sp .ne 2 .na \fBRejecting message from Target \fR .ad .sp .6 .RS 4n The driver rejected a message received from target \fB<\fR\fIn\fR\fB>.\fR .RE .sp .ne 2 .na \fBCmd transmission \fBerror\fR\fR .ad .sp .6 .RS 4n The driver was unable to send out command bytes. .RE .sp .ne 2 .na \fBTarget refused message resend\fR .ad .sp .6 .RS 4n The target did not accept a message resend. .RE .sp .ne 2 .na \fBMESSAGE OUT phase parity error\fR .ad .sp .6 .RS 4n The driver detected parity errors on the SCSI bus. .RE .sp .ne 2 .na \fBTwo byte message rejected\fR .ad .sp .6 .RS 4n The driver does not accept this two byte message. .RE .sp .ne 2 .na \fBGross error in fas status \fR .ad .sp .6 .RS 4n The \fBfas\fR chip has indicated a gross error like \fBFIFO\fR overflow. .RE .sp .ne 2 .na \fBPolled cmd failed (target busy)\fR .ad .sp .6 .RS 4n A polled command failed because the target did not complete outstanding commands within a reasonable time. .RE .sp .ne 2 .na \fBPolled cmd failed\fR .ad .sp .6 .RS 4n A polled command failed because of timeouts or bus errors. .RE .sp .ne 2 .na \fBAuto request sense failed\fR .ad .sp .6 .RS 4n Driver is unable to get request sense from the target. .RE .sp .ne 2 .na \fBDisconnected command timeout for Target .\fR .ad .sp .6 .RS 4n A timeout occurred while target \fBid\fR/\fIlun\fR was disconnected. This is usually a target firmware problem. For tagged queuing targets, \fB<\fR\fIn\fR\fB>\fR commands were outstanding when the timeout was detected. .RE .sp .ne 2 .na \fBDisconnected tagged cmds () timeout for Target .\fR .ad .sp .6 .RS 4n A timeout occurred while target \fBid\fR/\fIlun\fR was disconnected. This is usually a target firmware problem. For tagged queuing targets, \fB<\fR\fIn\fR\fB>\fR commands were outstanding when the timeout was detected. .RE .sp .ne 2 .na \fBConnected command timeout for Target .\fR .ad .sp .6 .RS 4n This is usually a \fBSCSI\fR bus problem. Check cables and termination. .RE .sp .ne 2 .na \fBTarget . reverting to async. mode\fR .ad .sp .6 .RS 4n A data transfer hang was detected. The driver attempts to eliminate this problem by reducing the data transfer rate. .RE .sp .ne 2 .na \fBTarget . reducing sync. transfer rate\fR .ad .sp .6 .RS 4n A data transfer hang was detected. The driver attempts to eliminate this problem by reducing the data transfer rate. .RE .sp .ne 2 .na \fBReverting to slow SCSI cable mode\fR .ad .sp .6 .RS 4n A data transfer hang was detected. The driver attempts to eliminate this problem by reducing the data transfer rate. .RE .sp .ne 2 .na \fBTarget reducing sync. transfer rate\fR .ad .sp .6 .RS 4n A data transfer hang was detected. The driver attempts to eliminate this problem by reducing the data transfer rate. .RE .sp .ne 2 .na \fBTarget reverting to async. mode\fR .ad .sp .6 .RS 4n A data transfer hang was detected. The driver attempts to eliminate this problem by reducing the data transfer rate. .RE .sp .ne 2 .na \fBTarget disabled wide SCSI mode\fR .ad .sp .6 .RS 4n Due to problems on the \fBSCSI\fR bus, the driver goes into more conservative mode of operation to avoid further problems. .RE .sp .ne 2 .na \fBReset SCSI bus failed\fR .ad .sp .6 .RS 4n An attempt to reset the \fBSCSI\fR bus failed. .RE .sp .ne 2 .na \fBExternal SCSI bus reset\fR .ad .sp .6 .RS 4n Another initiator reset the \fBSCSI\fR bus. .RE .SH WARNINGS .sp .LP The \fBfas\fR hardware (FAS366) supports both Wide and Fast \fBSCSI\fR mode, but fast20 is not supported. The maximum \fBSCSI\fR bandwidth is 20 MB/sec. Initiator mode block sequence (IBS) is not supported. .SH NOTES .sp .LP The \fBfas\fR driver exports properties indicating per target the negotiated transfer speed (\fBtarget-sync-speed\fR), whether wide bus is supported (\fBtarget-wide\fR), \fBscsi-options\fR for that particular target (\fBtarget-scsi-options\fR), and whether tagged queuing has been enabled (\fBtarget-TQ\fR). The \fBsync-speed\fR property value is the data transfer rate in KB/sec. The \fBtarget-TQ\fR and the \fBtarget-wide\fR property have value \fB1\fR to indicate that the corresponding capability is enabled, or \fB0\fR to indicate that the capability is disabled for that target. Refer to \fBprtconf\fR(1M) (verbose option) for viewing the \fBfas\fR properties. .sp .in +2 .nf SUNW,fas,instance #1 Driver software properties: name length <4> value <0x00000001>. name length <4> value <0x00000000>. name length <4> value <0x00002710>. name length <4> value <0x000003f8>. name length <4> value <0x00000001>. name length <4> value <0x00000001>. name length <4> value <0x30040346>. name length <4> value <0x000003f8>. name length <4> value <0x0000000a>. name length <4> value <0x00000002>. name length <4> value <0x00000bb8>. Register Specifications: Bus Type=0x3, Address=0x8800000, Size=10 Bus Type=0x3, Address=0x8810000, Size=40 Interrupt Specifications: Interrupt Priority=0x35 (ipl 5) .fi .in -2