https://bugs.freedesktop.org/show_bug.cgi?id=66963
--- Comment #138 from Alex Deucher agd5f@yahoo.com --- (In reply to comment #137)
Nope definitely not reliably, but I did have it work one more time doing the above (booting with modeset=0) after about 10 or so reboots. When it fails I've never been able to get any debug information..
Any suggestions of other ways to get more debug information?
Does it hang the entire system as soon as you load the driver, or only when you start X or something like that?
As for debugging, you can try disabling rv6xx_dpm_set_power_state() by returning early (see the patch below). If that works, move the the return statement further and further down in the function until you can identify at which point in rv6xx_dpm_set_power_state() the hang occurs. Once we pin point that, we can debug further.
diff --git a/drivers/gpu/drm/radeon/rv6xx_dpm.c b/drivers/gpu/drm/radeon/rv6xx_dpm.c index 5811d27..bfa2922 100644 --- a/drivers/gpu/drm/radeon/rv6xx_dpm.c +++ b/drivers/gpu/drm/radeon/rv6xx_dpm.c @@ -1670,6 +1670,8 @@ int rv6xx_dpm_set_power_state(struct radeon_device *rdev) struct radeon_ps *old_ps = rdev->pm.dpm.current_ps; int ret;
+ return 0; + pi->restricted_levels = 0;
rv6xx_set_uvd_clock_before_set_eng_clock(rdev, new_ps, old_ps); @@ -2094,6 +2096,8 @@ int rv6xx_dpm_force_performance_level(struct radeon_device *rdev, { struct rv6xx_power_info *pi = rv6xx_get_pi(rdev);
+ return 0; + if (level == RADEON_DPM_FORCED_LEVEL_HIGH) { pi->restricted_levels = 3; } else if (level == RADEON_DPM_FORCED_LEVEL_LOW) {