akpm@xxxxxxxxxxxxxxxxxxxx wrote:From: Robert Hancock <hancockr@xxxxxxx>
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@xxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---
drivers/ata/sata_nv.c | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
Robert, do you think this should be pushed into #upstream-fixes (2.6.21-rc)?
I lean towards "yes", since it is a needed-by-hardware fix, but I also am interested in testing feedback since it is so late in the 2.6.21-rc game.