libata: use PIO for non-16 byte aligned ATAPI commands
authorTejun Heo <htejun@gmail.com>
Tue, 26 Jun 2007 17:48:43 +0000 (02:48 +0900)
committerJeff Garzik <jeff@garzik.org>
Wed, 27 Jun 2007 06:50:08 +0000 (02:50 -0400)
commitb9a4197e266a40d5d1d16c9fb2a852cf10743afe
tree6ec97e0122aae58944deee21c6619e23d86be64a
parente00f1ff3c8977eff07d0214d2f3478ac947bda0f
libata: use PIO for non-16 byte aligned ATAPI commands

The IDE driver used DMA for ATAPI commands if READ/WRITE command is
multiple of sector size or sg command is multiple of 16 bytes.  For
libata, READ/WRITE sector alignment is guaranteed by the high level
driver (sr), so we only have to worry about the 16 byte alignment.

This patch makes ata_check_atapi_dma() always request PIO for all data
transfer commands which are not multiple of 16 bytes.

The following reports are related to this problem.

http://bugzilla.kernel.org/show_bug.cgi?id=8605 (confirmed)
http://thread.gmane.org/gmane.linux.kernel/476620 (confirmed)
https://bugzilla.novell.com/show_bug.cgi?id=229260 (probably)

Albert first pointed out the difference between IDE and libata.  Kudos
to him.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Albert Lee <albertcc@tw.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-core.c