linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: "Cengiz Günay" <cgunay@emory.edu>
Cc: Robert Hancock <hancockrwd@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-ide@vger.kernel.org" <linux-ide@vger.kernel.org>
Subject: Re: sata_nv times out for BD-ROM iHOS104-08
Date: Tue, 02 Mar 2010 20:48:04 +0900	[thread overview]
Message-ID: <4B8CFAF4.7030303@kernel.org> (raw)
In-Reply-To: <d2d378041002280924q26b4a159g5ad22a3476ec3e18@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 421 bytes --]

Hello,

On 03/01/2010 02:24 AM, Cengiz Günay wrote:
> Before and after the swncq-atapi-pio patch I still get awful read
> times from the BD-ROM drive:
> 
> $ time dd if=/dev/sr0 of=/dev/null bs=64k count=1024
> 67108864 bytes (67 MB) copied, 106.945 seconds, 628 kB/s
> => real	1m46.977s

Hmmm... the drive is timing out even on 4k READ10's.  This shouldn't
really be happening.  Can you please try this one?

-- 
tejun

[-- Attachment #2: swncq-atapi-pio-2.patch --]
[-- Type: text/x-patch, Size: 1742 bytes --]

diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 0c82d33..84d3eba 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -307,6 +307,7 @@ static int nv_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val);
 
 static int nv_hardreset(struct ata_link *link, unsigned int *class,
 			unsigned long deadline);
+static int nv_check_atapi_dma(struct ata_queued_cmd *qc);
 static void nv_nf2_freeze(struct ata_port *ap);
 static void nv_nf2_thaw(struct ata_port *ap);
 static void nv_ck804_freeze(struct ata_port *ap);
@@ -470,6 +471,7 @@ static struct ata_port_operations nv_generic_ops = {
 	.scr_read		= nv_scr_read,
 	.scr_write		= nv_scr_write,
 	.hardreset		= nv_hardreset,
+	.check_atapi_dma	= nv_check_atapi_dma,
 };
 
 static struct ata_port_operations nv_nf2_ops = {
@@ -585,7 +587,7 @@ static const struct ata_port_info nv_port_info[] = {
 	/* SWNCQ */
 	{
 		.flags	        = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
-				  ATA_FLAG_NCQ,
+				  ATA_FLAG_NCQ | ATA_FLAG_PIO_POLLING,
 		.pio_mask	= NV_PIO_MASK,
 		.mwdma_mask	= NV_MWDMA_MASK,
 		.udma_mask	= NV_UDMA_MASK,
@@ -1614,6 +1616,25 @@ static int nv_hardreset(struct ata_link *link, unsigned int *class,
 	return -EAGAIN;
 }
 
+#include <scsi/scsi_cmnd.h>
+static int nv_check_atapi_dma(struct ata_queued_cmd *qc)
+{
+	/* Whitelist commands that may use DMA. */
+	switch (qc->scsicmd->cmnd[0]) {
+	case WRITE_12:
+	case WRITE_10:
+	case WRITE_6:
+	case READ_12:
+	case READ_10:
+	case READ_6:
+	case 0xad: /* READ_DVD_STRUCTURE */
+	case 0xbe: /* READ_CD */
+		if (ata_qc_raw_nbytes(qc) > 4096)
+			return 0;
+	}
+	return 1;
+}
+
 static void nv_nf2_freeze(struct ata_port *ap)
 {
 	void __iomem *scr_addr = ap->host->ports[0]->ioaddr.scr_addr;

  reply	other threads:[~2010-03-02 11:37 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-22 16:07 sata_nv times out for BD-ROM iHOS104-08 Cengiz Gunay
2009-12-23  7:38 ` Tejun Heo
     [not found]   ` <d2d378040912232302u4b550dap687fcadced237935@mail.gmail.com>
2009-12-24  7:25     ` Tejun Heo
2010-01-16 21:34       ` Cengiz Günay
2010-01-17 15:28         ` Ozan Çağlayan
2010-01-19  9:05           ` Tejun Heo
2010-01-19  9:34             ` Ozan Çağlayan
2010-01-20  2:13         ` Tejun Heo
2010-01-20  2:59           ` Robert Hancock
2010-01-22 14:11             ` Cengiz Günay
2010-01-23  3:45               ` Tejun Heo
2010-01-23 21:39                 ` Cengiz Günay
     [not found]                   ` <4B67A149.10406@kernel.org>
2010-02-17 16:14                     ` Cengiz Günay
2010-02-18  1:50                       ` Tejun Heo
2010-02-20 19:11                         ` Cengiz Günay
2010-02-21  1:01                           ` Tejun Heo
2010-02-21 21:28                             ` Cengiz Günay
2010-02-23  2:38                               ` Tejun Heo
2010-02-28 17:24                                 ` Cengiz Günay
2010-03-02 11:48                                   ` Tejun Heo [this message]
2010-03-08 19:17                                     ` Cengiz Günay
2010-03-08 23:46                                       ` Robert Hancock
2010-03-09  1:21                                       ` Tejun Heo
2010-03-09  5:18                                         ` Cengiz Günay
2010-05-25 19:34                                           ` Tejun Heo
  -- strict thread matches above, loose matches on Subject: below --
2010-01-17  4:54 Gregory Moyer
2010-01-21  3:15 Gregory Moyer
2010-06-03 17:40 Gregory Moyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B8CFAF4.7030303@kernel.org \
    --to=tj@kernel.org \
    --cc=cgunay@emory.edu \
    --cc=hancockrwd@gmail.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).