From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
Jonathan Corbet <corbet@lwn.net>,
Dan Williams <dan.j.williams@intel.com>,
Vinod Koul <vinod.koul@intel.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Alan Stern <stern@rowland.harvard.edu>,
linux-pm@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org,
Lars-Peter Clausen <lars@metafoo.de>,
Michal Simek <michal.simek@xilinx.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Subject: Re: [PATCH v8 3/5] amba: Don't unprepare the clocks if device driver wants IRQ safe runtime PM
Date: Mon, 03 Nov 2014 09:36:45 +0100 [thread overview]
Message-ID: <1415003805.4241.6.camel@AMDC1943> (raw)
In-Reply-To: <20141101010113.GA3831@n2100.arm.linux.org.uk>
On sob, 2014-11-01 at 01:01 +0000, Russell King - ARM Linux wrote:
> On Sat, Nov 01, 2014 at 12:55:14AM +0000, Russell King - ARM Linux wrote:
> > On Sat, Nov 01, 2014 at 01:45:47AM +0100, Rafael J. Wysocki wrote:
> > > On Monday, October 20, 2014 11:04:46 AM Krzysztof Kozlowski wrote:
> > > > @@ -198,8 +217,10 @@ static int amba_probe(struct device *dev)
> > > > pm_runtime_enable(dev);
> > > >
> > > > ret = pcdrv->probe(pcdev, id);
> > > > - if (ret == 0)
> > > > + if (ret == 0) {
> > > > + pcdev->irq_safe = pm_runtime_is_irq_safe(dev);
> > >
> > > This looks racy.
> > >
> > > Is it guaranteed that runtime PM callbacks won't be run for the device
> > > after pcdrv->probe() has returned and before setting pcdev->irq_safe?
> > > If not, inconsistent behavior may ensue.
> >
> > You are absolutely correct. So that knocks that idea on its head.
>
> Actually, I think we shouldn't give up hope here. Currently, we do this:
>
> pm_runtime_get_noresume(dev);
> pm_runtime_set_active(dev);
> pm_runtime_enable(dev);
>
> ret = pcdrv->probe(pcdev, id);
>
> What we could do is:
>
> pm_runtime_get_noresume(dev);
> pm_runtime_get_noresume(dev);
> pm_runtime_set_active(dev);
> pm_runtime_enable(dev);
>
> ret = pcdrv->probe(pcdev, id);
> if (ret == 0) {
> pcdev->irq_safe = pm_runtime_is_irq_safe(dev);
> pm_runtime_put(dev);
> break;
> }
>
> pm_runtime_disable(dev);
> pm_runtime_set_suspended(dev);
> pm_runtime_put_noidle(dev);
> pm_runtime_put_noidle(dev);
>
> which would ensure that we hold a usecount until after the probe function
> has returned. Would that work?
>
> I'll give you that it's pretty horrid.
> Would another possible solution be to remember the irq-safeness in the
> suspend handler, and use that in the resume handler? Resume should
> /always/ undo what the suspend handler previously did wrt clk API stuff.
I think the second solution could be more readable. The WARN_ON wouldn't
be needed. However this won't solve the two dual nature of runtime
callbacks.
I wondered also about removing runtime PM callbacks from amba/bus.c
completely and moving this to child drivers. This way runtime PM would
be obvious in each driver case.
Best regards,
Krzysztof
next prev parent reply other threads:[~2014-11-03 8:36 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-20 9:04 [PATCH v8 0/5] amba/dma: pl330: add Power Management support Krzysztof Kozlowski
2014-10-20 9:04 ` [PATCH v8 1/5] PM / Runtime: Add getter for querying the IRQ safe option Krzysztof Kozlowski
2014-10-31 9:14 ` Krzysztof Kozlowski
2014-10-31 9:29 ` Ulf Hansson
2014-10-31 9:33 ` Russell King - ARM Linux
2014-10-31 9:54 ` Ulf Hansson
2014-10-31 9:33 ` Krzysztof Kozlowski
2014-10-31 14:22 ` Pavel Machek
2014-10-31 14:40 ` Krzysztof Kozlowski
2014-11-01 0:29 ` Laurent Pinchart
2014-11-03 9:36 ` Krzysztof Kozlowski
2014-11-03 16:27 ` Vinod Koul
2014-11-03 16:59 ` Laurent Pinchart
2014-11-05 14:09 ` Vinod Koul
2014-11-03 17:04 ` Russell King - ARM Linux
2014-11-05 14:04 ` Vinod Koul
2014-11-05 14:54 ` Laurent Pinchart
2014-10-31 23:11 ` Rafael J. Wysocki
2014-10-31 23:04 ` Russell King - ARM Linux
2014-11-01 0:42 ` Rafael J. Wysocki
2014-11-03 8:51 ` Krzysztof Kozlowski
2014-10-20 9:04 ` [PATCH v8 2/5] amba: Add helpers for (un)preparing AMBA clock Krzysztof Kozlowski
2014-10-21 8:05 ` Ulf Hansson
2014-10-20 9:04 ` [PATCH v8 3/5] amba: Don't unprepare the clocks if device driver wants IRQ safe runtime PM Krzysztof Kozlowski
2014-11-01 0:45 ` Rafael J. Wysocki
2014-11-01 0:55 ` Russell King - ARM Linux
2014-11-01 1:01 ` Russell King - ARM Linux
2014-11-03 8:36 ` Krzysztof Kozlowski [this message]
2014-11-03 10:04 ` Russell King - ARM Linux
2014-11-03 15:41 ` Alan Stern
2014-11-03 15:41 ` Alan Stern
2014-11-03 15:44 ` Russell King - ARM Linux
2014-11-04 7:59 ` Krzysztof Kozlowski
2014-11-04 1:57 ` Rafael J. Wysocki
2014-11-04 8:01 ` Krzysztof Kozlowski
2014-11-04 9:11 ` Ulf Hansson
2014-11-04 13:59 ` Rafael J. Wysocki
2014-11-04 16:19 ` Ulf Hansson
2014-11-04 16:42 ` Alan Stern
2014-11-03 17:17 ` Kevin Hilman
2014-10-20 9:04 ` [PATCH v8 4/5] dma: pl330: add Power Management support Krzysztof Kozlowski
2014-10-20 9:04 ` [PATCH v8 5/5] amba: Remove unused amba_pclk_enable/disable macros Krzysztof Kozlowski
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=1415003805.4241.6.camel@AMDC1943 \
--to=k.kozlowski@samsung.com \
--cc=b.zolnierkie@samsung.com \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=lars@metafoo.de \
--cc=len.brown@intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=m.szyprowski@samsung.com \
--cc=michal.simek@xilinx.com \
--cc=pavel@ucw.cz \
--cc=rjw@rjwysocki.net \
--cc=stern@rowland.harvard.edu \
--cc=ulf.hansson@linaro.org \
--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.