Rework page flip, remove cs flips, async unpin and unified pageflip.

Submitted by Maarten Lankhorst on April 19, 2016, 6:25 a.m.

Details

Reviewer None
Submitted April 19, 2016, 6:25 a.m.
Last Updated May 17, 2016, 12:50 p.m.
Revision 2

Cover Letter

Connector lifetime patches forced a rethinking for handling connectors.
Instead of flushing modesets from the connector destroy function this
meant destroying the connector state inside the unpin_work function,
similar to the other states destroyed there. This is only done if the
state is actually needed.

Some minor updates have been done to clean up the mmio page flip
completion, they're now separated from cs flip completion.

Convert flip_work to a list has been reworked to incorporate the
feedback. It should now probably work with multiple flips without
waiting, but we don't currently allow it and it needs some more
patches to support. It's still used for legacy cursor updates.

Maarten Lankhorst (21):
  drm/core: Add drm_accurate_vblank_count, v5.
  drm/i915: Remove stallcheck special handling, v3.
  drm/i915: Remove intel_finish_page_flip_plane.
  drm/i915: Remove intel_prepare_page_flip, v3.
  drm/i915: Add support for detecting vblanks when hw frame counter is
    unavailable.
  drm/i915: Unify unpin_work and mmio_work into flip_work, v2.
  Revert "drm/i915: Avoid stalling on pending flips for legacy cursor
    updates"
  drm/i915: Allow mmio updates on all platforms, v2.
  drm/i915: Convert flip_work to a list.
  drm/i915: Add the exclusive fence to plane_state.
  drm/i915: Rework intel_crtc_page_flip to be almost atomic, v3.
  drm/i915: Remove cs based page flip support.
  drm/i915: Remove use_mmio_flip kernel parameter.
  drm/i915: Remove queue_flip pointer.
  drm/i915: Remove reset_counter from intel_crtc.
  drm/i915: Pass atomic states to fbc update functions.
  drm/i915: Prepare connectors for nonblocking checks.
  drm/i915: Make unpin async.
  Reapply "drm/i915: Avoid stalling on pending flips for legacy cursor
    updates"
  drm/i915: Check for unpin correctness.
  drm/i915: Allow async update of pageflips.

 drivers/gpu/drm/drm_irq.c                 |   31 +
 drivers/gpu/drm/i915/i915_debugfs.c       |   93 +-
 drivers/gpu/drm/i915/i915_drv.h           |    5 -
 drivers/gpu/drm/i915/i915_irq.c           |  142 +--
 drivers/gpu/drm/i915/i915_params.c        |    5 -
 drivers/gpu/drm/i915/i915_params.h        |    1 -
 drivers/gpu/drm/i915/intel_atomic.c       |   11 +
 drivers/gpu/drm/i915/intel_atomic_plane.c |    1 +
 drivers/gpu/drm/i915/intel_display.c      | 1725 +++++++++--------------------
 drivers/gpu/drm/i915/intel_drv.h          |   68 +-
 drivers/gpu/drm/i915/intel_fbc.c          |   39 +-
 drivers/gpu/drm/i915/intel_lrc.c          |    4 +-
 drivers/gpu/drm/i915/intel_sprite.c       |   16 +-
 include/drm/drmP.h                        |    1 +
 14 files changed, 742 insertions(+), 1400 deletions(-)
  

Revisions

Patches download mbox

# Name Submitter State
[01/19] drm/core: Add drm_accurate_vblank_count, v4. Maarten Lankhorst New
[02/19] drm/i915: Remove stallcheck special handling, v2. Maarten Lankhorst New
[03/19] drm/i915: Remove intel_prepare_page_flip, v2. Maarten Lankhorst New
[04/19] drm/i915: Add support for detecting vblanks when hw frame counter is unavailable. Maarten Lankhorst New
[05/19] drm/i915: Unify unpin_work and mmio_work into flip_work. Maarten Lankhorst New
[06/19] Revert "drm/i915: Avoid stalling on pending flips for legacy cursor updates" Maarten Lankhorst New
[07/19] drm/i915: Allow mmio updates on all platforms, v2. Maarten Lankhorst New
[08/19] drm/i915: Convert flip_work to a list. Maarten Lankhorst New
[09/19] drm/i915: Add the exclusive fence to plane_state. Maarten Lankhorst New
[10/19] drm/i915: Rework intel_crtc_page_flip to be almost atomic, v3. Maarten Lankhorst New
[11/19] drm/i915: Remove cs based page flip support. Maarten Lankhorst New
[12/19] drm/i915: Remove use_mmio_flip kernel parameter. Maarten Lankhorst New
[13/19] drm/i915: Remove queue_flip pointer. Maarten Lankhorst New
[14/19] drm/i915: Pass atomic states to fbc update functions. Maarten Lankhorst New
[15/19] drm/i915: Prepare MST connector removal for async unpin. Maarten Lankhorst New
[16/19] drm/i915: Make unpin async. Maarten Lankhorst New
[17/19] Reapply "drm/i915: Avoid stalling on pending flips for legacy cursor updates" Maarten Lankhorst New
[18/19] drm/i915: Check for unpin correctness. Maarten Lankhorst New
[19/19] drm/i915: Allow async update of pageflips. Maarten Lankhorst New

