From: Kevin Hilman <khilman@linaro.org>
To: Mark Brown <broonie@kernel.org>
Cc: ksummit-discuss@lists.linuxfoundation.org
Subject: Re: [Ksummit-discuss] [TECH TOPIC] PM dependencies
Date: Wed, 14 May 2014 14:08:13 -0700 [thread overview]
Message-ID: <7h38gc2hmq.fsf@paris.lan> (raw)
In-Reply-To: <20140512220729.GZ12304@sirena.org.uk> (Mark Brown's message of "Mon, 12 May 2014 23:07:29 +0100")
Mark Brown <broonie@kernel.org> writes:
> On Mon, May 12, 2014 at 11:16:57PM +0200, Tomasz Figa wrote:
>> On 12.05.2014 22:31, Mark Brown wrote:
>
>> > It also solves the system suspend dependencies. Why don't the
>> > runtime PM dependencies just work with reference counting?
>
>> Runtime PM dependencies work with reference counting just fine, but
>> only for topologies matching Linux driver model, e.g. devices with
>> exactly one device they depend on, e.g. SPI controller and SPI devices
>> on the bus driven by it. Add there an IOMMU and other various strange
>> things that should be transparent to the drivers and it stops working.
>
> There's no reason why runtime PM references have to follow the topology
> - you do get a default reference count up to any parent (though we break
> that sometimes, as is the case with SPI controllers being suspended even
> though the devices below them are active) but there's nothing stopping
> references being taken outside the topology.
I'm very interested in this topic as well.
Though, I'm reluctant to see new APIs invented when I think already have
the infrastructure to handle this (though admittedly, I haven't seen all
the use-cases where this is problematic either.)
In my experience with this, it seems to me the root cause here is simply
that there are still lots of drivers/subsytems that are not runtime PM
adapted.
IOW, even if device X has a non-parent/child relationship with device Y,
if both are runtime PM adapted, the simple fact of X *using* Y (or using
the framework hiding Y) will be enough to ensure Y is powered up when
used.
Yes, we could hack up the ability for X to directly refcount Y, but why
should we do that instead of adapdting Y to use runtime PM itself so
that when ever it's requested/used, it's powered up by the runtime PM
infrastructure.
What am I missing ?
>> I'm still investigating this issue, so more uses cases are yet to be
>> found, but I also guess this is the purpose of this thread. Anyway,
>> for some reason .suspend_late() and .resume_early() callbacks exist in
>> dev_pm_ops struct and I believe that at least some of the cases
>> "solved" by them might be related to the issue being discussed here.
>
> Yes, they're partly solving a particular common case for this sort of
> interdependency (though I guess they do also do things like allow us to
> make sure the hardware came back in a state where it won't be harmful
> to the rest of the system if we start enabling things).
IMO, the suspend_late/resume_early callbacks are useful for turning
drivers/subsystems into what I call "runtime PM centric". That means
the driver/subsytem can focus on a runtime PM centric view of the world,
and then implement suspend/resume using the late/early callbacks to call
the same functions as the runtime suspend/resume.
Kevin
next prev parent reply other threads:[~2014-05-14 21:08 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-12 17:43 [Ksummit-discuss] [TECH TOPIC] PM dependencies Laurent Pinchart
2014-05-12 17:51 ` Shuah Khan
2014-05-18 15:42 ` Mauro Carvalho Chehab
2014-05-12 18:09 ` Tomasz Figa
2014-05-12 20:14 ` Mark Brown
2014-05-12 20:27 ` Laurent Pinchart
2014-05-12 20:31 ` Mark Brown
2014-05-12 21:16 ` Tomasz Figa
2014-05-12 22:07 ` Mark Brown
2014-05-13 7:43 ` Daniel Vetter
2014-05-13 10:31 ` Laurent Pinchart
2014-05-13 14:26 ` Shuah Khan
2014-05-15 23:43 ` Laurent Pinchart
2014-05-19 1:00 ` Shuah Khan
2014-05-19 7:30 ` Geert Uytterhoeven
2014-05-13 22:27 ` Rafael J. Wysocki
2014-05-13 22:34 ` Rafael J. Wysocki
2014-05-14 12:59 ` Rafael J. Wysocki
2014-05-15 23:34 ` Laurent Pinchart
2014-05-20 16:57 ` Kevin Hilman
2014-05-20 18:51 ` Mark Brown
2014-05-21 9:26 ` Ulf Hansson
2014-05-21 11:16 ` Geert Uytterhoeven
2014-05-22 0:19 ` Rafael J. Wysocki
2014-05-22 10:14 ` Mark Brown
2014-05-23 23:15 ` Rafael J. Wysocki
2014-05-24 10:53 ` Mark Brown
2014-05-25 12:56 ` Rafael J. Wysocki
2014-05-22 17:35 ` Kevin Hilman
2014-05-23 23:26 ` Rafael J. Wysocki
2014-05-23 0:18 ` Laurent Pinchart
2014-05-23 0:39 ` Kevin Hilman
2014-05-23 8:32 ` Linus Walleij
2014-05-23 15:26 ` Kevin Hilman
2014-05-24 0:13 ` Rafael J. Wysocki
2014-05-24 0:08 ` Rafael J. Wysocki
2014-05-26 14:30 ` Peter De Schrijver
2014-05-23 8:25 ` Linus Walleij
2014-05-23 9:10 ` Ulf Hansson
2014-05-24 0:00 ` Rafael J. Wysocki
2014-05-15 22:45 ` Laurent Pinchart
2014-05-14 21:08 ` Kevin Hilman [this message]
2014-05-14 12:11 ` Rafael J. Wysocki
2014-05-14 11:57 ` Mark Brown
2014-05-14 12:32 ` Rafael J. Wysocki
2014-05-14 15:14 ` Mark Brown
2014-05-14 15:26 ` Laurent Pinchart
2014-05-14 15:40 ` Mark Brown
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=7h38gc2hmq.fsf@paris.lan \
--to=khilman@linaro.org \
--cc=broonie@kernel.org \
--cc=ksummit-discuss@lists.linuxfoundation.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.