[PATCH] PM / Domains: Power on the PM domain right after attach completes
Alan Stern
stern at rowland.harvard.edu
Mon Nov 17 11:06:02 PST 2014
On Mon, 17 Nov 2014, Kevin Hilman wrote:
> Ulf Hansson <ulf.hansson at linaro.org> writes:
>
> > The amba bus, amba drivers and a vast amount of platform drivers which
> > enables runtime PM, don't invoke a pm_runtime_get_sync() while probing
> > their devices.
> >
> > Instead, once they have turned on their PM resourses during ->probe()
> > and are ready to handle I/O, these invokes pm_runtime_set_active() to
> > synchronize its state towards the runtime PM core.
> >
> > From a runtime PM point of view this behavior is perfectly acceptable,
>
> In the context of PM domains that can be dynamically powered on/off, I'm
> not so sure it's perfectly acceptable anymore.
>
> Why doesn't the bus do a _get_sync() instead of a _get_noresume()
> followed by a _set_active().
>
> By using the _get_noresume() you're bypassing the paths that would bring
> up your PM domain.
This probably comes about because devices that are part of a power
domain need special treatment. Before the driver's probe routine gets
called, the bus ought to resume the entire power domain. For that,
some sort of _get_sync() is needed.
For devices that aren't part of a power domain, things are simpler.
The bus does _get_noresume() to make sure the device won't be runtime
suspended while the probe routine is running. It doesn't do
_get_sync(), because that would end up calling the driver's
runtime_resume routine before the driver was bound to the device. (The
bus could prevent that from happening by taking special precautions,
like PCI does, but in general it's a nuisance.)
Alan Stern
More information about the linux-arm-kernel
mailing list