• Lyude's avatar
    drm/i915/skl: Don't try to update plane watermarks if they haven't changed · ccebc23b
    Lyude authored
    i915 sometimes needs to disable planes in the middle of an atomic
    commit, and then reenable them later in the same commit. Because of
    this, we can't make the assumption that the state of the plane actually
    changed. Since the state of the plane hasn't actually changed, neither
    have it's watermarks. And if the watermarks hasn't changed then we
    haven't populated skl_results with anything, which means we'll end up
    zeroing out a plane's watermarks in the middle of the atomic commit
    without restoring them later.
    
    Simple reproduction recipe:
     - Get a SKL laptop, launch any kind of X session
     - Get two extra monitors
     - Keep hotplugging both displays (so that the display configuration
       jumps from 1 active pipe to 3 active pipes and back)
     - Eventually underrun
    
    Changes since v1:
     - Fix incorrect use of "it's"
    Changes since v2:
     - Add reproduction recipe
    Signed-off-by: default avatarLyude <cpaul@redhat.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Fixes: 62e0fb88 ("drm/i915/skl: Update plane watermarks atomically during plane updates")
    Signed-off-by: default avatarLyude <cpaul@redhat.com>
    Testcase: kms_plane
    Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1472488288-27280-1-git-send-email-cpaul@redhat.com
    Cc: drm-intel-fixes@lists.freedesktop.org
    ccebc23b
intel_display.c 482 KB