All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Lamparter <chunkeey@googlemail.com>
To: David Laight <David.Laight@aculab.com>
Cc: "'Andy Shevchenko'" <andriy.shevchenko@linux.intel.com>,
	"Tejun Heo" <tj@kernel.org>,
	"linux-ide@vger.kernel.org" <linux-ide@vger.kernel.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Måns Rullgård" <mans@mansr.com>,
	"Julian Margetson" <runaway@candw.ms>
Subject: Re: [PATCH v1 08/23] ata: sata_dwc_460ex: don't call ata_sff_qc_issue() on DMA commands
Date: Fri, 22 Apr 2016 13:44:15 +0200	[thread overview]
Message-ID: <1873082.m6E4AZmIX5@debian64> (raw)
In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D5F4A7ECF@AcuExch.aculab.com>

On Friday, April 22, 2016 11:32:00 AM David Laight wrote:
> From: Andy Shevchenko
> > Sent: 21 April 2016 19:15
> > ata_sff_qc_issue() can't handle DMA commands and thus we have to avoid it for
> > them. Do call ata_bmdma_qc_issue() instead for this case.
> > 
> > Suggested-by: Christian Lamparter <chunkeey@googlemail.com>
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  drivers/ata/sata_dwc_460ex.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/ata/sata_dwc_460ex.c b/drivers/ata/sata_dwc_460ex.c
> > index 038e5fb..845c35d 100644
> > --- a/drivers/ata/sata_dwc_460ex.c
> > +++ b/drivers/ata/sata_dwc_460ex.c
> > @@ -1061,10 +1061,12 @@ static unsigned int sata_dwc_qc_issue(struct ata_queued_cmd *qc)
> >  			__func__, tag, qc->ap->link.sactive, sactive);
> > 
> >  		ap->ops->sff_tf_load(ap, &qc->tf);
> > -		sata_dwc_exec_command_by_tag(ap, &qc->tf, qc->tag,
> > +		sata_dwc_exec_command_by_tag(ap, &qc->tf, tag,
> >  					     SATA_DWC_CMD_ISSUED_PEND);
> > +	} else if (ata_is_dma(qc->tf.protocol)) {
> > +		return ata_bmdma_qc_issue(qc);
> >  	} else {
> > -		ata_sff_qc_issue(qc);
> > +		return ata_sff_qc_issue(qc);
> >  	}
> >  	return 0;
> >  }
> 
> I'd nuke those 'else if', they make it very hard to read.
> I Think the code is:
> 
> 		sata_dwc_exec_command_by_tag(...);
> 		return 0;
> 	}
> 
> 	if (ata_is_dma(qc->tf.protocol))
> 		return ata_bmdma_qc_issue(qc);
> 
> 	return ata_sff_qc_issue(qc);
> }

What about something like this instead? ata_bmdma_qc_issue already calls
ata_sff_qc_issue, if it's not a dma transfere anyway [0].
---
diff --git a/drivers/ata/sata_dwc_460ex.c b/drivers/ata/sata_dwc_460ex.c
index 6a61184..67cce54 100644
--- a/drivers/ata/sata_dwc_460ex.c
+++ b/drivers/ata/sata_dwc_460ex.c
@@ -1096,12 +1096,9 @@ static unsigned int sata_dwc_qc_issue(struct ata_queued_cmd *qc)
 		ap->ops->sff_tf_load(ap, &qc->tf);
 		sata_dwc_exec_command_by_tag(ap, &qc->tf, tag,
 					     SATA_DWC_CMD_ISSUED_PEND);
-	} else if (ata_is_dma(qc->tf.protocol)) {
+		return 0;
+	} else
 		return ata_bmdma_qc_issue(qc);
-	} else {
-		return ata_sff_qc_issue(qc);
-	}
-	return 0;
 }
 
 static void sata_dwc_error_handler(struct ata_port *ap)
---

