sata_nv: don't read shadow registers when in ADMA mode
authorRobert Hancock <hancockr@shaw.ca>
Tue, 27 Mar 2007 05:43:36 +0000 (21:43 -0800)
committerJeff Garzik <jeff@garzik.org>
Sat, 28 Apr 2007 18:16:00 +0000 (14:16 -0400)
commitf2fb344beadf79f9d265c3fc60e8399bbf917a4d
tree2f9c3f269329484b60a3d89e2ffb6b60d67dd4a7
parent4dc5200d70a3e81510956c35fbb9fa3c15b440a5
sata_nv: don't read shadow registers when in ADMA mode

Reading from the ATA shadow registers while we are in ADMA mode may cause
undefined behavior.  Don't read the ATA status register when completing
commands for this reason, it shouldn't be needed as the controller will
notify us if the command failed.  Also, don't allow commands with result
taskfile requested to execute in ADMA mode, since that requires accessing
the shadow registers.  We also still need to override tf_read since libata
will read the result taskfile on a command failure, and we need to go into
port register mode before allowing this.

Signed-off-by: Robert Hancock <hancockr@shaw.ca>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/sata_nv.c