• Jeff McGee's avatar
    drm/i915: Restore rps/rc6 on reset · dd0a1aa1
    Jeff McGee authored
    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: default avatarJeff McGee <jeff.mcgee@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    dd0a1aa1
i915_drv.c 27.3 KB