Tests

Queue 5909v1
Series 5909v1 Rework page flip, remove cs flips, async unpin and unified pageflip.
2016-04-19T06:26:27.411957 http://patchwork.freedesktop.org/api/1.0/series/5909/revisions/1/mbox/
Applying: drm/core: Add drm_accurate_vblank_count, v4.
Applying: drm/i915: Remove stallcheck special handling, v2.
Applying: drm/i915: Remove intel_prepare_page_flip, v2.
Applying: drm/i915: Add support for detecting vblanks when hw frame counter is unavailable.
Applying: drm/i915: Unify unpin_work and mmio_work into flip_work.
Applying: Revert "drm/i915: Avoid stalling on pending flips for legacy cursor updates"
Applying: drm/i915: Allow mmio updates on all platforms, v2.
Applying: drm/i915: Convert flip_work to a list.
Applying: drm/i915: Add the exclusive fence to plane_state.
Applying: drm/i915: Rework intel_crtc_page_flip to be almost atomic, v3.
Applying: drm/i915: Remove cs based page flip support.
Applying: drm/i915: Remove use_mmio_flip kernel parameter.
Applying: drm/i915: Remove queue_flip pointer.
Applying: drm/i915: Pass atomic states to fbc update functions.
Applying: drm/i915: Prepare MST connector removal for async unpin.
Applying: drm/i915: Make unpin async.
Patch failed at 0016 drm/i915: Make unpin async.



Test drv_hangman:
        Subgroup error-state-basic:
                pass       -> FAIL       (ro-ilk1-i5-650)
Test drv_module_reload_basic:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
Test gem_busy:
        Subgroup basic-bsd2:
                incomplete -> SKIP       (ro-bsw-n3050)
Test gem_ctx_basic:
                incomplete -> PASS       (ro-bsw-n3050)
Test gem_exec_basic:
        Subgroup gtt-bsd2:
                incomplete -> SKIP       (ro-bsw-n3050)
Test gem_exec_store:
        Subgroup basic-render:
                incomplete -> PASS       (ro-bsw-n3050)
Test gem_exec_whisper:
        Subgroup basic:
                pass       -> INCOMPLETE (ro-bsw-n3050)
Test gem_mmap_gtt:
        Subgroup basic-read:
                incomplete -> PASS       (ro-bsw-n3050)
Test gem_storedw_loop:
        Subgroup basic-bsd2:
                incomplete -> SKIP       (ro-bsw-n3050)
Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                pass       -> SKIP       (ro-bdw-i5-5250u)
        Subgroup basic-flip-vs-wf_vblank:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
                skip       -> PASS       (ro-bdw-i5-5250u)
Test kms_force_connector_basic:
        Subgroup force-edid:
                incomplete -> SKIP       (ro-bsw-n3050)
        Subgroup prune-stale-modes:
                incomplete -> SKIP       (ro-bsw-n3050)
Test kms_pipe_crc_basic:
        Subgroup hang-read-crc-pipe-a:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
        Subgroup hang-read-crc-pipe-b:
                skip       -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-a-frame-sequence:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup nonblocking-crc-pipe-b-frame-sequence:
                incomplete -> SKIP       (ro-bsw-n3050)
        Subgroup nonblocking-crc-pipe-c-frame-sequence:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
        Subgroup read-crc-pipe-b-frame-sequence:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup read-crc-pipe-c:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
        Subgroup read-crc-pipe-c-frame-sequence:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
Test kms_psr_sink_crc:
        Subgroup psr_basic:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)

