瀏覽代碼

drm/radeon: disable force performance state when thermal state is active

If the thermal state is active, we are in the lowest performance level
to cool down the chip.  Don't let the user force it higher.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Alex Deucher 12 年之前
父節點
當前提交
0a17af373c
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      drivers/gpu/drm/radeon/radeon_pm.c

+ 6 - 2
drivers/gpu/drm/radeon/radeon_pm.c

@@ -508,17 +508,21 @@ static ssize_t radeon_set_dpm_forced_performance_level(struct device *dev,
 	} else if (strncmp("auto", buf, strlen("auto")) == 0) {
 	} else if (strncmp("auto", buf, strlen("auto")) == 0) {
 		level = RADEON_DPM_FORCED_LEVEL_AUTO;
 		level = RADEON_DPM_FORCED_LEVEL_AUTO;
 	} else {
 	} else {
-		mutex_unlock(&rdev->pm.mutex);
 		count = -EINVAL;
 		count = -EINVAL;
 		goto fail;
 		goto fail;
 	}
 	}
 	if (rdev->asic->dpm.force_performance_level) {
 	if (rdev->asic->dpm.force_performance_level) {
+		if (rdev->pm.dpm.thermal_active) {
+			count = -EINVAL;
+			goto fail;
+		}
 		ret = radeon_dpm_force_performance_level(rdev, level);
 		ret = radeon_dpm_force_performance_level(rdev, level);
 		if (ret)
 		if (ret)
 			count = -EINVAL;
 			count = -EINVAL;
 	}
 	}
-	mutex_unlock(&rdev->pm.mutex);
 fail:
 fail:
+	mutex_unlock(&rdev->pm.mutex);
+
 	return count;
 	return count;
 }
 }