• Paulo Zanoni's avatar
    drm/i915: fix plane/cursor handling when runtime suspended · d6dd6843
    Paulo Zanoni authored
    If we're runtime suspended and try to use the plane interfaces, we
    will get a lot of WARNs saying we did the wrong thing.
    
    We need to get runtime PM references to pin the objects, and to
    change the fences. The pin functions are the ideal places for
    this, but intel_crtc_cursor_set_obj() doesn't call them, so we also
    have to add get/put calls inside it. There is no problem if we runtime
    suspend right after these functions are finished, because the
    registers written are forwarded to system memory.
    
    Note: for a complete fix of the cursor-dpms test case, we also need
    the patch named "drm/i915: Don't try to enable cursor from setplane
    when crtc is disabled".
    
    v2: - Narrow the put/get calls on intel_crtc_cursor_set_obj() (Daniel)
    v3: - Make get/put also surround the fence and unpin calls (Daniel and
          Ville).
        - Merge all the plane changes into a single patch since they're
          the same fix.
        - Add the comment requested by Daniel.
    v4: - Remove spurious whitespace (Ville).
    v5: - Remove intel_crtc_update_cursor() chunk since Ville did an
          equivalent fix in another patch (Ville).
    v6: - Remove unpin chunk: it will be on a separate patch (Ville,
          Chris, Daniel).
    v7: - Same thing, new color.
    
    Testcase: igt/pm_rpm/cursor
    Testcase: igt/pm_rpm/cursor-dpms
    Testcase: igt/pm_rpm/legacy-planes
    Testcase: igt/pm_rpm/legacy-planes-dpms
    Testcase: igt/pm_rpm/universal-planes
    Testcase: igt/pm_rpm/universal-planes-dpms
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81645
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82603
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    d6dd6843
intel_display.c 369 KB