From: Tejun Heo <htejun@gmail.com>
To: Robert Hancock <hancockr@shaw.ca>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
ide <linux-ide@vger.kernel.org>, Jeff Garzik <jeff@garzik.org>
Subject: Re: [PATCH] sata_nv: don't use legacy DMA in ADMA mode (v2)
Date: Sat, 24 Nov 2007 14:19:38 +0900 [thread overview]
Message-ID: <4747B46A.5000503@gmail.com> (raw)
In-Reply-To: <4747B3BB.4000708@gmail.com>
Tejun Heo wrote:
> Robert Hancock wrote:
>> We need to run any DMA command with result taskfile requested in ADMA mode
>> when the port is in ADMA mode, otherwise it may try to use the legacy DMA engine
>> in ADMA mode which is not allowed. Enforce this with BUG_ON() since data
>> corruption could potentially result if this happened. Also WARN_ON() if we try
>> and send result taskfile commands while NCQ commands are still active, since the
>> hardware doesn't allow this.
>>
>> Signed-off-by: Robert Hancock <hancockr@shaw.ca>
>>
>> @@ -1425,9 +1427,17 @@
>> + /* We can't handle result taskfile with NCQ commands active, since
>> + retrieving the taskfile switches us out of ADMA mode and would abort
>> + existing commands. */
>> + WARN_ON((qc->flags & ATA_QCFLAG_RESULT_TF) &&
>> + (qc->ap->qc_allocated & ~(1 << qc->tag)));
>
> I owe an apology here. ap->qc_allocated & ~(1 << qc->tag) test isn't
> correct. Sorry. qc deferring happens after qc is allocated so the
> condition can trigger (although it should be rare) even when nothing is
> going wrong, so I guess it should be WARN_ON((qc->flags &
> ATA_QCFLAG_RESULT_TF) && link->sactive).
Or, just make the assumption clear by not allowing NCQ w/ RESULT_TF at all.
if (unlikely(qc->tf.protocol == ATA_PROT_NCQ &&
(qc->flags & ATA_QCFLAG_RESULT_TF)) {
ata_dev_printk(qc->dev, KERN_ERR,
"NCQ w/ RESULT_TF not allowed\n");
return AC_ERR_SYSTEM;
}
Thanks.
--
tejun
prev parent reply other threads:[~2007-11-24 5:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-23 2:05 [PATCH] sata_nv: don't use legacy DMA in ADMA mode (v2) Robert Hancock
2007-11-24 5:16 ` Tejun Heo
2007-11-24 5:19 ` Tejun Heo [this message]
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=4747B46A.5000503@gmail.com \
--to=htejun@gmail.com \
--cc=hancockr@shaw.ca \
--cc=jeff@garzik.org \
--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.