drm/i915: Restore rps/rc6 on reset
authorJeff McGee <jeff.mcgee@intel.com>
Tue, 4 Feb 2014 17:32:31 +0000 (11:32 -0600)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 7 Feb 2014 09:25:10 +0000 (10:25 +0100)
commitdd0a1aa19bd3d7203e58157b84cea78bbac605ac
treeb59d3c4fc62b0c0b0a0757868167e31d17b19bf1
parent1f70999f9052f5a1b0ce1a55aff3808f2ec9fe42
drm/i915: Restore rps/rc6 on reset

A check of rps/rc6 state after i915_reset determined that the ring
MAX_IDLE registers were returned to their hardware defaults and that
the GEN6_PMIMR register was set to mask all interrupts. This change
restores those values to their pre-reset states by re-initializing
rps/rc6 in i915_reset. A full re-initialization was opted for versus
a targeted set of restore operations for simplicity and maintain-
ability. Note that the re-initialization is not done for Ironlake,
due to a past comment that it causes problems.

Also updated the rps initialization sequence to preserve existing
min/max values in the case of a re-init. We assume the values were
validated upon being set and do not do further range checking. The
debugfs interface for changing min/max was updated with range
checking to ensure this condition (already present in sysfs
interface).

v2: fix rps logging to output hw_max and hw_min, not rps.max_delay
    and rps.min_delay which don't strictly represent hardware limits.
    Add igt testcase to signed-off-by section.

Testcase: igt/pm_rps/reset
Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/intel_pm.c