• Imre Deak's avatar
    drm/i915: get a runtime PM ref for the deferred GPU reset work · f454c694
    Imre Deak authored
    Atm we can end up in the GPU reset deferred work in D3 state if the last
    runtime PM reference is dropped between detecting a hang/scheduling the
    work and executing the work. At least one such case I could trigger is
    the simulated reset via the i915_wedged debugfs entry. Fix this by
    getting an RPM reference around accessing the HW in the reset work.
    
    v2:
    - Instead of getting/putting the RPM reference in the reset work itself,
      get it already before scheduling the work. By this we also prevent
      going to D3 before the work gets to run, in addition to making sure
      that we run the work itself in D0. (Ville, Daniel)
    v3:
    - fix inverted logic fail when putting the RPM ref on behalf of a
      cancelled GPU reset work (Ville)
    v4:
    - Taking the RPM ref in the interrupt handler isn't really needed b/c
      it's already guaranteed that we hold an RPM ref until the end of the
      reset work in all cases we care about. So take the ref in the reset
      work (for cases like i915_wedged_set). (Daniel)
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    f454c694
i915_irq.c 117 KB