[Intel-gfx] [PATCH] drm/i915: don't enable autosuspend on platforms without RPM support

David Weinehall david.weinehall at linux.intel.com
Fri Dec 18 02:32:06 PST 2015


On Thu, Dec 17, 2015 at 07:04:33PM +0200, Imre Deak wrote:
> Since
> 
> commit 357597e51dd1aa3cf764d322abf89217e3dcd7bb
> Author: Imre Deak <imre.deak at intel.com>
> Date:   Tue Nov 10 06:12:22 2015 +0200
> 
>     drm/i915: remove HAS_RUNTIME_PM check from RPM get/put/assert helpers
> 
> this file is writeable also on platforms without RPM support, but
> userspace (at least IGT) depends on this file being unchangable to
> determine whether the device supports autosuspend. So restore the old
> behavior.
> 
> This gets rid of igt/pm_rpm failures on old platforms without RPM
> support, where the test should be skipped.
> 
> Testcase: igt/pm_rpm/basic-rte
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_runtime_pm.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
> index a0b9eaf..ddbdbff 100644
> --- a/drivers/gpu/drm/i915/intel_runtime_pm.c
> +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
> @@ -2309,18 +2309,21 @@ void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
>  	struct drm_device *dev = dev_priv->dev;
>  	struct device *device = &dev->pdev->dev;
>  
> +	pm_runtime_set_autosuspend_delay(device, 10000); /* 10s */
> +	pm_runtime_mark_last_busy(device);
> +
>  	/*
>  	 * Take a permanent reference to disable the RPM functionality and drop
>  	 * it only when unloading the driver. Use the low level get/put helpers,
>  	 * so the driver's own RPM reference tracking asserts also work on
>  	 * platforms without RPM support.
>  	 */
> -	if (!HAS_RUNTIME_PM(dev))
> +	if (!HAS_RUNTIME_PM(dev)) {
> +		pm_runtime_dont_use_autosuspend(device);
>  		pm_runtime_get_sync(device);
> -
> -	pm_runtime_set_autosuspend_delay(device, 10000); /* 10s */
> -	pm_runtime_mark_last_busy(device);
> -	pm_runtime_use_autosuspend(device);
> +	} else {
> +		pm_runtime_use_autosuspend(device);
> +	}
>  
>  	/*
>  	 * The core calls the driver load handler with an RPM reference held.

Reviewed-by: David Weinehall <david.weinehall at intel.com>


Kind regards, David Weinehall


More information about the Intel-gfx mailing list