linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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;
>  }
>  


  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).