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, 23 Feb 2010 11:38:25 +0900 [thread overview]
Message-ID: <4B833FA1.8030207@kernel.org> (raw)
In-Reply-To: <d2d378041002211328w6355d2f9ued625de53964cee5@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 787 bytes --]
Hello,
On 02/22/2010 06:28 AM, Cengiz Günay wrote:
> On Sat, Feb 20, 2010 at 8:01 PM, Tejun Heo <tj@kernel.org> wrote:
>> Hmmm... So, DRQ gets cleared? That's strange. When then the 18 extra
>> bytes happen? Can you please try this one?
>
> It worked!
>
> $ lsscsi
> ...
> [4:0:0:0] cd/dvd ATAPI iHOS104 WL08 /dev/sr0
> ...
>
> I was able to read a regular DVD in the drive. According to dmesg the
> negotiated speed was down to UDMA/33, so I am not sure about the
> performance of the drive.
Hmmm.... it could be that the drive is sending more data then
requested and the state machine in the controller doesn't like that
and fails to assert IRQ on the host side. You're still getting
timeouts on 96 byte dma inquiries. Can you please this patch?
--
tejun
[-- Attachment #2: swncq-atapi-pio.patch --]
[-- Type: text/x-patch, Size: 1704 bytes --]
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 0c82d33..4ad76f1 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,24 @@ 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 */
+ 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-02-23 2:28 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 [this message]
2010-02-28 17:24 ` Cengiz Günay
2010-03-02 11:48 ` Tejun Heo
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=4B833FA1.8030207@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).