Hi Jeff, Revised since lowlevel driver might use qc->private_data. qc->upper_private_data added instead. Desc: In the ata_dev_identify() function, ata_chk_status() is used to check whether an error has occurred. However, in some error situation, the device's status register always reads 0x0. (Please see previously attached dmesg for detail.) And the error found by the state machine is not seen by ata_dev_identify(). Changes: - upper_private_data added to ata_queued_cmd - use qc->upper_private_data to carry the drv_stat returned from the state machine. - ata_qc_complete_noop() saves the drv_stat to *(qc->upper_private_data). - ata_dev_identify() use the status returned from ata_qc_complete_noop(), instead of ata_chk_status(). - noisy PIO error printk() changed to DPRINTK() Attached please find the revised patch 1/2 against the libata-dev-2.6 tree for your review. Thanks. Albert Signed-off-by: Albert Lee