1. 23 Nov, 2018 1 commit
    • Ville Syrjälä's avatar
      drm/atomic-helper: Complete fake_commit->flip_done potentially earlier · 2de42f79
      Ville Syrjälä authored
      Consider the following scenario:
      1. nonblocking enable crtc
      2. wait for the event
      3. nonblocking disable crtc
      
      On i915 this can lead to a spurious -EBUSY from step 3 on
      account of non-enabled planes getting the fake_commit in step 1
      and we don't complete the fake_commit-> flip_done until
      drm_atomic_helper_commit_hw_done() which can happen a long
      time after the flip event was sent out.
      
      This will become somewhat easy to hit on SKL+ once we start
      to add all the planes for the crtc to every modeset commit
      for the purposes of forcing a watermark register programming
      [1].
      
      To make the race a little less pronounced let's complete
      fake_commit->flip_done after drm_atomic_helper_wait_for_flip_done().
      For the single crtc case this should make the race quite
      theoretical, assuming drm_atomic_helper_wait_for_flip_done()
      actually has to wait for the real commit flip_done. In case
      the real commit flip_done gets completed singificantly before
      drm_atomic_helper_wait_for_flip_done(), or we are dealing with
      multiple crtcs whose vblanks don't line up nicely the race still
      exists.
      
      [1] https://patchwork.freedesktop.org/patch/262670/
      
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Fixes: 080de2e5 ("drm/atomic: Check for busy planes/connectors before setting the commit")
      Testcase: igt/kms_cursor_legacy/*nonblocking-modeset-vs-cursor-atomic
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181122143412.11655-1-ville.syrjala@linux.intel.comReviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      2de42f79
  2. 22 Nov, 2018 3 commits
  3. 21 Nov, 2018 7 commits
  4. 20 Nov, 2018 8 commits
  5. 19 Nov, 2018 1 commit
  6. 15 Nov, 2018 3 commits
  7. 14 Nov, 2018 9 commits
  8. 13 Nov, 2018 7 commits
  9. 12 Nov, 2018 1 commit