Bug 99471

Summary: [SKL][KBL] Test assertion failure function igt_display_commit_atomic/two_screens_cursor_vs_flip for i915.nuclear_pageflip=1
Product: DRI Reporter: Jari Tahvanainen <jari.tahvanainen>
Component: DRM/IntelAssignee: Intel GFX Bugs mailing list <intel-gfx-bugs>
Status: CLOSED FIXED QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: critical    
Priority: high CC: intel-gfx-bugs
Version: DRI git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: KBL, SKL i915 features: display/atomic

Description Jari Tahvanainen 2017-01-20 08:55:56 UTC
With nuclear page flip enabled (i915.nuclear_pageflip=1) and two screens attached on SKL one has failure on kms_cursor_legacy subcases:
- Subtest 2x-cursor-vs-nonblocking-modeset-atomic failed.
- Subtest 2x-long-cursor-vs-nonblocking-modeset-atomic failed.

Both are having the following kind of output:
Out	
IGT-Version: 1.17-ga36e627 (x86_64) (Linux: 4.10.0-rc3-CI-CI_DRM_182+ x86_64)
Stack trace:
  #0 [__igt_fail_assert+0x101]
  #1 [igt_display_commit_atomic+0x44]
  #2 [two_screens_cursor_vs_flip+0x690]
  #3 [__real_main1365+0x98b]
  #4 [main+0x33]
  #5 [__libc_start_main+0xf0]
  #6 [_start+0x29]
  #7 [<unknown>+0x29]
child 0 failed with exit status 99
Subtest 2x-cursor-vs-nonblocking-modeset-atomic: FAIL (1.495s)
Err	
(kms_cursor_legacy:10019) igt-kms-CRITICAL: Test assertion failure function igt_display_commit_atomic, file igt_kms.c:2495:
(kms_cursor_legacy:10019) igt-kms-CRITICAL: Failed assertion: ret == 0
(kms_cursor_legacy:10019) igt-kms-CRITICAL: Last errno: 16, Device or resource busy
(kms_cursor_legacy:10019) igt-kms-CRITICAL: error: -16 != 0
Subtest 2x-cursor-vs-nonblocking-modeset-atomic failed.
**** DEBUG ****
src = (0, 0) 1920 x 1200 dst = (0, 0) 1920 x 1200
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.0, fb 110
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.0, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.2, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-1: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: preparing atomic, pipe: A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: preparing atomic, pipe: B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-2: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: }
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: A.0: plane_set_fb(107)
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: commit {
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: Selecting pipe A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: Selecting pipe B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.0, fb 107
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     src = (0, 0) 1920 x 1200 dst = (0, 0) 1920 x 1200
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.0, fb 110
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.0, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.2, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-1: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: preparing atomic, pipe: A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: preparing atomic, pipe: B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-2: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: }
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: A.0: plane_set_fb(107)
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: commit {
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: Selecting pipe A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: Selecting pipe B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.0, fb 107
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     src = (0, 0) 1920 x 1200 dst = (0, 0) 1920 x 1200
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.0, fb 110
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.0, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.2, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-1: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: preparing atomic, pipe: A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: preparing atomic, pipe: B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-2: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: }
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: A.0: plane_set_fb(107)
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: commit {
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: Selecting pipe A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: Selecting pipe B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.0, fb 107
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     src = (0, 0) 1920 x 1200 dst = (0, 0) 1920 x 1200
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.0, fb 110
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.0, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.2, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-1: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: preparing atomic, pipe: A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: preparing atomic, pipe: B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-2: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: }
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: A.0: plane_set_fb(107)
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: commit {
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: Selecting pipe A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: Selecting pipe B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.0, fb 107
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     src = (0, 0) 1920 x 1200 dst = (0, 0) 1920 x 1200
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: A.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.0, fb 110
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: B.2, fb 112
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.0, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.1, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     populating plane data: C.2, fb 0
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-1: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-1: preparing atomic, pipe: A
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     DP-2: preparing atomic, pipe: B
(kms_cursor_legacy:10018) igt-kms-DEBUG: display:     HDMI-A-2: preparing atomic, pipe: None
(kms_cursor_legacy:10018) igt-kms-DEBUG: display: }
****  END  ****
Environment	
PIGLIT_PLATFORM="mixed_glx_egl" PIGLIT_SOURCE_DIR="/opt/igt/piglit"
Command	
/opt/igt/tests/kms_cursor_legacy --run-subtest 2x-cursor-vs-nonblocking-modeset-atomic
Comment 1 Maarten Lankhorst 2017-02-02 07:21:46 UTC
Same story as 99472:

commit 5b8a1ba36e9a99fd2674e9bfa1bb7f6f039c2c7c
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date:   Wed Jan 18 10:41:37 2017 +0100

    kms_cursor_legacy: Use cursor movement instead of hiding for 2x tests
    
    This forces the cursor fastpath to be used. While at it, add -atomic
    versions of the test to compare legacy pageflip vs atomic.
    
    The nonblocking modeset test is changed slightly, due to cdclk changes
    the page flip may be stalled so it's not useful to test it. Just test
    that a queued page flip + nonblocking modeset works as intended and
    there is no kernel spew.
    
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

commit 396601872ae2e8a8ee9c98569b04ea2078f0adb5
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date:   Tue Jan 17 17:07:52 2017 +0100

    kms_cursor_legacy: Make the 2x tests slightly more useful.
    
    Trying to run as many cursor updates during a nonblocking modeset won't
    work, because both crtc's might be involved in the modeset. Instead
    try to run as many cursor updates on both crtc's at the same time,
    while trying to queue page flips in between.
    
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.