ro-bdw-i5-5250u  total:192  pass:175  dwarn:1   dfail:0   fail:0   skip:16 
ro-bdw-i7-5600u  total:192  pass:169  dwarn:0   dfail:0   fail:0   skip:23 
ro-bsw-n3050     total:185  pass:147  dwarn:0   dfail:0   fail:0   skip:37 
ro-hsw-i3-4010u  total:192  pass:168  dwarn:0   dfail:0   fail:0   skip:24 
ro-hsw-i7-4770r  total:192  pass:169  dwarn:0   dfail:0   fail:0   skip:23 
ro-ilk1-i5-650   total:191  pass:133  dwarn:0   dfail:0   fail:1   skip:57 
ro-ivb-i7-3770   total:192  pass:159  dwarn:0   dfail:0   fail:0   skip:33 
ro-ivb3-i7-3770  total:192  pass:163  dwarn:0   dfail:0   fail:0   skip:29 
ro-skl-i7-6700hq total:192  pass:152  dwarn:18  dfail:0   fail:0   skip:22 
ro-skl2-4405Y    total:192  pass:169  dwarn:1   dfail:0   fail:0   skip:22 
BOOT FAILED for ro-ilk-i7-620lm

Results at /archive/results/CI_IGT_test/RO_Private_33/

b1b2678 drm-intel-nightly: 2016y-04m-18d-17h-17m-00s UTC integration manifest
47ddd84 drm/i915: Prepare MST connector removal for async unpin.
af3856b drm/i915: Pass atomic states to fbc update functions.
e9e0d7f2 drm/i915: Remove queue_flip pointer.
07df59c drm/i915: Remove use_mmio_flip kernel parameter.
0e63ea8 drm/i915: Remove cs based page flip support.
12b2bd0 drm/i915: Rework intel_crtc_page_flip to be almost atomic, v3.
1358355 drm/i915: Add the exclusive fence to plane_state.
fd33a42 drm/i915: Convert flip_work to a list.
9b6ffe4 drm/i915: Allow mmio updates on all platforms, v2.
c89dfae Revert "drm/i915: Avoid stalling on pending flips for legacy cursor updates"
887fbb9 drm/i915: Unify unpin_work and mmio_work into flip_work.
bd85d8d drm/i915: Add support for detecting vblanks when hw frame counter is unavailable.
640b2ca drm/i915: Remove intel_prepare_page_flip, v2.
76acb51 drm/i915: Remove stallcheck special handling, v2.
5620a14 drm/core: Add drm_accurate_vblank_count, v4.

Patches download mbox

# Name Submitter State
[v2,01/21] drm/core: Add drm_accurate_vblank_count, v5. Maarten Lankhorst New
[v2,02/21] drm/i915: Remove stallcheck special handling, v3. Maarten Lankhorst New
[v2,03/21] drm/i915: Remove intel_finish_page_flip_plane. Maarten Lankhorst New
[v2,04/21] drm/i915: Remove intel_prepare_page_flip, v3. Maarten Lankhorst New
[v2,05/21] drm/i915: Add support for detecting vblanks when hw frame counter is unavailable. Maarten Lankhorst New
[v2,06/21] drm/i915: Unify unpin_work and mmio_work into flip_work, v2. Maarten Lankhorst New
[v2,07/21] Revert "drm/i915: Avoid stalling on pending flips for legacy cursor updates" Maarten Lankhorst New
[v2,08/21] drm/i915: Allow mmio updates on all platforms, v2. Maarten Lankhorst New
[v2,09/21] drm/i915: Convert flip_work to a list. Maarten Lankhorst New
[v2,10/21] drm/i915: Add the exclusive fence to plane_state. Maarten Lankhorst New
[v2,11/21] drm/i915: Rework intel_crtc_page_flip to be almost atomic, v3. Maarten Lankhorst New
[v2,12/21] drm/i915: Remove cs based page flip support. Maarten Lankhorst New
[v2,13/21] drm/i915: Remove use_mmio_flip kernel parameter. Maarten Lankhorst New
[v2,14/21] drm/i915: Remove queue_flip pointer. Maarten Lankhorst New
[v2,15/21] drm/i915: Remove reset_counter from intel_crtc. Maarten Lankhorst New
[v2,16/21] drm/i915: Pass atomic states to fbc update functions. Maarten Lankhorst New
[v2,17/21] drm/i915: Prepare connectors for nonblocking checks. Maarten Lankhorst New
[v2,18/21] drm/i915: Make unpin async. Maarten Lankhorst New
[v2,19/21] Reapply "drm/i915: Avoid stalling on pending flips for legacy cursor updates" Maarten Lankhorst New
[v2,20/21] drm/i915: Check for unpin correctness. Maarten Lankhorst New
[v2,21/21] drm/i915: Allow async update of pageflips. Maarten Lankhorst New

Tests

Series 5909v2 Rework page flip, remove cs flips, async unpin and unified pageflip.
http://patchwork.freedesktop.org/api/1.0/series/5909/revisions/2/mbox

