Bug 106233

Summary: [CI] igt@kms_cursor_legacy@cursor-vs-flip - Failed assertion: igt_ioctl((fd), ((((2U|1U) << (((0+8)+8)+14)) | ((('d')) << (0+8)) | (((0xB2)) << 0) | ...
Product: DRI Reporter: Martin Peres <martin.peres>
Component: DRM/IntelAssignee: Intel GFX Bugs mailing list <intel-gfx-bugs>
Status: RESOLVED MOVED QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: normal    
Priority: medium CC: intel-gfx-bugs, matthew.d.roper
Version: XOrg git   
Hardware: Other   
OS: All   
Whiteboard: ReadyForDev
i915 platform: BSW/CHT i915 features: display/Other

Description Martin Peres 2018-04-25 08:29:11 UTC
https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_14/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_14/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_15/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_15/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_16/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_16/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_18/fi-bsw-n3050/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_23/fi-bsw-n3050/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_25/fi-bsw-n3050/igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions-varying-size.html

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_26/fi-bsw-n3050/igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions-varying-size.html

(kms_cursor_legacy:1654) CRITICAL: Test assertion failure function flip, file ../tests/kms_cursor_legacy.c:420:
(kms_cursor_legacy:1654) CRITICAL: Failed assertion: igt_ioctl((display->drm_fd), ((((2U|1U) << (((0+8)+8)+14)) | ((('d')) << (0+8)) | (((0xA3)) << 0) | ((((sizeof(struct drm_mode_cursor)))) << ((0+8)+8)))), (&arg[(count & 64)/64])) == 0
(kms_cursor_legacy:1654) CRITICAL: Last errno: 22, Invalid argument
(kms_cursor_legacy:1654) CRITICAL: error: -1 != 0
Subtest cursorA-vs-flipA-atomic-transitions-varying-size failed.
Comment 1 Martin Peres 2018-06-15 09:00:34 UTC
No new failure since, closing!
Comment 2 Jani Saarinen 2018-06-19 14:25:55 UTC
Closing, thanks.
Comment 3 Martin Peres 2018-06-20 07:50:46 UTC
Seen again!

https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_67/fi-bsw-n3050/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

(kms_cursor_legacy:1491) CRITICAL: Test assertion failure function flip_vs_cursor, file ../tests/kms_cursor_legacy.c:717:
(kms_cursor_legacy:1491) CRITICAL: Failed assertion: igt_ioctl((display->drm_fd), ((((2U|1U) << (((0+8)+8)+14)) | ((('d')) << (0+8)) | (((0xA3)) << 0) | ((((sizeof(struct drm_mode_cursor)))) << ((0+8)+8)))), (&arg[nloops & 1])) == 0
(kms_cursor_legacy:1491) CRITICAL: Last errno: 22, Invalid argument
(kms_cursor_legacy:1491) CRITICAL: error: -1 != 0
Subtest flip-vs-cursor-varying-size failed.
Comment 4 Martin Peres 2018-07-24 13:32:31 UTC
https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_77/fi-bsw-n3050/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

(kms_cursor_legacy:2594) CRITICAL: Test assertion failure function flip_vs_cursor, file ../tests/kms_cursor_legacy.c:717:
(kms_cursor_legacy:2594) CRITICAL: Failed assertion: igt_ioctl((display->drm_fd), ((((2U|1U) << (((0+8)+8)+14)) | ((('d')) << (0+8)) | (((0xA3)) << 0) | ((((sizeof(struct drm_mode_cursor)))) << ((0+8)+8)))), (&arg[nloops & 1])) == 0
(kms_cursor_legacy:2594) CRITICAL: Last errno: 22, Invalid argument
(kms_cursor_legacy:2594) CRITICAL: error: -1 != 0
Subtest flip-vs-cursor-varying-size failed.
Comment 5 Martin Peres 2018-09-03 08:53:16 UTC
https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_93/fi-bsw-n3050/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

(kms_cursor_legacy:1859) CRITICAL: Test assertion failure function flip_vs_cursor, file ../tests/kms_cursor_legacy.c:718:
(kms_cursor_legacy:1859) CRITICAL: Failed assertion: igt_ioctl((display->drm_fd), ((((2U|1U) << (((0+8)+8)+14)) | ((('d')) << (0+8)) | (((0xA3)) << 0) | ((((sizeof(struct drm_mode_cursor)))) << ((0+8)+8)))), (&arg[nloops & 1])) == 0
(kms_cursor_legacy:1859) CRITICAL: Last errno: 22, Invalid argument
(kms_cursor_legacy:1859) CRITICAL: error: -1 != 0
Subtest flip-vs-cursor-atomic-transitions-varying-size failed.
Comment 7 Matt Roper 2019-09-20 00:33:07 UTC
The failures here are because the DRM_IOCTL_MODE_CURSOR is being rejected by the kernel because the pipe C cursor is straddling the left edge of the CRTC.  Although that would usually okay (planes will be clipped if partially offscreen), this causes hardware failures on CHV pipe C so we prohibit it in that specific case.

Interestingly, I don't see anywhere in this test where we actually try to position the cursor partially offscreen.  Also, positioning the cursor partially offscreen should fail every time, whereas the behavior here seems random (but only in the 'varying size' subtests).  There may be a bug in the test somewhere (e.g., a buffer overflow or uninitialized field that results in different random/wrong values being used as the cursor x coordinate) or there may be a kernel bug causing us to corrupt the cursor's coordinates when we're changing the cursor size.

The next step for debugging would probably be to check and see what coordinates actually are being requested in the cases where this fails so that we can figure out if we have a consistent logic error somewhere or whether there's some random memory corruption going on (either in the test or in the driver).
Comment 8 Martin Peres 2019-11-29 17:46:31 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/drm/intel/issues/112.

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.