summaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorTejun Heo2008-04-02 10:35:19 +0200
committerJeff Garzik2008-04-04 08:43:36 +0200
commite52dcc4899cf1b7601379c31542bd91cd2997a64 (patch)
tree40bce50f8f912bbd2d988526f3f5c5763f67af62 /drivers/ata/libata-core.c
parentlibata: uninline atapi_cmd_type() (diff)
downloadkernel-qcow2-linux-e52dcc4899cf1b7601379c31542bd91cd2997a64.tar.gz
kernel-qcow2-linux-e52dcc4899cf1b7601379c31542bd91cd2997a64.tar.xz
kernel-qcow2-linux-e52dcc4899cf1b7601379c31542bd91cd2997a64.zip
libata: ATA_12/16 doesn't fall into ATAPI_MISC
SAT passthrus don't really fit into ATAPI_MISC class. SAT passthru commands always transfer multiple of 512 bytes and variable length response is not allowed. This patch creates a separate category - ATAPI_PASS_THRU - for these. This fixes HSM violation on "hdparm -I". Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index e9b69ba489d2..be95fdb69726 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -353,6 +353,11 @@ int atapi_cmd_type(u8 opcode)
case GPCMD_READ_CD_MSF:
return ATAPI_READ_CD;
+ case ATA_16:
+ case ATA_12:
+ if (atapi_passthru16)
+ return ATAPI_PASS_THRU;
+ /* fall thru */
default:
return ATAPI_MISC;
}