Bug 81703

Summary: [BYT Bisected]igt/kms_plane some subcases cause system hang
Product: DRI Reporter: Guo Jinxian <jinxianx.guo>
Component: DRM/IntelAssignee: Dave Airlie <airlied>
Status: CLOSED FIXED QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: critical    
Priority: high CC: intel-gfx-bugs
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
dmesg none

Description Guo Jinxian 2014-07-24 06:52:07 UTC
==System Environment==
--------------------------
Regression: Yes

Good commit on -next-queued: 91565c85b66db820f01894a971d39aaef60c4325

Non-working platforms: BYT

==kernel==
--------------------------
origin/drm-intel-nightly: af1aaba219fdd90ca1b30f9b8d8d19352224f170(fails)
    drm-intel-nightly: 2014y-07m-23d-20h-15m-10s integration manifest
origin/drm-intel-next-queued: 2b8ee5710915a244b807fbe3427299d007d19e89(fails)
    drm/i915: Allow overlapping userptr objects  
origin/drm-intel-fixes: eedd10f45bdcb2a5b2afa35f845e080c3bc984f2(works)
    drm/i915: Simplify i915_gem_release_all_mmaps()

==Bug detailed description==
-----------------------------
"WARNING: CPU: 1 PID: 1234 at drivers/gpu/drm/i915/intel_dp.c:1184 igt/kms_plane some subcases cause system hang

Output:
root@x-bytm02:/GFX/Test/Intel_gpu_tools/intel-gpu-tools/tests# ./kms_plane
IGT-Version: 1.7-g70e6ed9 (x86_64) (Linux: 3.16.0-rc4_drm-intel-next-queued_2b8ee5_20140724+ x86_64)
Testing connector eDP-1 using pipe A plane 1

Reproduce steps:
-------------------------
1. ./kms_plane
Comment 1 lu hua 2014-07-24 08:02:33 UTC
Created attachment 103388 [details]
dmesg
Comment 2 Guo Jinxian 2014-08-04 07:52:13 UTC
13cf550448b58abf8f44f5d6a560f2d20871c965 is the first bad commit 
commit 13cf550448b58abf8f44f5d6a560f2d20871c965 
Author: Dave Airlie <airlied@redhat.com> 
AuthorDate: Wed Jun 18 11:29:35 2014 +1000 
Commit: Daniel Vetter <daniel.vetter@ffwll.ch> 
CommitDate: Mon Jul 7 15:08:51 2014 +0200

drm/i915: rework digital port IRQ handling (v2) 

The digital ports from Ironlake and up have the ability to distinguish 
between long and short HPD pulses. Displayport 1.1 only uses the short 
form to request link retraining usually, so we haven't really needed 
support for it until now. 

However with DP 1.2 MST we need to handle the short irqs on their 
own outside the modesetting locking the long hpd's involve. This 
patch adds the framework to distinguish between short/long to the 
current code base, to lay the basis for future DP 1.2 MST work. 

This should mean we get better bisectability in case of regression 
due to the new irq handling. 

v2: add GM45 support (untested, due to lack of hw) 

Signed-off-by: Dave Airlie <airlied@redhat.com> 
Reviewed-by: Todd Previte <tprevite@gmail.com> 
[danvet: Fix conflicts in i915_irq.c with Oscar Mateo's irq handling 
race fixes and a trivial one in intel_drv.h with the psr code.] 
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> 

:040000 040000 7be50985e66c24e64d4de3cccbdcd521ef59903b 8e9cf7373e1c96e78989fd0514e8da8debaad1c4 M drivers 


The commit unable to revert. It's parents commit(564ed191f5d816d24501664296991ec70327e2bc) unable to causes system hang.
Comment 3 lu hua 2014-08-22 05:40:26 UTC
Test on latest -nightly kernel, the hang goes away.
 ./kms_plane
