From: Krzysztof Kozlowski <krzk@kernel.org>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
linux-samsung-soc@vger.kernel.org, dmaengine@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Vinod Koul <vinod.koul@intel.com>
Subject: Re: [PATCH] dmaengine: pl330: Fix runtime PM support for terminated transfers
Date: Sat, 24 Dec 2016 13:13:18 +0200 [thread overview]
Message-ID: <20161224111318.GA8343@kozik-lap> (raw)
In-Reply-To: <6b2f2e51-3fac-02d7-5827-b08b97c894c0@samsung.com>
On Fri, Dec 23, 2016 at 10:52:28AM +0100, Marek Szyprowski wrote:
> Hi Krzysztof,
>
>
> On 2016-12-23 03:33, Krzysztof Kozlowski wrote:
> >On Fri, Dec 16, 2016 at 11:39:11AM +0100, Marek Szyprowski wrote:
> >>PL330 DMA engine driver is leaking a runtime reference after any terminated
> >>DMA transactions. This patch fixes this issue by tracking runtime PM state
> >>of the device and making additional call to pm_runtime_put() in terminate_all
> >>callback if needed.
> >>
> >>Fixes: ae43b3289186 ("ARM: 8202/1: dmaengine: pl330: Add runtime Power Management support v12")
> >>Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> >>---
> >> drivers/dma/pl330.c | 11 +++++++++++
> >> 1 file changed, 11 insertions(+)
> >>
> >>diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
> >>index 030fe05ed43b..9f3dbc8c63d2 100644
> >>--- a/drivers/dma/pl330.c
> >>+++ b/drivers/dma/pl330.c
> >>@@ -448,6 +448,9 @@ struct dma_pl330_chan {
> >> /* for cyclic capability */
> >> bool cyclic;
> >>+
> >>+ /* for runtime pm tracking */
> >>+ bool active;
> >> };
> >> struct pl330_dmac {
> >>@@ -2031,6 +2034,7 @@ static void pl330_tasklet(unsigned long data)
> >> _stop(pch->thread);
> >> spin_unlock(&pch->thread->dmac->lock);
> >> power_down = true;
> >>+ pch->active = false;
> >> } else {
> >> /* Make sure the PL330 Channel thread is active */
> >> spin_lock(&pch->thread->dmac->lock);
> >>@@ -2050,6 +2054,7 @@ static void pl330_tasklet(unsigned long data)
> >> desc->status = PREP;
> >> list_move_tail(&desc->node, &pch->work_list);
> >> if (power_down) {
> >>+ pch->active = true;
> >It's been a while since I was playign with the driver so I don't
> >remember everything... but I can't get the logic behind this.
> >
> >The device is marked as inactive and scheduled to power down. But you
> >mark chanel as active.
>
> Please look 3 lines further. The channel is started again (because this
> is cyclic request), so setting active to true is justified. Even power_down
> is then set to false.
Ahhh, damn the missing context. I looked at full source and it makes
sense now.
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Best regards,
Krzysztof
WARNING: multiple messages have this Message-ID (diff)
From: krzk@kernel.org (Krzysztof Kozlowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] dmaengine: pl330: Fix runtime PM support for terminated transfers
Date: Sat, 24 Dec 2016 13:13:18 +0200 [thread overview]
Message-ID: <20161224111318.GA8343@kozik-lap> (raw)
In-Reply-To: <6b2f2e51-3fac-02d7-5827-b08b97c894c0@samsung.com>
On Fri, Dec 23, 2016 at 10:52:28AM +0100, Marek Szyprowski wrote:
> Hi Krzysztof,
>
>
> On 2016-12-23 03:33, Krzysztof Kozlowski wrote:
> >On Fri, Dec 16, 2016 at 11:39:11AM +0100, Marek Szyprowski wrote:
> >>PL330 DMA engine driver is leaking a runtime reference after any terminated
> >>DMA transactions. This patch fixes this issue by tracking runtime PM state
> >>of the device and making additional call to pm_runtime_put() in terminate_all
> >>callback if needed.
> >>
> >>Fixes: ae43b3289186 ("ARM: 8202/1: dmaengine: pl330: Add runtime Power Management support v12")
> >>Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> >>---
> >> drivers/dma/pl330.c | 11 +++++++++++
> >> 1 file changed, 11 insertions(+)
> >>
> >>diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
> >>index 030fe05ed43b..9f3dbc8c63d2 100644
> >>--- a/drivers/dma/pl330.c
> >>+++ b/drivers/dma/pl330.c
> >>@@ -448,6 +448,9 @@ struct dma_pl330_chan {
> >> /* for cyclic capability */
> >> bool cyclic;
> >>+
> >>+ /* for runtime pm tracking */
> >>+ bool active;
> >> };
> >> struct pl330_dmac {
> >>@@ -2031,6 +2034,7 @@ static void pl330_tasklet(unsigned long data)
> >> _stop(pch->thread);
> >> spin_unlock(&pch->thread->dmac->lock);
> >> power_down = true;
> >>+ pch->active = false;
> >> } else {
> >> /* Make sure the PL330 Channel thread is active */
> >> spin_lock(&pch->thread->dmac->lock);
> >>@@ -2050,6 +2054,7 @@ static void pl330_tasklet(unsigned long data)
> >> desc->status = PREP;
> >> list_move_tail(&desc->node, &pch->work_list);
> >> if (power_down) {
> >>+ pch->active = true;
> >It's been a while since I was playign with the driver so I don't
> >remember everything... but I can't get the logic behind this.
> >
> >The device is marked as inactive and scheduled to power down. But you
> >mark chanel as active.
>
> Please look 3 lines further. The channel is started again (because this
> is cyclic request), so setting active to true is justified. Even power_down
> is then set to false.
Ahhh, damn the missing context. I looked at full source and it makes
sense now.
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Best regards,
Krzysztof
next prev parent reply other threads:[~2016-12-24 11:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-16 10:39 [PATCH] dmaengine: pl330: Fix runtime PM support for terminated transfers Marek Szyprowski
2016-12-16 10:39 ` Marek Szyprowski
2016-12-23 2:33 ` Krzysztof Kozlowski
2016-12-23 2:33 ` Krzysztof Kozlowski
2016-12-23 9:52 ` Marek Szyprowski
2016-12-23 9:52 ` Marek Szyprowski
2016-12-24 11:13 ` Krzysztof Kozlowski [this message]
2016-12-24 11:13 ` Krzysztof Kozlowski
2017-01-03 3:49 ` Vinod Koul
2017-01-03 3:49 ` 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=20161224111318.GA8343@kozik-lap \
--to=krzk@kernel.org \
--cc=b.zolnierkie@samsung.com \
--cc=dmaengine@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.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.