[  Previous  |
Next  |
Contents  |
Home  |
Search  ]
AIX Version 4.3 Kernel and Subsystems Technical Reference, Volume 2
 IDE Adapter Device Driver
Purpose
Supports the Integrated Device Electronics 
(IDE) adapter.
Syntax
#include </usr/include/sys/ide.h>
#include </usr/include/sys/devinfo.h>
Description
The /dev/iden special files 
provide interfaces to allow IDE device drivers to access IDE devices. These 
files manage the adapter resources so that multiple IDE device drivers can 
access devices on the same IDE adapter simultaneously. IDE adapters are accessed 
through the special files /dev/ide0, /dev/ide1, and similarly 
named files.
The /dev/iden special files 
provide interfaces for access to the IDE adapter. The host adapter is an 
initiator for access to devices such as disks, tapes, and CD-ROMs.
Device-Dependent Subroutines
The IDE adapter device driver supports only 
the open, close, and ioctl subroutines. The read and 
write subroutines are not supported.
open and close Subroutines
Note: The IDE Adapter 
device driver's open and close subroutines do not support 
diagnostic open. If such an open is attempted, the subroutine returns a value of 
-1 and the errno global value is set to EINVAL. 
Any kernel process can open the IDE 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 IDE 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 IDE device driver defines specific operations for devices.
The IOCINFO operation is defined for all 
device drivers that use the ioctl subroutine, as follows:
- The operation returns a devinfo 
structure. This structure is defined in the /usr/include/sys/devinfo.h 
file. The device type in this structure is DD_BUS, and the subtype is 
DS_IDE. The flags field is not used and is set to 0.
- The devinfo structure includes unique 
data such as the maximum data transfer size allowed (in bytes). A calling IDE 
device driver uses this information to learn the maximum transfer size allowed 
for a device it controls on the IDE adapter. In this way, the IDE device driver 
can control devices across various IDE adapters, with each device possibly 
having a different maximum transfer size.
IDE ioctl Operations for Adapters 
The operations are IDE adapter device 
driver functions, rather than general device driver facilities. 
The following IDE operations are for adapters:
| IDEIOGTHW | Allows the caller to verify IDE adapter device driver support for 
gathered writes. | 
| IDEIOINQU | Provides the means to issue an inquire command to an ATAPI IDE 
device. | 
| IDEIOIDENT | Provides the means to issue an identify device command to an IDE device. 
An indicator is returned which identifies if the device is an ATA or ATAPI type 
device. | 
| IDEIOREAD | Sends a single block read command to the selected ATA IDE device, 
this is not supported for ATAPI type devices. | 
| IDEIORESET | Allows the caller to force an IDE device to clear all current 
commands and return to an initial state. | 
| IDEIOSTART | Opens a logical path to an IDE target device. | 
| IDEIOSTOP | Closes the logical path to an IDE target device. | 
| IDEIOSTUNIT | Provides the means to issue an IDE Start Unit command to a selected ATAPI 
IDE device. | 
| IDEIOTUR | Sends a Test Unit Ready command to the selected ATAPI IDE device. | 
Summary of IDE Error Conditions
Possible errno values for the adapter 
device driver are:
| EACCES | Indicates that an openx subroutine was attempted while the 
adapter had one or more devices in use. | 
| EBUSY | Indicates that a delete operation was unsuccessful. The adapter is 
still open. | 
| 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 IDEIOSTART operation must be 
executed prior to this command, or an invalid IDE master or slave was passed 
in. | 
| EIO | Indicates that the command has failed due to an error detected on the 
adapter or the IDE 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 an IDE 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 an IDE command has exceeded the time-out value. | 
Reliability and Serviceability Information
Errors detected by the adapter device 
driver may be one of the following:
- Permanent adapter or system hardware 
errors
- Temporary DMA error
- Temporary unknown adapter device driver 
errors
- Temporary error for command timeout
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 IDE adapter device driver is described below. 
Refer to the ataide_rc structure for the actual definition of the detail 
data. The ataide_rc structure is defined in the /usr/include/sys/ide.h file:
| Comment | Indicates ATA/IDE controller reset failure. | 
| Class | Equals a value of H, which indicates a hardware error. | 
| Report | Equals a value of TRUE, which indicates this error should be included 
when an error report is generated. | 
| Log | Equals a value of TRUE, which indicates an error log entry should be 
created when this error occurs. | 
| Alert | Equals a value of FALSE, which indicates this error is not 
alertable. | 
| Err_Type | Equals a value of PERM, which indicates a permanent failure. | 
| Err_Desc | Equals a value of 0xE98A, which indicates an adapter reset 
failure. | 
| Prob_Causes | The following: 0xE901, which indicates a configuration 
error0x3452, which indicates a storage device 
cable0x6310, which indicates a DASD device0xEA01, which indicates an adapter failure
 | 
| Fail_Causes | The following: 0x3400, which indicates a cable loose or 
defective0x3303, which indicates a DASD adapter
 | 
| Fail_Actions | The following: 0x0301, which indicates to check the cables 
and its connections.0x0000, which indicates to perform a problem 
determination procedure.
 | 
