linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vinod Koul <vinod.koul@intel.com>
To: Hongbo Zhang <hongbo.zhang@freescale.com>
Cc: "Shevchenko, Andriy" <andriy.shevchenko@intel.com>,
	"leo.li@freescale.com" <leo.li@freescale.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"scottwood@freescale.com" <scottwood@freescale.com>,
	"vkoul@infradead.org" <vkoul@infradead.org>,
	"dmaengine@vger.kernel.org" <dmaengine@vger.kernel.org>,
	"Williams, Dan J" <dan.j.williams@intel.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH v4 8/8] DMA: Freescale: add suspend resume functions for DMA driver
Date: Wed, 21 May 2014 09:15:13 +0530	[thread overview]
Message-ID: <20140521034513.GF21128@intel.com> (raw)
In-Reply-To: <536B53E5.30506@freescale.com>

On Thu, May 08, 2014 at 05:52:37PM +0800, Hongbo Zhang wrote:
> 
> On 05/07/2014 04:31 PM, Shevchenko, Andriy wrote:
> >On Sun, 2014-05-04 at 18:22 +0800, Hongbo Zhang wrote:
> >>On 05/03/2014 12:46 AM, Vinod Koul wrote:
> >>>On Fri, Apr 18, 2014 at 04:17:51PM +0800, hongbo.zhang@freescale.com wrote:
> >>>>From: Hongbo Zhang <hongbo.zhang@freescale.com>
> >>>>
> >>>>This patch adds suspend resume functions for Freescale DMA driver.
> >>>>.prepare callback is used to stop further descriptors from being added into the
> >>>>pending queue, and also issue pending queues into execution if there is any.
> >>>>.suspend callback makes sure all the pending jobs are cleaned up and all the
> >>>>channels are idle, and save the mode registers.
> >>>>.resume callback re-initializes the channels by restore the mode registers.
> >>>>
> >>>>+
> >>>>+static const struct dev_pm_ops fsldma_pm_ops = {
> >>>>+	.prepare	= fsldma_prepare,
> >>>>+	.suspend	= fsldma_suspend,
> >>>>+	.resume		= fsldma_resume,
> >>>>+};
> >>>I think this is not correct. We discussed this sometime back on list. The
> >>>DMAengine drivers should use late resume and early suspend to ensure they get
> >>>suspended after clients (who should use normal ones) and resume before them
> >>>
> >>OK, will update it like this:
> >>use .suspend to take place of current .prepare
> >Could you remove this at all?
> >
> >Answering to your previous statements I could say that.
> >Device drivers (DMAc users) that don't implement .suspend callback are
> >on their own with troubles, you have not to care about them in the DMA
> >driver.
> 
> Thanks for pointing out this issue.
> Then how to handle the descriptors in the pending list if there is any?
> a. let them finished.
>     but if the DMA user has already suspended prior DMA controller,
> it is meaningless somehow and may even ask for trouble.
> b. don't touch them.
>     after resume these pending descriptors could be executed, it is
> also meaningless because the resumed DMA user may in different state
> from before being suspended.
> c. delete them.
>     should we do this? is is a bit crude?
> d. return a non-success value
>     then the whole suspend process is reversed, e.g. suspend fails.
> I've looked through some dma drivers, most of them is in case b.
Yes and that makese sense.

In calssic suspend case we maybe in middle so graceful behaviour would be to for
client to PAUSE or terminate and then suspend followed by DMA suspend.
You need to rely on client doing the right thing here

-- 
~Vinod

  reply	other threads:[~2014-05-21  4:00 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-18  8:17 [PATCH v4 0/8] DMA: Freescale: driver cleanups and enhancements hongbo.zhang
2014-04-18  8:17 ` [PATCH v4 1/8] DMA: Freescale: remove the unnecessary FSL_DMA_LD_DEBUG hongbo.zhang
2014-05-02 16:48   ` Vinod Koul
2014-04-18  8:17 ` [PATCH v4 2/8] DMA: Freescale: unify register access methods hongbo.zhang
2014-05-02 16:48   ` Vinod Koul
2014-04-18  8:17 ` [PATCH v4 3/8] DMA: Freescale: remove attribute DMA_INTERRUPT of dmaengine hongbo.zhang
2014-05-02 16:49   ` Vinod Koul
2014-04-18  8:17 ` [PATCH v4 4/8] DMA: Freescale: add fsl_dma_free_descriptor() to reduce code duplication hongbo.zhang
2014-05-02 16:49   ` Vinod Koul
2014-04-18  8:17 ` [PATCH v4 5/8] DMA: Freescale: move functions to avoid forward declarations hongbo.zhang
2014-05-02 16:50   ` Vinod Koul
2014-04-18  8:17 ` [PATCH v4 6/8] DMA: Freescale: change descriptor release process for supporting async_tx hongbo.zhang
2014-05-02 16:50   ` Vinod Koul
2014-05-08 10:03     ` Hongbo Zhang
2014-04-18  8:17 ` [PATCH v4 7/8] DMA: Freescale: use spin_lock_bh instead of spin_lock_irqsave hongbo.zhang
2014-05-02 16:51   ` Vinod Koul
2014-05-04  8:40     ` Hongbo Zhang
2014-04-18  8:17 ` [PATCH v4 8/8] DMA: Freescale: add suspend resume functions for DMA driver hongbo.zhang
2014-05-02 16:46   ` Vinod Koul
2014-05-04 10:22     ` Hongbo Zhang
2014-05-07  8:31       ` Shevchenko, Andriy
2014-05-08  9:52         ` Hongbo Zhang
2014-05-21  3:45           ` Vinod Koul [this message]
2014-05-21  6:42             ` Hongbo Zhang

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=20140521034513.GF21128@intel.com \
    --to=vinod.koul@intel.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=hongbo.zhang@freescale.com \
    --cc=leo.li@freescale.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=scottwood@freescale.com \
    --cc=vkoul@infradead.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).