[Intel-gfx] [PATCH v2] PM / Runtime: Introduce pm_runtime_get_noidle
Rafael J. Wysocki
rjw at rjwysocki.net
Thu Dec 10 13:42:22 PST 2015
On Thursday, December 10, 2015 10:36:37 PM Rafael J. Wysocki wrote:
> On Thursday, December 10, 2015 11:43:50 AM Imre Deak wrote:
> > On Thu, 2015-12-10 at 01:58 +0100, Rafael J. Wysocki wrote:
> > > On Wednesday, December 09, 2015 06:22:19 PM Joonas Lahtinen wrote:
> > > > Introduce pm_runtime_get_noidle to for situations where it is not
> > > > desireable to touch an idling device. One use scenario is periodic
> > > > hangchecks performed by the drm/i915 driver which can be omitted
> > > > on a device in a runtime idle state.
> > > >
> > > > v2:
> > > > - Fix inconsistent return value when !CONFIG_PM.
> > > > - Update documentation for bool return value
> > > >
> > > > Signed-off-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> > > > Reported-by: Chris Wilson <chris at chris-wilson.co.uk>
> > > > Cc: Chris Wilson <chris at chris-wilson.co.uk>
> > > > Cc: "Rafael J. Wysocki" <rjw at rjwysocki.net>
> > > > Cc: linux-pm at vger.kernel.org
> > >
> > > Well, I don't quite see how this can be used in a non-racy way
> > > without doing an additional pm_runtime_resume() or something like
> > > that in the same code path.
> > We don't want to resume, that would be the whole point. We'd like to
> > ensure that we hold a reference _and_ the device is already active. So
> > AFAICS we'd need to check runtime_status == RPM_ACTIVE in addition
> > after taking the reference.
> Right, and that under the lock.
Which basically means you can call pm_runtime_resume() just fine,
because it will do nothing if the status is RPM_ACTIVE already.
So really, why don't you use pm_runtime_get_sync()?
More information about the Intel-gfx