提交 eda90896 编写于 作者: C Chris Wilson 提交者: Jani Nikula

drm/i915: Balance assert_rpm_wakelock_held() for !IS_ENABLED(CONFIG_PM)

commit 09731280
Author: Imre Deak <imre.deak@intel.com>
Date:   Wed Feb 17 14:17:42 2016 +0200

    drm/i915: Add helper to get a display power ref if it was already enabled

left the rpm wakelock assertions unbalanced if CONFIG_PM was disabled as
intel_runtime_pm_get_if_in_use() would return true without incrementing
the local bookkeeping required for the assertions.

Fixes: 09731280 ("drm/i915: Add helper to get a display power ref if it was already enabled")
Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
CC: Mika Kuoppala <mika.kuoppala@intel.com>
CC: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
CC: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1456434628-22574-1-git-send-email-chris@chris-wilson.co.ukReviewed-by: NImre Deak <imre.deak@intel.com>
(cherry picked from commit 135dc79e)
Signed-off-by: NJani Nikula <jani.nikula@intel.com>
上级 bd90123c
...@@ -2349,22 +2349,20 @@ bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *dev_priv) ...@@ -2349,22 +2349,20 @@ bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *dev_priv)
{ {
struct drm_device *dev = dev_priv->dev; struct drm_device *dev = dev_priv->dev;
struct device *device = &dev->pdev->dev; struct device *device = &dev->pdev->dev;
int ret;
if (!IS_ENABLED(CONFIG_PM)) if (IS_ENABLED(CONFIG_PM)) {
return true; int ret = pm_runtime_get_if_in_use(device);
ret = pm_runtime_get_if_in_use(device); /*
* In cases runtime PM is disabled by the RPM core and we get
/* * an -EINVAL return value we are not supposed to call this
* In cases runtime PM is disabled by the RPM core and we get an * function, since the power state is undefined. This applies
* -EINVAL return value we are not supposed to call this function, * atm to the late/early system suspend/resume handlers.
* since the power state is undefined. This applies atm to the */
* late/early system suspend/resume handlers. WARN_ON_ONCE(ret < 0);
*/ if (ret <= 0)
WARN_ON_ONCE(ret < 0); return false;
if (ret <= 0) }
return false;
atomic_inc(&dev_priv->pm.wakeref_count); atomic_inc(&dev_priv->pm.wakeref_count);
assert_rpm_wakelock_held(dev_priv); assert_rpm_wakelock_held(dev_priv);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册