[0] <http://lxr.free-electrons.com/source/drivers/ata/libata-sff.c#L2787>

  reply	other threads:[~2016-04-22 11:44 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-21 18:15 [PATCH v1 00/23] ata: sata_dwc_460ex: make it working again Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 01/23] ata: sata_dwc_460ex: remove incorrect locking Andy Shevchenko
2016-04-21 18:15   ` Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 02/23] ata: sata_dwc_460ex: fix crash on offline links without an attached drive Andy Shevchenko
2016-04-21 18:15   ` Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 03/23] ata: sata_dwc_460ex: set dma_boundary to 0x1fff Andy Shevchenko
2016-04-22 13:13   ` Sergei Shtylyov
2016-04-21 18:15 ` [PATCH v1 04/23] ata: sata_dwc_460ex: burst size must be in items not bytes Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 05/23] ata: sata_dwc_460ex: DMA is always a flow controller Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 06/23] ata: sata_dwc_460ex: select only core part of DMA driver Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 07/23] ata: sata_dwc_460ex: skip dma setup for non-dma commands Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 08/23] ata: sata_dwc_460ex: don't call ata_sff_qc_issue() on DMA commands Andy Shevchenko
2016-04-22 11:32   ` David Laight
2016-04-22 11:32     ` David Laight
2016-04-22 11:44     ` Christian Lamparter [this message]
2016-04-21 18:15 ` [PATCH v1 09/23] ata: sata_dwc_460ex: use "dmas" DT property to find dma channel Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 10/23] ata: sata_dwc_460ex: add phy support Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 11/23] ata: sata_dwc_460ex: get rid of global data Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 12/23] ata: sata_dwc_460ex: correct HOSTDEV{P}_FROM_*() macros Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 13/23] ata: sata_dwc_460ex: remove empty libata callback Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 14/23] ata: sata_dwc_460ex: get rid of some pointless casts Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 15/23] ata: sata_dwc_460ex: get rid of incorrect cast Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 16/23] ata: sata_dwc_460ex: add __iomem to register base pointer Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 17/23] ata: sata_dwc_460ex: supply physical address of FIFO to DMA Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 18/23] ata: sata_dwc_460ex: switch to new dmaengine_terminate_* API Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 19/23] ata: sata_dwc_460ex: use readl/writel_relaxed() Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 20/23] ata: sata_dwc_460ex: tidy up sata_dwc_clear_dmacr() Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 21/23] ata: sata_dwc_460ex: use devm_ioremap Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 22/23] ata: sata_dwc_460ex: make debug messages neat Andy Shevchenko
2016-04-21 18:15 ` [PATCH v1 23/23] powerpc/4xx: Device tree update for the 460ex DWC SATA Andy Shevchenko
2016-04-21 19:59   ` Rob Herring
2016-04-21 20:25 ` [PATCH v1 00/23] ata: sata_dwc_460ex: make it working again Christian Lamparter
2016-04-21 20:25   ` Christian Lamparter
2016-04-22 10:50   ` Julian Margetson
2016-04-22 10:50     ` Julian Margetson
2016-04-22 11:06     ` Christian Lamparter via Linuxppc-dev
2016-04-22 11:06       ` Christian Lamparter
2016-04-22 11:06       ` Christian Lamparter
2016-04-23 12:02       ` Julian Margetson
2016-04-23 15:44         ` Julian Margetson
2016-04-23 19:41           ` Christian Lamparter
2016-04-23 19:41             ` Christian Lamparter
2016-04-24 13:05             ` Julian Margetson
2016-04-24 15:21               ` Christian Lamparter
2016-04-24 17:51                 ` Julian Margetson
2016-04-23 15:44         ` Julian Margetson

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=1873082.m6E4AZmIX5@debian64 \
    --to=chunkeey@googlemail.com \
    --cc=David.Laight@aculab.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mans@mansr.com \
    --cc=robh+dt@kernel.org \
    --cc=runaway@candw.ms \
    --cc=tj@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.