drm/radeon/dpm: make sure dc performance level limits are valid (CI)
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 30 Aug 2013 20:24:33 +0000 (16:24 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 30 Aug 2013 20:31:25 +0000 (16:31 -0400)
Check to make sure the dc limits are valid before using them.
Some systems may not have a dc limits table.  In that case just
use the ac limits.  This fixes hangs on systems when the power
state is changed when on battery (dc) due to invalid performance
state parameters.

Should fix:
https://bugs.freedesktop.org/show_bug.cgi?id=68708

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/ci_dpm.c

index dd2a07c44c3a562606acf38ba7aae0d42b3dac7b..916630fdc7968b64e97a37d70f5c9e62d89dd826 100644 (file)
@@ -5179,6 +5179,12 @@ int ci_dpm_init(struct radeon_device *rdev)
 
        pi->uvd_power_gated = false;
 
+       /* make sure dc limits are valid */
+       if ((rdev->pm.dpm.dyn_state.max_clock_voltage_on_dc.sclk == 0) ||
+           (rdev->pm.dpm.dyn_state.max_clock_voltage_on_dc.mclk == 0))
+               rdev->pm.dpm.dyn_state.max_clock_voltage_on_dc =
+                       rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac;
+
        return 0;
 }