From: Mark Lord <liml@rtr.ca>
To: Tejun Heo <htejun@gmail.com>
Cc: Artem Bokhan <aptem@ngs.ru>, Jeff Garzik <jeff@garzik.org>,
linux-ide@vger.kernel.org
Subject: Re: [PATCH #upstream-fixes] sata_mv: don't issue two DMA commands concurrently
Date: Wed, 13 Aug 2008 12:10:14 -0400 [thread overview]
Message-ID: <48A30766.9030600@rtr.ca> (raw)
In-Reply-To: <48A2C460.6040504@gmail.com>
Tejun Heo wrote:
> sata_mv allowed issuing two DMA commands concurrently which the
> hardware allows. Unfortunately, libata core layer isn't ready for
> this yet and spews ugly warning message and malfunctions on this.
> Don't allow concurrent DMA commands for now.
>
> Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Mark Lord <mlord@pobox.com>
> ---
> No problem, Artem.
>
> Mark, does this look good to you?
Yeah, looks fine. For some odd reason, I must have been thinking
that libata-{scsi,core} would not even attempt multiple simultaneous non-NCQ.
Silly me!
>
> drivers/ata/sata_mv.c | 34 ++++++++++------------------------
> 1 file changed, 10 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
> index ad169ff..80c655f 100644
> --- a/drivers/ata/sata_mv.c
> +++ b/drivers/ata/sata_mv.c
> @@ -1134,30 +1134,16 @@ static int mv_qc_defer(struct ata_queued_cmd *qc)
> if (ap->nr_active_links == 0)
> return 0;
>
> - if (pp->pp_flags & MV_PP_FLAG_EDMA_EN) {
> - /*
> - * The port is operating in host queuing mode (EDMA).
> - * It can accomodate a new qc if the qc protocol
> - * is compatible with the current host queue mode.
> - */
> - if (pp->pp_flags & MV_PP_FLAG_NCQ_EN) {
> - /*
> - * The host queue (EDMA) is in NCQ mode.
> - * If the new qc is also an NCQ command,
> - * then allow the new qc.
> - */
> - if (qc->tf.protocol == ATA_PROT_NCQ)
> - return 0;
> - } else {
> - /*
> - * The host queue (EDMA) is in non-NCQ, DMA mode.
> - * If the new qc is also a non-NCQ, DMA command,
> - * then allow the new qc.
> - */
> - if (qc->tf.protocol == ATA_PROT_DMA)
> - return 0;
> - }
> - }
> + /*
> + * The port is operating in host queuing mode (EDMA) with NCQ
> + * enabled, allow multiple NCQ commands. EDMA also allows
> + * queueing multiple DMA commands but libata core currently
> + * doesn't allow it.
> + */
> + if ((pp->pp_flags & MV_PP_FLAG_EDMA_EN) &&
> + (pp->pp_flags & MV_PP_FLAG_NCQ_EN) && ata_is_ncq(qc->tf.protocol))
> + return 0;
> +
> return ATA_DEFER_PORT;
> }
>
next prev parent reply other threads:[~2008-08-13 16:10 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-08 10:02 bad sectors, suspicious behaviour Artem Bokhan
2008-08-08 13:34 ` Mark Lord
2008-08-08 13:50 ` Mark Lord
2008-08-08 14:14 ` Mark Lord
2008-08-11 11:12 ` Bokhan Artem
2008-08-13 8:40 ` Tejun Heo
2008-08-13 10:47 ` Artem Bokhan
2008-08-13 10:50 ` Tejun Heo
2008-08-13 11:19 ` Artem Bokhan
2008-08-13 11:24 ` [PATCH #upstream-fixes] sata_mv: don't issue two DMA commands concurrently Tejun Heo
2008-08-13 11:37 ` Artem Bokhan
2008-08-13 11:52 ` Tejun Heo
2008-08-13 12:05 ` Artem Bokhan
2008-08-13 12:21 ` Tejun Heo
2008-08-13 12:32 ` Artem Bokhan
2008-08-13 16:17 ` Mark Lord
2008-08-13 17:37 ` Bokhan Artem
2008-08-13 19:58 ` Bokhan Artem
2008-08-13 23:36 ` Mark Lord
2008-08-14 7:42 ` Artem Bokhan
2008-08-14 12:40 ` Mark Lord
2008-08-14 12:58 ` Artem Bokhan
2008-08-14 13:17 ` Artem Bokhan
2008-08-14 19:49 ` Mark Lord
2008-08-15 5:35 ` Artem Bokhan
2008-08-15 12:27 ` Mark Lord
2008-08-13 16:57 ` Greg Freemyer
2008-08-13 17:29 ` Bokhan Artem
2008-08-13 17:50 ` Greg Freemyer
2008-08-13 18:04 ` Bokhan Artem
2008-08-13 18:13 ` Greg Freemyer
2008-08-13 11:47 ` Artem Bokhan
2008-08-13 11:52 ` Tejun Heo
2008-08-22 16:28 ` Grant Grundler
2008-08-13 16:10 ` Mark Lord [this message]
2008-08-22 6:11 ` Jeff Garzik
2008-08-22 17:01 ` Martin Michlmayr
2008-08-26 13:54 ` Mark Lord
2008-08-29 7:12 ` Martin Michlmayr
2008-08-26 1:24 ` Gwendal Grignou
2008-08-26 7:04 ` Tejun Heo
2008-08-26 13:58 ` Mark Lord
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=48A30766.9030600@rtr.ca \
--to=liml@rtr.ca \
--cc=aptem@ngs.ru \
--cc=htejun@gmail.com \
--cc=jeff@garzik.org \
--cc=linux-ide@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).