Test drv_hangman:
        Subgroup error-state-basic:
                pass       -> FAIL       (ro-ilk1-i5-650)
Test kms_frontbuffer_tracking:
        Subgroup basic:
                pass       -> FAIL       (ro-bdw-i7-5600u)
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                pass       -> DMESG-WARN (ro-ivb-i7-3770)
Test kms_sink_crc_basic:
                skip       -> PASS       (ro-skl-i7-6700hq)

fi-bdw-i7-5557u  total:219  pass:206  dwarn:0   dfail:0   fail:0   skip:13 
fi-bsw-n3050     total:218  pass:174  dwarn:0   dfail:0   fail:2   skip:42 
fi-byt-n2820     total:218  pass:175  dwarn:0   dfail:0   fail:2   skip:41 
fi-hsw-i7-4770k  total:219  pass:198  dwarn:0   dfail:0   fail:0   skip:21 
fi-hsw-i7-4770r  total:219  pass:193  dwarn:0   dfail:0   fail:0   skip:26 
fi-kbl-y         total:219  pass:191  dwarn:1   dfail:0   fail:2   skip:25 
fi-skl-i7-6700k  total:219  pass:191  dwarn:0   dfail:0   fail:0   skip:28 
fi-snb-i7-2600   total:37   pass:27   dwarn:0   dfail:0   fail:0   skip:9  
ro-bdw-i5-5250u  total:219  pass:181  dwarn:0   dfail:0   fail:0   skip:38 
ro-bdw-i7-5557U  total:219  pass:206  dwarn:0   dfail:0   fail:0   skip:13 
ro-bdw-i7-5600u  total:219  pass:186  dwarn:0   dfail:0   fail:1   skip:32 
ro-bsw-n3050     total:219  pass:175  dwarn:0   dfail:0   fail:2   skip:42 
ro-byt-n2820     total:218  pass:175  dwarn:0   dfail:0   fail:2   skip:41 
ro-hsw-i3-4010u  total:218  pass:193  dwarn:0   dfail:0   fail:0   skip:25 
ro-hsw-i7-4770r  total:219  pass:194  dwarn:0   dfail:0   fail:0   skip:25 
ro-ilk-i7-620lm  total:219  pass:151  dwarn:0   dfail:0   fail:1   skip:67 
ro-ilk1-i5-650   total:214  pass:151  dwarn:0   dfail:0   fail:2   skip:61 
ro-ivb-i7-3770   total:219  pass:182  dwarn:1   dfail:0   fail:0   skip:36 
ro-ivb2-i7-3770  total:219  pass:187  dwarn:0   dfail:0   fail:0   skip:32 
ro-skl-i7-6700hq total:214  pass:190  dwarn:0   dfail:0   fail:0   skip:24 
ro-snb-i7-2620M  total:219  pass:177  dwarn:0   dfail:0   fail:1   skip:41 

Results at /archive/results/CI_IGT_test/RO_Private_107/

0d84413 drm-intel-nightly: 2016y-05m-17d-10h-26m-35s UTC integration manifest
359b7ae drm/i915: Allow async update of pageflips.
8924a97 drm/i915: Check for unpin correctness.
6b85fc9 Reapply "drm/i915: Avoid stalling on pending flips for legacy cursor updates"
7087696 drm/i915: Make unpin async.
1fee901 drm/i915: Prepare connectors for nonblocking checks.
9195752 drm/i915: Pass atomic states to fbc update functions.
6bcfaf3 drm/i915: Remove reset_counter from intel_crtc.
217b1c0 drm/i915: Remove queue_flip pointer.
9ebde3e drm/i915: Remove use_mmio_flip kernel parameter.
e1b95ca drm/i915: Remove cs based page flip support.
53743fc drm/i915: Rework intel_crtc_page_flip to be almost atomic, v3.
9483ed0 drm/i915: Add the exclusive fence to plane_state.
d6229ae drm/i915: Convert flip_work to a list.
21cb271 drm/i915: Allow mmio updates on all platforms, v2.
954c11e Revert "drm/i915: Avoid stalling on pending flips for legacy cursor updates"
944162e drm/i915: Unify unpin_work and mmio_work into flip_work, v2.
b1ccba0 drm/i915: Add support for detecting vblanks when hw frame counter is unavailable.
19f3cbb drm/i915: Remove intel_prepare_page_flip, v3.
fb0c060 drm/i915: Remove intel_finish_page_flip_plane.
0d41947 drm/i915: Remove stallcheck special handling, v3.
c6b6b6a drm/core: Add drm_accurate_vblank_count, v5.