|
@@ -1463,6 +1463,21 @@ int radeon_device_init(struct radeon_device *rdev,
|
|
if (r)
|
|
if (r)
|
|
DRM_ERROR("ib ring test failed (%d).\n", 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 ((radeon_testing & 1)) {
|
|
if (rdev->accel_working)
|
|
if (rdev->accel_working)
|
|
radeon_test_moves(rdev);
|
|
radeon_test_moves(rdev);
|