All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.