[PATCH] drm/radeon: fix freeze for laptop with Turks/Thames GPU.

Alex Deucher alexdeucher at gmail.com
Tue Jun 9 08:31:43 PDT 2015


On Fri, Jun 5, 2015 at 1:33 PM,  <j.glisse at gmail.com> wrote:
> From: Jérôme Glisse <jglisse at redhat.com>
>
> Laptop with Turks/Thames GPU will freeze if dpm is enabled. It seems
> the SMC engine is relying on some state inside the CP engine. CP needs
> to chew at least one packet for it to get in good state for dynamic
> power management.
>
> This patch simply disabled and re-enable DPM after the ring test which
> is enough to avoid the freeze.
>
> Signed-off-by: Jérôme Glisse <jglisse at redhat.com>
> Cc: stable at vger.kernel.org

Applied.  thanks!

Alex


> ---
>  drivers/gpu/drm/radeon/radeon_device.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
> index b7ca4c5..a7fdfa4 100644
> --- a/drivers/gpu/drm/radeon/radeon_device.c
> +++ b/drivers/gpu/drm/radeon/radeon_device.c
> @@ -1463,6 +1463,21 @@ int radeon_device_init(struct radeon_device *rdev,
>         if (r)
>                 DRM_ERROR("ib ring test failed (%d).\n", r);
>
> +       /*
> +        * Turks/Thames GPU will freeze whole laptop if DPM is not restarted
> +        * after the CP ring have chew one packet at least. Hence here we stop
> +        * and restart DPM after the radeon_ib_ring_tests().
> +        */
> +       if (rdev->pm.dpm_enabled &&
> +           (rdev->pm.pm_method == PM_METHOD_DPM) &&
> +           (rdev->family == CHIP_TURKS) &&
> +           (rdev->flags & RADEON_IS_MOBILITY)) {
> +               mutex_lock(&rdev->pm.mutex);
> +               radeon_dpm_disable(rdev);
> +               radeon_dpm_enable(rdev);
> +               mutex_unlock(&rdev->pm.mutex);
> +       }
> +
>         if ((radeon_testing & 1)) {
>                 if (rdev->accel_working)
>                         radeon_test_moves(rdev);
> --
> 1.7.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list