• Ville Syrjälä's avatar
    drm/i915: Use the correct crtc when sanitizing plane mapping · 62358aa4
    Ville Syrjälä authored
    When we decide that a plane is attached to the wrong pipe we try
    to turn off said plane. However we are passing around the crtc we
    think that the plane is supposed to be using rather than the crtc
    it is currently using. That doesn't work all that well because
    we may have to do vblank waits etc. and the other pipe might
    not even be enabled here. So let's pass the plane's current crtc to
    intel_plane_disable_noatomic() so that it can its job correctly.
    
    To do that semi-cleanly we also have to change the plane readout
    to record the plane's visibility into the bitmasks of the crtc
    where the plane is currently enabled rather than to the crtc
    we want to use for the plane.
    
    One caveat here is that our active_planes bitmask will get confused
    if both planes are enabled on the same pipe. Fortunately we can use
    plane_mask to reconstruct active_planes sufficiently since
    plane_mask still has the same meaning (is the plane visible?)
    during readout. We also have to do the same during the initial
    plane readout as the second plane could clear the active_planes
    bit the first plane had already set.
    
    v2: Rely on fixup_active_planes() to populate active_planes fully (Daniel)
        Add Daniel's proposed comment to better document why we do this
        Drop the redundant intel_set_plane_visible() call
    
    Cc: stable@vger.kernel.org # fcba862e8428 drm/i915: Have plane->get_hw_state() return the current pipe
    Cc: stable@vger.kernel.org
    Cc: Dennis <dennis.nezic@utoronto.ca>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Tested-by: default avatarDennis <dennis.nezic@utoronto.ca>
    Tested-by: default avatarPeter Nowee <peter.nowee@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105637
    Fixes: b1e01595 ("drm/i915: Redo plane sanitation during readout")
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181003145017.4527-1-ville.syrjala@linux.intel.comReviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    62358aa4
intel_display.c 461 KB