Back in 2.6.17-rc2, a libata module parameter was added for atapi_dmadir.

That's nice, but most SATA devices which need it will tell us about it
in their IDENTIFY PACKET response, as bit-15 of word-62 of the
returned data (as per ATA7, ATA8 specifications).

So for those which specify it, we should automatically use the DMADIR bit.
Otherwise, disc writing will fail by default on many SATA-ATAPI drives.

Signed-off-by: Mark Lord <[EMAIL PROTECTED]>

--- old/drivers/ata/libata-scsi.c       2008-02-18 14:45:08.000000000 -0500
+++ linux/drivers/ata/libata-scsi.c     2008-02-18 14:53:02.000000000 -0500
@@ -2543,9 +2543,10 @@
                qc->tf.protocol = ATAPI_PROT_DMA;
                qc->tf.feature |= ATAPI_PKT_DMA;

-               if (atapi_dmadir && (scmd->sc_data_direction != DMA_TO_DEVICE))
-                       /* some SATA bridges need us to indicate data xfer 
direction */
-                       qc->tf.feature |= ATAPI_DMADIR;
+               /* some SATA bridges need us to indicate data xfer direction */
+               if (atapi_dmadir || (dev->id[62] & 0x8000))
+                       if (scmd->sc_data_direction != DMA_TO_DEVICE)
+                               qc->tf.feature |= ATAPI_DMADIR;
        }


-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to