IGT-Version: 1.7-g4d2f511 (x86_64) (Linux: 3.17.0-rc1_drm-intel-nightly_257d90_20140822+ x86_64)
Testing connector eDP-1 using pipe A plane 1
Subtest plane-position-covered-pipe-A-plane-1: SUCCESS
Testing connector eDP-1 using pipe A plane 1
Subtest plane-position-hole-pipe-A-plane-1: SUCCESS
Testing connector eDP-1 using pipe A plane 1
Subtest plane-panning-top-left-pipe-A-plane-1: SUCCESS
Testing connector eDP-1 using pipe A plane 1
Subtest plane-panning-bottom-right-pipe-A-plane-1: SUCCESS
Testing connector eDP-1 using pipe A plane 2
Subtest plane-position-covered-pipe-A-plane-2: SUCCESS
Testing connector eDP-1 using pipe A plane 2
Subtest plane-position-hole-pipe-A-plane-2: SUCCESS
Testing connector eDP-1 using pipe A plane 2
Subtest plane-panning-top-left-pipe-A-plane-2: SUCCESS
Testing connector eDP-1 using pipe A plane 2
Subtest plane-panning-bottom-right-pipe-A-plane-2: SUCCESS
Testing connector eDP-1 using pipe A plane 3
Subtest plane-position-covered-pipe-A-plane-3: SUCCESS
Testing connector eDP-1 using pipe A plane 3
Subtest plane-position-hole-pipe-A-plane-3: SUCCESS
Testing connector eDP-1 using pipe A plane 3
Subtest plane-panning-top-left-pipe-A-plane-3: SUCCESS
Testing connector eDP-1 using pipe A plane 3
Subtest plane-panning-bottom-right-pipe-A-plane-3: SUCCESS
Testing connector eDP-1 using pipe B plane 1
Subtest plane-position-covered-pipe-B-plane-1: SUCCESS
Testing connector eDP-1 using pipe B plane 1
Subtest plane-position-hole-pipe-B-plane-1: SUCCESS
Testing connector eDP-1 using pipe B plane 1
Subtest plane-panning-top-left-pipe-B-plane-1: SUCCESS
Testing connector eDP-1 using pipe B plane 1
Subtest plane-panning-bottom-right-pipe-B-plane-1: SUCCESS
Testing connector eDP-1 using pipe B plane 2
Subtest plane-position-covered-pipe-B-plane-2: SUCCESS
Testing connector eDP-1 using pipe B plane 2
Subtest plane-position-hole-pipe-B-plane-2: SUCCESS
Testing connector eDP-1 using pipe B plane 2
Subtest plane-panning-top-left-pipe-B-plane-2: SUCCESS
Testing connector eDP-1 using pipe B plane 2
Subtest plane-panning-bottom-right-pipe-B-plane-2: SUCCESS
Testing connector eDP-1 using pipe B plane 3
Test assertion failure function test_plane_position_with_output, file kms_plane.c:197:
Failed assertion: igt_crc_equal(&test.reference_crc, &crc)
Subtest plane-position-covered-pipe-B-plane-3: FAIL
Testing connector eDP-1 using pipe B plane 3
Test assertion failure function igt_pipe_crc_new, file igt_debugfs.c:384:
Failed assertion: pipe_crc->crc_fd != -1
Last errno: 16, Device or resource busy
Subtest plane-position-hole-pipe-B-plane-3: FAIL
Testing connector eDP-1 using pipe B plane 3
Test assertion failure function igt_pipe_crc_new, file igt_debugfs.c:384:
Failed assertion: pipe_crc->crc_fd != -1
Last errno: 16, Device or resource busy
Subtest plane-panning-top-left-pipe-B-plane-3: FAIL
Testing connector eDP-1 using pipe B plane 3
Test assertion failure function igt_pipe_crc_new, file igt_debugfs.c:384:
Failed assertion: pipe_crc->crc_fd != -1
Last errno: 16, Device or resource busy
Subtest plane-panning-bottom-right-pipe-B-plane-3: FAIL
Test requirement not met in function test_plane_position, file kms_plane.c:216:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-position-covered-pipe-C-plane-1: SKIP
Test requirement not met in function test_plane_position, file kms_plane.c:216:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-position-hole-pipe-C-plane-1: SKIP
Test requirement not met in function test_plane_panning, file kms_plane.c:334:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-panning-top-left-pipe-C-plane-1: SKIP
Test requirement not met in function test_plane_panning, file kms_plane.c:334:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-panning-bottom-right-pipe-C-plane-1: SKIP
Test requirement not met in function test_plane_position, file kms_plane.c:216:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-position-covered-pipe-C-plane-2: SKIP
Test requirement not met in function test_plane_position, file kms_plane.c:216:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-position-hole-pipe-C-plane-2: SKIP
Test requirement not met in function test_plane_panning, file kms_plane.c:334:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-panning-top-left-pipe-C-plane-2: SKIP
Test requirement not met in function test_plane_panning, file kms_plane.c:334:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-panning-bottom-right-pipe-C-plane-2: SKIP
Test requirement not met in function test_plane_position, file kms_plane.c:216:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-position-covered-pipe-C-plane-3: SKIP
Test requirement not met in function test_plane_position, file kms_plane.c:216:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-position-hole-pipe-C-plane-3: SKIP
Test requirement not met in function test_plane_panning, file kms_plane.c:334:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-panning-top-left-pipe-C-plane-3: SKIP
Test requirement not met in function test_plane_panning, file kms_plane.c:334:
Test requirement: !(pipe >= data->display.n_pipes)
Last errno: 16, Device or resource busy
Subtest plane-panning-bottom-right-pipe-C-plane-3: SKIP
Comment 4 Guo Jinxian 2014-08-22 08:26:39 UTC
(In reply to comment #3)
> Test on latest -nightly kernel, the hang goes away.
>  ./kms_plane
> IGT-Version: 1.7-g4d2f511 (x86_64) (Linux:
> 3.17.0-rc1_drm-intel-nightly_257d90_20140822+ x86_64)
> Testing connector eDP-1 using pipe A plane 1
> Subtest plane-position-covered-pipe-A-plane-1: SUCCESS
> Testing connector eDP-1 using pipe A plane 1
> Subtest plane-position-hole-pipe-A-plane-1: SUCCESS
> Testing connector eDP-1 using pipe A plane 1
> Subtest plane-panning-top-left-pipe-A-plane-1: SUCCESS
> Testing connector eDP-1 using pipe A plane 1
> Subtest plane-panning-bottom-right-pipe-A-plane-1: SUCCESS
> Testing connector eDP-1 using pipe A plane 2
> Subtest plane-position-covered-pipe-A-plane-2: SUCCESS
> Testing connector eDP-1 using pipe A plane 2
> Subtest plane-position-hole-pipe-A-plane-2: SUCCESS
> Testing connector eDP-1 using pipe A plane 2
> Subtest plane-panning-top-left-pipe-A-plane-2: SUCCESS
> Testing connector eDP-1 using pipe A plane 2
> Subtest plane-panning-bottom-right-pipe-A-plane-2: SUCCESS
> Testing connector eDP-1 using pipe A plane 3
> Subtest plane-position-covered-pipe-A-plane-3: SUCCESS
> Testing connector eDP-1 using pipe A plane 3
> Subtest plane-position-hole-pipe-A-plane-3: SUCCESS
> Testing connector eDP-1 using pipe A plane 3
> Subtest plane-panning-top-left-pipe-A-plane-3: SUCCESS
> Testing connector eDP-1 using pipe A plane 3
> Subtest plane-panning-bottom-right-pipe-A-plane-3: SUCCESS
> Testing connector eDP-1 using pipe B plane 1
> Subtest plane-position-covered-pipe-B-plane-1: SUCCESS
> Testing connector eDP-1 using pipe B plane 1
> Subtest plane-position-hole-pipe-B-plane-1: SUCCESS
> Testing connector eDP-1 using pipe B plane 1
> Subtest plane-panning-top-left-pipe-B-plane-1: SUCCESS
> Testing connector eDP-1 using pipe B plane 1
> Subtest plane-panning-bottom-right-pipe-B-plane-1: SUCCESS
> Testing connector eDP-1 using pipe B plane 2
> Subtest plane-position-covered-pipe-B-plane-2: SUCCESS
> Testing connector eDP-1 using pipe B plane 2
> Subtest plane-position-hole-pipe-B-plane-2: SUCCESS
> Testing connector eDP-1 using pipe B plane 2
> Subtest plane-panning-top-left-pipe-B-plane-2: SUCCESS
> Testing connector eDP-1 using pipe B plane 2
> Subtest plane-panning-bottom-right-pipe-B-plane-2: SUCCESS
> Testing connector eDP-1 using pipe B plane 3
> Test assertion failure function test_plane_position_with_output, file
> kms_plane.c:197:
> Failed assertion: igt_crc_equal(&test.reference_crc, &crc)
> Subtest plane-position-covered-pipe-B-plane-3: FAIL
> Testing connector eDP-1 using pipe B plane 3
> Test assertion failure function igt_pipe_crc_new, file igt_debugfs.c:384:
> Failed assertion: pipe_crc->crc_fd != -1
> Last errno: 16, Device or resource busy
> Subtest plane-position-hole-pipe-B-plane-3: FAIL
> Testing connector eDP-1 using pipe B plane 3
> Test assertion failure function igt_pipe_crc_new, file igt_debugfs.c:384:
> Failed assertion: pipe_crc->crc_fd != -1
> Last errno: 16, Device or resource busy
> Subtest plane-panning-top-left-pipe-B-plane-3: FAIL
> Testing connector eDP-1 using pipe B plane 3
> Test assertion failure function igt_pipe_crc_new, file igt_debugfs.c:384:
> Failed assertion: pipe_crc->crc_fd != -1
> Last errno: 16, Device or resource busy
> Subtest plane-panning-bottom-right-pipe-B-plane-3: FAIL
> Test requirement not met in function test_plane_position, file
> kms_plane.c:216:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-position-covered-pipe-C-plane-1: SKIP
> Test requirement not met in function test_plane_position, file
> kms_plane.c:216:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-position-hole-pipe-C-plane-1: SKIP
> Test requirement not met in function test_plane_panning, file
> kms_plane.c:334:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-panning-top-left-pipe-C-plane-1: SKIP
> Test requirement not met in function test_plane_panning, file
> kms_plane.c:334:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-panning-bottom-right-pipe-C-plane-1: SKIP
> Test requirement not met in function test_plane_position, file
> kms_plane.c:216:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-position-covered-pipe-C-plane-2: SKIP
> Test requirement not met in function test_plane_position, file
> kms_plane.c:216:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-position-hole-pipe-C-plane-2: SKIP
> Test requirement not met in function test_plane_panning, file
> kms_plane.c:334:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-panning-top-left-pipe-C-plane-2: SKIP
> Test requirement not met in function test_plane_panning, file
> kms_plane.c:334:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-panning-bottom-right-pipe-C-plane-2: SKIP
> Test requirement not met in function test_plane_position, file
> kms_plane.c:216:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-position-covered-pipe-C-plane-3: SKIP
> Test requirement not met in function test_plane_position, file
> kms_plane.c:216:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-position-hole-pipe-C-plane-3: SKIP
> Test requirement not met in function test_plane_panning, file
> kms_plane.c:334:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-panning-top-left-pipe-C-plane-3: SKIP
> Test requirement not met in function test_plane_panning, file
> kms_plane.c:334:
> Test requirement: !(pipe >= data->display.n_pipes)
> Last errno: 16, Device or resource busy
> Subtest plane-panning-bottom-right-pipe-C-plane-3: SKIP

Verified
Comment 5 Elizabeth 2017-10-06 14:37:01 UTC
Closing old verified.

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.