| Detail_Data1 | Equals a value of 56, EC35, and HEX | 
The error record template for DMA errors 
detected by the IDE adapter device driver follows:
| Comment | Indicates IDE DMA transfer error. | 
| Class | Equals a value of H, which indicates a hardware error. | 
| Report | Equals a value of TRUE, which indicates this error should be included 
when an error report is generated. | 
| Log | Equals a value of TRUE, which indicates an error-log entry should be 
created when this error occurs. | 
| Alert | Equals a value of FALSE, which indicates this error is not 
alertable. | 
| Err_Type | Equals a value of TEMP, which indicates a temporary failure. | 
| Err_Desc | Equals a value of 0xEB75, which indicates DMA error. | 
| Prob_Causes | The following: 0xE901, which indicates a configuration 
error0x3452, which indicates a storage device 
cable0x6310, which indicates a DASD device0xEA01, which indicates an adapter failure
 | 
| Fail_Causes | The following: 0x3400, which indicates a cable loose or 
defective0x3303, which indicates a DASD adapter
 | 
| Fail_Actions | The following: 0x0301, which indicates to check the cable 
and its connections.0x0000, which indicates to perform 
problem-determination procedure.
 | 
| Detail_Data1 | Equals a value of 56, EC35, HEX | 
Error Record Values for Temporary Unknown IDE 
Device Errors
The error-record template for unknown IDE 
adapter errors detected by the IDE adapter device driver follows:
| Comment | Indicates IDE Device error | 
| Class | Equals a value of H, which indicates a hardware error. | 
| Report | Equals a value of TRUE, which indicates this error should be included 
when an error report is generated. | 
| Log | Equals a value of TRUE, which indicates an error log entry should be 
created when this error occurs. | 
| Alert | Equals a value of FALSE, which indicates this error is not 
alertable. | 
| Err_Type | Equals a value of TEMP, which indicates a temporary failure. | 
| Err_Desc | Equals a value of 0x1002, which indicates device error. | 
| Prob_Causes | The following: 0xE901, which indicates configuration 
error0x3452, which indicates storage device 
cable0x6310, which indicates DASD device0xEA03, which indicates adapter error
 | 
| Fail_Causes | The following: 0x3400, which indicates a cable loose or 
defective0x3303, which indicates DASD adapter
 | 
| Fail_Actions | The following: 0x0301, which indicates to check the cable 
and its connections.0x0000, which indicates to perform 
problem-determination procedure.
 | 
| Detail_Data1 | Equals a value of 56, EC35, HEX. | 
Error Record Values for IDE Command Timeout 
Errors
The error-record template for IDE Command 
Timeout errors detected by the IDE adapter device driver follows:
| Comment | Indicates IDE Interrupt timeout error. | 
| Class | Equals a value of H, which indicates a hardware error. | 
| Report | Equals a value of TRUE, which indicates this error should be included 
when an error report is generated. | 
| Log | Equals a value of TRUE, which indicates an error log entry should be 
created when this error occurs. | 
| Alert | Equals a value of FALSE, which indicates this error is not 
alertable. | 
| Err_Type | Equals a value of TEMP, which indicates a temporary failure. | 
| Err_Desc | Equals a value of 0xE96B, which indicates interrupt timed out. | 
| Prob_Causes | The following: 0xE901, which indicates a configuration 
error0x3452, which indicates a storage device 
cable0x6310, which indicates a DASD device0xEA01, which indicates an adapter failure
 | 
| Fail_Causes | The following: 0x3400, which indicates a cable loose or 
defective0x3303, which indicates DASD adapter
 | 
| Fail_Actions | The following: 0x0301, which indicates to check the cable 
and its connections.0x0000, which indicates to perform 
problem-determination procedures.
 | 
| Detail_Data1 | Equals a value of 56, EC35, HEX. | 
Managing Dumps
The IDE 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 IDE adapter 
device driver.
To be processed, calls to the IDE adapter device 
driver DUMPWRITE option should use the arg parameter as a pointer 
to the ataide_buf structure. Using this interface, a IDE write command 
can be run on a previously started (opened) target device. The uiop parameter is ignored by the IDE adapter device driver. Spanned or 
consolidated commands are not supported using DUMPWRITE.
Note: The various 
ataide_buf status fields, including the b_error field, are not set 
at completion of the DUMPWRITE. Error logging is, of necessity, not 
supported during the dump.
Successful completion of the dddump entry 
point is indicated by a 0. If unsuccessful, the entry point returns one of the 
following:
| EINVAL | Indicates that the adapter device driver was passed as a request that 
was invalid, 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 an I/O error. | 
| ETIMEDOUT | Indicates that the adapter did not respond with status before the 
passed command time-out value expired. | 
Special Files
| /dev/ide0, /dev/ide1,..., 
/dev/iden | Provides an interface to allow IDE device drivers to access IDE devices or 
adapters. | 
Related Information
idedisk IDE device driver or idecdrom IDE device driver.
[  Previous  |
Next  |
Contents  |
Home  |
Search  ]