Jeff, Here is half a patch. Adds minimal START STOP UNIT SCSI command functionality to libata (follows sat-r04 apart from the IMMED bit). Tries to implement the TEST UNIT READY SCSI command. Patch against lk 2.6.13-rc4 . There are comments in the code where I was on thin ice. Tested on my ST380013AS Seagate SATA disk on a Sil 3112 HBA. Stop (spin down) seems to work. Starting a disk works (well the disk spins up) but the command is aborted after 3.8 seconds. There doesn't seem to be a mechanism to pass through timeouts from SG_IO (or the SCSI ULDs) into libata. Probably the READ VERIFY is not set up properly. TEST UNIT READY code just doesn't work at all ... the corresponding ATA command (CHECK POWER MODE) sends a return value back in the nsector register of the response. I tried ata_tf_read() but that just made the device inoperable. The TEST UNIT READY implementation needs to be solid since the sd driver issues it when it first sees a disk. If sd receives a NOT READY sense key then it will try to send a START STOP UNIT command to spin up the disk. I notice that when the SATA disk is in standby mode, sending it a normal read command works (i.e. the disk spins up, the read command waits patiently and then does the read). This is different to a SCSI disk that would reject a media access command when in standby mode. Signed-off-by: Douglas Gilbert but not ready for production. Doug Gilbert