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;
next prev parent 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).