All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
To: Jon Hunter <jonathanh@nvidia.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Vinod Koul <vinod.koul@intel.com>
Cc: Laxman Dewangan <ldewangan@nvidia.com>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Alexandre Courbot <gnurou@gmail.com>,
	dmaengine@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [RFC PATCH 1/7] DMA: tegra-apb: Correct runtime-pm usage
Date: Wed, 26 Aug 2015 00:46:46 +0200	[thread overview]
Message-ID: <55DCF056.40004@intel.com> (raw)
In-Reply-To: <55DC375F.1070907@nvidia.com>

On 8/25/2015 11:37 AM, Jon Hunter wrote:
> On 25/08/15 01:04, Rafael J. Wysocki wrote:
>> On Monday, August 24, 2015 07:51:43 PM Vinod Koul wrote:
>>> On Mon, Aug 24, 2015 at 02:22:49PM +0100, Jon Hunter wrote:
>>>> On 24/08/15 10:22, Vinod Koul wrote:
>>>>> On Mon, Aug 24, 2015 at 09:47:13AM +0100, Jon Hunter wrote:
>>>>>> On 23/08/15 15:17, Vinod Koul wrote:
>>>>>>> On Tue, Aug 18, 2015 at 02:49:09PM +0100, Jon Hunter wrote:
>>>>>>>
>>>>>>>> @@ -1543,7 +1531,7 @@ static int tegra_dma_pm_suspend(struct device *dev)
>>>>>>>>   	int ret;
>>>>>>>>   
>>>>>>>>   	/* Enable clock before accessing register */
>>>>>>>> -	ret = tegra_dma_runtime_resume(dev);
>>>>>>>> +	ret = pm_runtime_get_sync(dev);
>>>>>>> why is this required ?
>>>>>> Because the clock could be disabled when this function is called. This
>>>>>> function saves the DMA context so that if the context is lost during
>>>>>> suspend, it can be restored.
>>>>> Have you verified this? Coz my understanding is that when PM does suspend it
>>>>> will esnure you are runtime resume if runtime suspended and then will do
>>>>> suspend.
>>>>> So you do not need to do above
>>>> I see what you are saying. I did some testing with ftrace today to trace
>>>> rpm and suspend/resume calls. If the dma controller is runtime suspended
>>>> and I do not call pm_runtime_get_sync() above then I do not see any
>>>> runtime resume of the dma controller prior to suspend. Now I was hoping
>>>> that this would cause a complete kernel crash but it did not and so the
>>>> DMA clock did not appear to be needed here (at least on the one board I
>>>> tested). However, I would not go as far as to remove this and prefer to
>>>> keep as above.
>>> Okay am adding Rafael here for his recommendations.
>> Well, and what is the question I'm supposed to answer, exactly?
>>
>> I was in Seattle last week, so haven't been following this closely.
>>
>>> I have tested in past and if my driver was runtime suspended we were resumed
>>> prior to being suspended. So I am not sure why you did not see that
>>> behaviour, and if that is right we don't need to force resume here
>> We're adding code for skipping runtime-resume-before-system-suspend, because
>> it is not desirable in general.
>>
>> The rule of thumb is that if you know you need to change the device's settings
>> (eg. because of wakeup being enabled or not) for system suspend and that
>> requires the device to be resumed, resume it.  It can stay suspended
>> otherwise.
> Thanks Rafael.
>
> Vinod, thinking about this some more, I am wondering if it is just
> better to get rid of the suspend/resume callbacks and simply handling
> the state in the runtime suspend/resume callbacks. I think that would be
> safe too, because once the clock has been disabled, then who knows what
> the context state will be.

One caveat here: system suspend may be invoked at any time, so you need 
to ensure that the device is properly suspended when that happens.

I believe you at least need a ->suspend callback for that.

Cheers,
Rafael

  reply	other threads:[~2015-08-25 22:46 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-18 13:49 [RFC PATCH 0/7] DMA: Add support for Tegra210 ADMA Jon Hunter
2015-08-18 13:49 ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 3/7] DMA: tegra-apb: Clean-up and simplify setting up of transfer parameters Jon Hunter
2015-08-18 13:49   ` Jon Hunter
2015-08-18 13:49 ` [RFC PATCH 4/7] DMA: tegra-apb: Add a function table for functions dealing with registers Jon Hunter
2015-08-18 13:49   ` Jon Hunter
     [not found] ` <1439905755-25150-1-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-08-18 13:49   ` [RFC PATCH 1/7] DMA: tegra-apb: Correct runtime-pm usage Jon Hunter
2015-08-18 13:49     ` Jon Hunter
2015-08-23 14:17     ` Vinod Koul
2015-08-24  8:47       ` Jon Hunter
2015-08-24  8:47         ` Jon Hunter
2015-08-24  9:22         ` Vinod Koul
2015-08-24 13:22           ` Jon Hunter
2015-08-24 13:22             ` Jon Hunter
     [not found]             ` <55DB1AA9.7090906-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-08-24 14:21               ` Vinod Koul
2015-08-24 14:21                 ` Vinod Koul
2015-08-25  0:04                 ` Rafael J. Wysocki
     [not found]                   ` <13590312.K3yoQT5YDc-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2015-08-25  9:37                     ` Jon Hunter
2015-08-25  9:37                       ` Jon Hunter
2015-08-25 22:46                       ` Rafael J. Wysocki [this message]
     [not found]                         ` <55DCF056.40004-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-08-28 10:30                           ` Jon Hunter
2015-08-28 10:30                             ` Jon Hunter
2015-08-18 13:49   ` [RFC PATCH 2/7] DMA: tegra-apb: Move code dealing with h/w registers into separate functions Jon Hunter
2015-08-18 13:49     ` Jon Hunter
2015-08-18 13:49   ` [RFC PATCH 5/7] DMA: tegra-apb: Move common code into separate source files Jon Hunter
2015-08-18 13:49     ` Jon Hunter
2015-08-18 13:49   ` [RFC PATCH 6/7] Documentation: DT: Add binding documentation for NVIDIA ADMA Jon Hunter
2015-08-18 13:49     ` Jon Hunter
2015-08-18 13:49   ` [RFC PATCH 7/7] DMA: tegra-adma: Add support for Tegra210 ADMA Jon Hunter
2015-08-18 13:49     ` Jon Hunter
     [not found]     ` <1439905755-25150-8-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-08-23 14:33       ` Vinod Koul
2015-08-23 14:33         ` Vinod Koul
2015-08-24  8:55         ` Jon Hunter
2015-08-24  8:55           ` Jon Hunter
2015-08-24  9:24           ` Vinod Koul

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=55DCF056.40004@intel.com \
    --to=rafael.j.wysocki@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=gnurou@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=ldewangan@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=swarren@wwwdotorg.org \
    --cc=thierry.reding@gmail.com \
    --cc=vinod.koul@intel.com \
    /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.