On Fri, Jun 5, 2015 at 1:33 PM, <j.glisse@xxxxxxxxx> wrote: > From: Jérôme Glisse <jglisse@xxxxxxxxxx> > > 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@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel