Supports the SCSI adapter.
<#include /usr/include/sys/scsi.h>
<#include /usr/include/sys/devinfo.h>
The /dev/scsin and /dev/vscsin special files provide interfaces to allow SCSI device drivers to access SCSI devices. These files manage the adapter resources so that multiple SCSI device drivers can access devices on the same SCSI adapter simultaneously. The /dev/vscsin special file provides the interface for the SCSI-2 Fast/Wide Adapter/A and SCSI-2 Differential Fast/Wide Adapter/A, while the /dev/scsin special file provides the interface for the other SCSI adapters. SCSI adapters are accessed through the special files /dev/scsi0, /dev/scsi1, .... and /dev/vscsi0, /dev/vscsi1, ....
The /dev/scsin and /dev/vscsin special files provide interfaces for access for both initiator and target mode device instances. The host adapter is an initiator for access to devices such as disks, tapes, and CD-ROMs. The adapter is a target when accessed from devices such as computer systems, or other devices that can act as SCSI initiators.
The SCSI adapter device driver supports only the open, close, and ioctl subroutines. The read and write subroutines are not supported.
open and close Subroutines
The openx subroutine provides an adapter diagnostic capability. The openx subroutine provides an ext parameter. This parameter selects the adapter mode and accepts the SC_DIAGNOSTIC value. This value is defined in the /usr/include/sys/scsi.h file and places the adapter in Diagnostic mode.
In Diagnostic mode, only the close subroutine and ioctl operations are accepted. All other valid subroutines to the adapter return a value of -1 and set the errno global variable to a value of EACCES. In Diagnostic mode, the SCSI adapter device driver can accept the following requests:
The openx subroutine requires appropriate authority to run. Attempting to run this subroutine without the proper authority causes the subroutine to return a value of -1, and set the errno global variable value to EPERM. Attempting to open a device already opened for normal operation, or when another openx subroutine is in progress, causes the subroutine to return a value of -1, and set the errno global variable to a value of EACCES.
Any kernel process can open the SCSI adapter device driver in Normal mode. For Normal mode the ext parameter is set to 0. However, a non-kernel process must have at least dev_config authority to open the SCSI adapter device driver in Normal mode. Attempting to execute a normal open subroutine without the proper authority causes the subroutine to return a value of -1, and set the errno global variable to a value of EPERM.
ioctl Subroutine
Along with the IOCINFO operation, the SCSI device driver defines specific operations for devices in non-diagnostic and diagnostic mode.
The IOCINFO operation is defined for all device drivers that use the ioctl subroutine, as follows:
SCSI ioctl Operations for Adapters in Non-Diagnostic mode
The non-diagnostic operations are SCSI adapter device driver functions, rather than general device driver facilities. SCSI adapter device driver ioctl operations require that the adapter device driver is not in diagnostic mode. If these operations are attempted while the adapter is in diagnostic mode, a value of -1 is returned and the errno global variable is set to a value of EACCES.
The following SCSI operations are for adapters in non-diagnostic mode:
Operation | Description |
---|---|
SCIODNLD | Provides the means to download microcode to the adapter. The IBM® SCSI-2 Fast/Wide Adapter/A device driver does not support this operation. Microcode download for the Fast/Wide adapter is supported in the standalone diagnostics package only. |
SCIOEVENT | Registers the selected SCSI device instance to receive asynchronous event notification. |
SCIOGTHW | Allows the caller to verify SCSI adapter device driver support for gathered writes. |
SCIOHALT | Aborts the current command (if there is one), clears the queue of any pending commands, and places the device queue in a halted state for a particular device. |
SCIOINQU | Provides the means to issue an inquire command to a SCSI device. |
SCIOREAD | Sends a single block read command to the selected SCSI device. |
SCIORESET | Allows the caller to force a SCSI device to release all current reservations, clear all current commands, and return to an initial state. |
SCIOSTART | Opens a logical path to a SCSI target device. The host SCSI adapter acts as an initiator. |
SCIOSTARTTGT | Opens a logical path to a SCSI initiator device. The host SCSI adapter acts as a target. |
SCIOSTOP | Closes the logical path to a SCSI target device, where the SCSI adapter acts as an initiator. |
SCIOSTOPTGT | Closes the logical path to a SCSI initiator device, where the host SCSI adapter was acting as a target. |
SCIOSTUNIT | Provides the means to issue a SCSI Start Unit command to a selected SCSI device. |
SCIOTUR | Sends a Test Unit Ready command to the selected SCSI device. |
SCSI ioctl Operations for Adapters in Diagnostic Mode
The following operations for the ioctl subroutine are allowed only when the adapter has been successfully opened in Diagnostic mode. If these commands are attempted for an adapter not in Diagnostic mode, a value of -1 is returned and the errno global variable is set to a value of EACCES.
Operation | Description |
---|---|
SCIODIAG | Provides the means to issue adapter diagnostic commands. |
SCIODNLD | Provides the means to download microcode to the adapter. |
SCIOTRAM | Provides the means to issue various adapter commands to test the card DMA interface and buffer RAM. |
To allow these operations to be run on multiple SCSI adapter card interfaces, a special return value is defined. A return value of -1 with an errno value of ENXIO indicates that the requested ioctl subroutine is not applicable to the current adapter card. This return value should not be considered an error for commands that require Diagnostic mode for execution.
Possible errno values for the adapter device driver are:
Value | Description |
---|---|
EACCES | Indicates that an openx subroutine was attempted while the adapter had one or more devices in use. |
EACCES | Indicates that a subroutine other than ioctl or close was attempted while the adapter was in Diagnostic mode. |
EACCES | Indicates that a call to the SCIODIAG command was attempted while the adapter was not in Diagnostic mode. |
EBUSY | Indicates that a delete operation was unsuccessful. The adapter is still open. |
EFAULT | Indicates that the adapter is registering a diagnostic error in response to the SCIODIAG command. The SCIODIAG resume option must be issued to continue processing. |
EFAULT | Indicates that a severe I/O error has occurred during an SCIODNLD command. Discontinue operations to this card. |
EFAULT | Indicates that a copy between kernel and user space failed. |
EINVAL | Indicates an invalid parameter or that the device has not been opened. |
EIO | Indicates an invalid command. A SCIOSTART operation must be executed prior to this command, or an invalid SCSI ID and LUN combination must be passed in. |
EIO | Indicates that the command has failed due to an error detected on the adapter or the SCSI bus. |
EIO | Indicates that the device driver was unable to pin code. |
EIO | Indicates that a kernel service failed, or that an unrecoverable I/O error occurred. |
ENOCONNECT | Indicates that a SCSI bus fault occurred. |
ENODEV | Indicates that the target device cannot be selected or is not responding. |
ENOMEM | Indicates that the command could not be completed due to an insufficient amount of memory. |
ENXIO | Indicates that the requested ioctl is not supported by this adapter. |
EPERM | Indicates that the caller did not have the required authority. |
ETIMEDOUT | Indicates that a SCSI command or adapter command has exceeded the time-out value. |
Errors detected by the adapter device driver may be one of the following:
Permanent errors are either errors that cannot be retried or errors not recovered before a prescribed number of retries has been exhausted. Temporary errors are either noncatastrophic errors that cannot be retried or retriable errors that are successfully recovered before a prescribed number of retries has been exhausted.
Error-Record Values for Permanent Hardware Errors
The error record template for permanent hardware errors detected by the SCSI adapter device driver is described below. Refer to the rc structure for the actual definition of the detail data. The rc structure is defined in the /usr/include/sys/scsi.h file:
Field | Description |
---|---|
Comment | Permanent SCSI adapter hardware error. |
Class | H, indicating a hardware error. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | PERM, indicating a permanent failure. |
Err_Desc | 0x1010, indicating an adapter error. |
Prob_Causes | The following:
|
Fail_Causes | The following:
|
Fail_Actions | The following:
|
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Temporary Hardware Errors
The error record template for temporary hardware errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Temporary SCSI adapter hardware error. |
Class | H, indicating a hardware error. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error-log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | TEMP, indicating a temporary failure. |
Err_Desc | 0x1010, indicating an adapter error. |
Prob_Causes | The following:
|
Fail_Causes | The following:
|
Fail_Actions | The following:
|
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Permanent Unknown Adapter Microcode Errors
The error-record template for permanent unknown SCSI adapter microcode errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Permanent SCSI adapter software error. |
Class | H, indicating a hardware error. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | PERM, indicating a permanent failure. |
Err_Desc | 0x6100, indicating an adapter error. |
Prob_Causes | 0x3331, indicating an adapter microcode. |
Fail_Causes | 0x3300, indicating the adapter. |
Fail_Actions | The following:
|
Detail_Data1 | 108, 11 and HEX |
Error-Record Values for Temporary Unknown Adapter Microcode Errors
The error-record template for temporary unknown SCSI adapter microcode errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Temporary unknown SCSI adapter software error. |
Class | H. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | TEMP, indicating a temporary failure. |
Err_Desc | Equal to 0x6100, indicating a microcode program error. |
Prob_Causes | 3331, indicating adapter microcode. |
Fail_Causes | 3300, indicating the adapter. |
Fail_Actions | The following:
|
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Permanent Unknown Adapter Device Driver Errors
The error-record template for permanent unknown SCSI adapter device driver errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Permanent unknown driver error. |
Class | S. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | PERM, indicating a permanent failure. |
Err_Desc | 0x2100, indicating a software program error. |
Prob_Causes | 0X1000, indicating a software program. |
Fail_Causes | 0X1000, indicating a software program. |
Fail_Actions | 0x3301, indicating that if the problem persists, then (0x3000) contact the appropriate service representatives. |
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Temporary Unknown Adapter Device Driver Errors
The error-record template for temporary unknown SCSI adapter device driver errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Temporary unknown driver error. |
Class | S. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | TEMP, indicating a temporary failure. |
Err_Desc | 0x2100, indicating a software program error. |
Prob_Causes | 0X1000, indicating a software program. |
Fail_Causes | 0X1000, indicating a software program. |
Fail_Actions | 0x3301, indicating that if the problem persists then (0x3000) contact the appropriate service representatives. |
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Permanent Unknown System Errors
The error-record template for permanent unknown system errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Permanent unknown system error. |
Class | H. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | UNKN, indicating an unknown error. |
Err_Desc | 0xFE00, indicating an undetermined error. |
Prob_Causes | 0X1000, indicating a software program. |
Fail_Causes | 0X1000, indicating a software program. |
Fail_Actions | 0x0000 and 0x3301, indicating that problem-determination procedures should be performed; if the problem persists, then (0x3000) contact the appropriate service representatives. |
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Temporary Unknown System Errors
The error-record template for temporary unknown system errors detected by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Temporary unknown system error. |
Class | H. |
Report | TRUE, indicating this error should be included when an error report is generated. |
Log | TRUE, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | UNKN, indicating an unknown error. |
Err_Desc | 0xFE00, indicating an undetermined error. |
Prob_Causes | 0X1000, indicating a software program. |
Fail_Causes | 0X1000, indicating a software program. |
Fail_Actions | 0x0000 and 0x3301, indicating that problem-determination procedures should be performed; if the problem persists, then (0x3000) contact the appropriate service representatives. |
Detail_Data1 | 108, 11, and HEX |
Error-Record Values for Temporary SCSI Bus Errors
The error-record template for temporary SCSI bus errors by the SCSI adapter device driver follows:
Field | Description |
---|---|
Comment | Temporary SCSI bus error. |
Class | H, indicating a hardware error. |
Report | True, indicating an error log entry should be created when this error occurs. |
Alert | FALSE, indicating this error is not alertable. |
Err_Type | TEMP, indicating a termporary failure. |
Err_Desc | 0x942, indicating a SCSI bus error. |
Prob_Causes | The following:
|
Fail_Causes | The following:
|
Fail_Actions | The following:
|
Detail_Data | 108, 11, and HEX. |
The SCSI adapter device driver is a target for the system dump facility. The DUMPINIT and DUMPSTART options to the dddump entry point support multiple or redundant calls.
The DUMPQUERY option returns a minimum transfer size of 0 bytes and a maximum transfer size equal to the maximum transfer size supported by the SCSI adapter device driver.
To be processed, calls to the SCSI adapter device driver DUMPWRITE option should use the arg parameter as a pointer to the sc_buf structure. Using this interface, a SCSI write command can be run on a previously started (opened) target device. The uiop parameter is ignored by the SCSI adapter device driver. Spanned, or consolidated, commands are not supported using DUMPWRITE.
Successful completion of the dddump entry point is indicated by a 0. If unsuccessful, the entry point returns one of the following:
Value | Description |
---|---|
EINVAL | Indicates that the adapter device driver was passed a request that was not valid, such as attempting a DUMPSTART option before successfully executing a DUMPINIT option. |
EIO | Indicates that the adapter device driver was unable to complete the command due to a lack of required resources or due to an I/O error. |
ETIMEDOUT | Indicates that the adapter did not respond with status before the passed command time-out value expired. |
Item | Description |
---|---|
/dev/scsi0, /dev/scsi1,..., /dev/scsin | Provide an interface to allow SCSI device drivers to access SCSI devices or adapters. |
/dev/vscsi0, /dev/vscsi1,..., /dev/vscsin | Provide an interface to allow SCSI-2 Fast/Wide Adapter/A and SCSI-2 Differential Fast/Wide Adapter/A device drivers to access SCSI devices or adapters. |