From: Tejun Heo <htejun@gmail.com>
To: Jeff Garzik <jeff@garzik.org>
Cc: Mikael Pettersson <mikpe@it.uu.se>,
akpm@linux-foundation.org, david@dgreaves.com,
jean.luc.coulon@gmail.com, jgarzik@pobox.com,
michal.k.k.piotrowski@gmail.com, torvalds@linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: [REPOST PATCH] sata_promise: use TF interface for polling NODATA commands
Date: Wed, 6 Jun 2007 19:21:22 +0900 [thread overview]
Message-ID: <20070606102122.GD29122@htj.dyndns.org> (raw)
In-Reply-To: <46665AB5.6040508@gmail.com>
sata_promise uses two different command modes - packet and TF. Packet
mode is intelligent low-overhead mode while TF is the same old
taskfile interface. As with other advanced interface (ahci/sil24),
ATA_TFLAG_POLLING has no effect in packet mode. However, PIO commands
are issued using TF interface in polling mode, so pdc_interrupt()
considers interrupts spurious if ATA_TFLAG_POLLING is set.
This is broken for polling NODATA commands because command is issued
using packet mode but the interrupt handler ignores it due to
ATA_TFLAG_POLLING. Fix pdc_qc_issue_prot() such that ATA/ATAPI NODATA
commands are issued using TF interface if ATA_TFLAG_POLLING is set.
This patch fixes detection failure introduced by polling SETXFERMODE.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
David, please verify this patch. Mikael, does this look okay? Please
push this upstream after David and Mikael's ack.
(This repost is identical to the previous posting but it's now on the
correct thread.)
Thanks.
drivers/ata/sata_promise.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 2b924a6..6dc0b01 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -784,9 +784,12 @@ static unsigned int pdc_qc_issue_prot(struct ata_queued_cmd *qc)
if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
break;
/*FALLTHROUGH*/
+ case ATA_PROT_NODATA:
+ if (qc->tf.flags & ATA_TFLAG_POLLING)
+ break;
+ /*FALLTHROUGH*/
case ATA_PROT_ATAPI_DMA:
case ATA_PROT_DMA:
- case ATA_PROT_NODATA:
pdc_packet_start(qc);
return 0;
@@ -800,7 +803,7 @@ static unsigned int pdc_qc_issue_prot(struct ata_queued_cmd *qc)
static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf)
{
WARN_ON (tf->protocol == ATA_PROT_DMA ||
- tf->protocol == ATA_PROT_NODATA);
+ tf->protocol == ATA_PROT_ATAPI_DMA);
ata_tf_load(ap, tf);
}
@@ -808,7 +811,7 @@ static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf)
static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf)
{
WARN_ON (tf->protocol == ATA_PROT_DMA ||
- tf->protocol == ATA_PROT_NODATA);
+ tf->protocol == ATA_PROT_ATAPI_DMA);
ata_exec_command(ap, tf);
}
next prev parent reply other threads:[~2007-06-06 10:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-05 21:31 Linux 2.6.22-rc4 - sata_promise regression since -rc3 Mikael Pettersson
2007-06-05 21:52 ` Jeff Garzik
2007-06-05 23:37 ` walt
2007-06-06 6:56 ` Tejun Heo
2007-06-06 10:21 ` Tejun Heo [this message]
2007-06-06 15:42 ` [REPOST PATCH] sata_promise: use TF interface for polling NODATA commands walt
2007-06-06 16:05 ` Jeff Garzik
2007-06-06 16:34 ` Alan Cox
2007-06-07 17:20 ` Chuck Ebbert
2007-06-07 17:25 ` Jeff Garzik
2007-06-07 17:30 ` Jeff Garzik
2007-06-07 15:17 ` Jeff Garzik
2007-06-07 15:45 ` Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2007-06-06 11:11 Mikael Pettersson
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=20070606102122.GD29122@htj.dyndns.org \
--to=htejun@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=david@dgreaves.com \
--cc=jean.luc.coulon@gmail.com \
--cc=jeff@garzik.org \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.k.k.piotrowski@gmail.com \
--cc=mikpe@it.uu.se \
--cc=torvalds@linux-foundation.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