• Imre Deak's avatar
    drm/i915: Fix the GT fence revocation runtime PM logic · 8840e3bd
    Imre Deak authored
    To optimize some task deferring it until runtime resume unless someone
    holds a runtime PM reference (because in this case the task can be done
    w/o the overhead of runtime resume), we have to use the runtime PM
    get-if-active logic: If the runtime PM usage count is 0 (and so
    get-if-in-use would return false) the runtime suspend handler is not
    necessarily called yet (it could be just pending), so the device is not
    necessarily powered down, and so the runtime resume handler is not
    guaranteed to be called.
    
    The fence revocation depends on the above deferral, so add a
    get-if-active helper and use it during fence revocation.
    
    v2:
    - Add code comment explaining the fence reg programming deferral logic
      to i915_vma_revoke_fence(). (Chris)
    - Add Cc: stable and Fixes: tags. (Chris)
    - Fix the function docbook comment.
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: <stable@vger.kernel.org> # v4.12+
    Fixes: 181df2d4 ("drm/i915: Take rpm wakelock for releasing the fence on unbind")
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210322204223.919936-1-imre.deak@intel.com
    (cherry picked from commit 9d58aa46)
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    8840e3bd
intel_runtime_pm.c 18.6 KB