[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/pll: Centralize PLL_ENABLE register lookup
== Series Details == Series: drm/i915/pll: Centralize PLL_ENABLE register lookup URL : https://patchwork.freedesktop.org/series/81150/ State : failure == Summary == CI Bug Log - changes from CI_DRM_8938_full -> Patchwork_18421_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_18421_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_18421_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_18421_full: ### IGT changes ### Possible regressions * igt@kms_cursor_legacy@flip-vs-cursor-toggle: - shard-hsw: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-hsw6/igt@kms_cursor_leg...@flip-vs-cursor-toggle.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-hsw1/igt@kms_cursor_leg...@flip-vs-cursor-toggle.html * igt@kms_flip@flip-vs-suspend-interruptible@c-edp1: - shard-iclb: [PASS][3] -> [INCOMPLETE][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-iclb8/igt@kms_flip@flip-vs-suspend-interrupti...@c-edp1.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-iclb3/igt@kms_flip@flip-vs-suspend-interrupti...@c-edp1.html Warnings * igt@i915_suspend@fence-restore-tiled2untiled: - shard-kbl: [INCOMPLETE][5] ([i915#155]) -> [INCOMPLETE][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl4/igt@i915_susp...@fence-restore-tiled2untiled.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-kbl2/igt@i915_susp...@fence-restore-tiled2untiled.html Known issues Here are the changes found in Patchwork_18421_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_whisper@basic-contexts-all: - shard-apl: [PASS][7] -> [TIMEOUT][8] ([i915#1635] / [i915#1958]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl1/igt@gem_exec_whis...@basic-contexts-all.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-apl6/igt@gem_exec_whis...@basic-contexts-all.html * igt@gem_exec_whisper@basic-forked: - shard-iclb: [PASS][9] -> [TIMEOUT][10] ([i915#1958]) +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-iclb1/igt@gem_exec_whis...@basic-forked.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-iclb1/igt@gem_exec_whis...@basic-forked.html * igt@gem_exec_whisper@basic-normal: - shard-kbl: [PASS][11] -> [TIMEOUT][12] ([i915#1958]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl2/igt@gem_exec_whis...@basic-normal.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-kbl4/igt@gem_exec_whis...@basic-normal.html * igt@gem_exec_whisper@basic-queues-priority: - shard-glk: [PASS][13] -> [TIMEOUT][14] ([i915#1958]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk3/igt@gem_exec_whis...@basic-queues-priority.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-glk8/igt@gem_exec_whis...@basic-queues-priority.html * igt@gem_sync@basic-store-all: - shard-apl: [PASS][15] -> [FAIL][16] ([i915#1635] / [i915#2356]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl2/igt@gem_s...@basic-store-all.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-apl4/igt@gem_s...@basic-store-all.html * igt@kms_color@pipe-c-ctm-0-25: - shard-skl: [PASS][17] -> [DMESG-WARN][18] ([i915#1982]) +8 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-skl3/igt@kms_co...@pipe-c-ctm-0-25.html * igt@kms_flip@2x-flip-vs-wf_vblank@ab-vga1-hdmi-a1: - shard-hsw: [PASS][19] -> [DMESG-WARN][20] ([i915#1982]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-hsw2/igt@kms_flip@2x-flip-vs-wf_vbl...@ab-vga1-hdmi-a1.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/shard-hsw6/igt@kms_flip@2x-flip-vs-wf_vbl...@ab-vga1-hdmi-a1.html * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt: - shard-iclb: [PASS][21] -> [DMESG-WARN][22] ([i915#1982]) +1 similar issue [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-iclb6/igt@kms_frontbuffer_track...@fbc-1p-offscren-pri-shrfb-draw-blt.html [22]:
Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
@Souza, Jose Thanks for filing the bug. I have done all necessary changes in CI bug log. All good with the patch series now. Lakshmi. -Original Message- From: Souza, Jose Sent: Friday, August 28, 2020 6:02 PM To: natechancel...@gmail.com; intel-gfx@lists.freedesktop.org; Vudum, Lakshminarayana Subject: Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2) On Fri, 2020-08-28 at 22:41 +, Patchwork wrote: > Patch Details > Series: drm/i915/display: Ensure that ret is always initialized in > icl_combo_phy_verify_state (rev2) > URL: https://patchwork.freedesktop.org/series/79536/ > State:failure > Details: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/index.html > CI Bug Log - changes from CI_DRM_8938_full -> Patchwork_18420_full > Summary FAILURE > > Serious unknown changes coming with Patchwork_18420_full absolutely > need to be verified manually. > > If you think the reported changes have nothing to do with the changes > introduced in Patchwork_18420_full, please notify your bug team to > allow them to document this new failure mode, which will reduce false > positives in CI. > > Possible new issues > Here are the unknown changes that may have been introduced in > Patchwork_18420_full: > > IGT changes > Possible regressions > igt@i915_pm_rpm@i2c: > > shard-tglb: PASS -> DMESG-WARN +97 similar issues This issue was not caused by this patch but it was introduced by "drm/i915/display: Implement new combo phy initialization step", so pushing this patch that fix the not initialized variable and I have opened assigned to me a issue to fix the root cause. https://gitlab.freedesktop.org/drm/intel/-/issues/2411 Lakshminarayana: do I need to do anything to tie this gitlab issue to the CI error? Thanks for the patch Nathan. > igt@runner@aborted: > > shard-snb: NOTRUN -> FAIL > Known issues > Here are the changes found in Patchwork_18420_full that come from known > issues: > > IGT changes > Issues hit > igt@gem_ctx_persistence@legacy-engines-mixed-process@blt: > > shard-skl: PASS -> FAIL (i915#2374) > igt@gem_exec_reloc@basic-concurrent0: > > shard-apl: PASS -> TIMEOUT (i915#1635 / i915#1958) > igt@gem_exec_whisper@basic-contexts-all: > > shard-glk: PASS -> TIMEOUT (i915#1958) +3 similar issues > igt@gem_exec_whisper@basic-fds-priority-all: > > shard-glk: PASS -> DMESG-WARN (i915#118 / i915#95) > igt@gem_exec_whisper@basic-queues: > > shard-kbl: PASS -> TIMEOUT (i915#1958) +2 similar issues > igt@gem_sync@basic-store-all: > > shard-apl: PASS -> FAIL (i915#1635 / i915#2356) > igt@i915_selftest@mock@contexts: > > shard-skl: PASS -> INCOMPLETE (i915#198 / i915#2278) > igt@kms_color@pipe-c-ctm-0-25: > > shard-skl: PASS -> DMESG-WARN (i915#1982) +6 similar issues > igt@kms_cursor_crc@pipe-b-cursor-128x128-onscreen: > > shard-kbl: PASS -> FAIL (i915#54) > igt@kms_cursor_legacy@cursor-vs-flip-toggle: > > shard-hsw: PASS -> FAIL (i915#2370) > igt@kms_flip@flip-vs-expired-vblank@b-dp1: > > shard-apl: PASS -> FAIL (i915#1635 / i915#79) > igt@kms_flip@flip-vs-suspend-interruptible@c-edp1: > > shard-skl: PASS -> INCOMPLETE (i915#198) > igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt: > > shard-tglb: PASS -> DMESG-WARN (i915#1982) +2 similar issues > igt@kms_plane@plane-panning-bottom-right-pipe-a-planes: > > shard-glk: PASS -> FAIL (i915#1036) > igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes: > > shard-glk: PASS -> DMESG-WARN (i915#1982) > igt@kms_plane_cursor@pipe-b-primary-size-64: > > shard-apl: PASS -> DMESG-WARN (i915#1635 / i915#1982) > igt@kms_psr@psr2_sprite_blt: > > shard-iclb: PASS -> SKIP (fdo#109441) +1 similar issue > igt@kms_vblank@pipe-a-ts-continuation-suspend: > > shard-kbl: PASS -> DMESG-WARN (i915#180) +12 similar issues > igt@perf@polling-small-buf: > > shard-skl: PASS -> FAIL (i915#1722) > Possible fixes > igt@gem_ctx_persistence@legacy-engines-mixed-process@bsd: > > shard-apl: FAIL (i915#1635 / i915#2374) -> PASS > igt@gem_exec_gttfill@all: > > shard-kbl: TIMEOUT (i915#1958) -> PASS > igt@gem_exec_whisper@basic-forked: > > shard-apl: TIMEOUT (i915#1635 / i915#1958) -> PASS +1 similar issue > igt@gem_exec_whisper@basic-queues: > > shard-tglb: TIMEOUT (i915#1958) -> PASS > igt@gem_partial_pwrite_pread@reads-display: > > shard-glk: FAIL (i915#2261) -> PASS +1 similar issue > igt@gem_render_copy@yf-tiled-ccs-to-y-tiled: > > shard-skl: DMESG-WARN (i915#1982) -> PASS +7 similar issues > igt@i915_pm_dc@dc6-psr: > > shard-skl: FAIL (i915#454) -> PASS > igt@kms_big_fb@y-tiled-64bpp-rotate-180: > > shard-glk: DMESG-FAIL (i915#118 / i915#95) -> PASS +1 similar issue > igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy: > > shard-hsw: FAIL (i915#96) -> PASS > igt@kms_flip@2x-flip-vs-expired-vblank@bc-vga1-hdmi-a1: > > shard-hsw: FAIL (i915#2122) -> PASS >
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
== Series Details == Series: drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2) URL : https://patchwork.freedesktop.org/series/79536/ State : success == Summary == CI Bug Log - changes from CI_DRM_8938_full -> Patchwork_18420_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_18420_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_persistence@legacy-engines-mixed-process@blt: - shard-skl: [PASS][1] -> [FAIL][2] ([i915#2374]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html * igt@gem_exec_reloc@basic-concurrent0: - shard-apl: [PASS][3] -> [TIMEOUT][4] ([i915#1635] / [i915#1958]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl7/igt@gem_exec_re...@basic-concurrent0.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl6/igt@gem_exec_re...@basic-concurrent0.html * igt@gem_exec_whisper@basic-contexts-all: - shard-glk: [PASS][5] -> [TIMEOUT][6] ([i915#1958]) +3 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk1/igt@gem_exec_whis...@basic-contexts-all.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-glk4/igt@gem_exec_whis...@basic-contexts-all.html * igt@gem_exec_whisper@basic-fds-priority-all: - shard-glk: [PASS][7] -> [DMESG-WARN][8] ([i915#118] / [i915#95]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk8/igt@gem_exec_whis...@basic-fds-priority-all.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-glk1/igt@gem_exec_whis...@basic-fds-priority-all.html * igt@gem_exec_whisper@basic-queues: - shard-kbl: [PASS][9] -> [TIMEOUT][10] ([i915#1958]) +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl2/igt@gem_exec_whis...@basic-queues.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-kbl1/igt@gem_exec_whis...@basic-queues.html * igt@gem_sync@basic-store-all: - shard-apl: [PASS][11] -> [FAIL][12] ([i915#1635] / [i915#2356]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl2/igt@gem_s...@basic-store-all.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl7/igt@gem_s...@basic-store-all.html * igt@i915_pm_rpm@i2c: - shard-tglb: [PASS][13] -> [DMESG-WARN][14] ([i915#2411]) +97 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-tglb5/igt@i915_pm_...@i2c.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-tglb2/igt@i915_pm_...@i2c.html * igt@i915_selftest@mock@contexts: - shard-skl: [PASS][15] -> [INCOMPLETE][16] ([i915#198] / [i915#2278]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@i915_selftest@m...@contexts.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl7/igt@i915_selftest@m...@contexts.html * igt@kms_color@pipe-c-ctm-0-25: - shard-skl: [PASS][17] -> [DMESG-WARN][18] ([i915#1982]) +6 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html * igt@kms_cursor_crc@pipe-b-cursor-128x128-onscreen: - shard-kbl: [PASS][19] -> [FAIL][20] ([i915#54]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl4/igt@kms_cursor_...@pipe-b-cursor-128x128-onscreen.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-kbl1/igt@kms_cursor_...@pipe-b-cursor-128x128-onscreen.html * igt@kms_cursor_legacy@cursor-vs-flip-toggle: - shard-hsw: [PASS][21] -> [FAIL][22] ([i915#2370]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-hsw2/igt@kms_cursor_leg...@cursor-vs-flip-toggle.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-hsw6/igt@kms_cursor_leg...@cursor-vs-flip-toggle.html * igt@kms_flip@flip-vs-expired-vblank@b-dp1: - shard-apl: [PASS][23] -> [FAIL][24] ([i915#1635] / [i915#79]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl7/igt@kms_flip@flip-vs-expired-vbl...@b-dp1.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl6/igt@kms_flip@flip-vs-expired-vbl...@b-dp1.html * igt@kms_flip@flip-vs-suspend-interruptible@c-edp1: - shard-skl: [PASS][25] -> [INCOMPLETE][26]
[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
== Series Details == Series: drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2) URL : https://patchwork.freedesktop.org/series/79536/ State : failure == Summary == CI Bug Log - changes from CI_DRM_8938_full -> Patchwork_18420_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_18420_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_18420_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_18420_full: ### IGT changes ### Possible regressions * igt@gem_ctx_isolation@preservation-s3@bcs0: - shard-tglb: [PASS][1] -> [DMESG-WARN][2] +96 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-tglb2/igt@gem_ctx_isolation@preservation...@bcs0.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-tglb8/igt@gem_ctx_isolation@preservation...@bcs0.html Known issues Here are the changes found in Patchwork_18420_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_persistence@legacy-engines-mixed-process@blt: - shard-skl: [PASS][3] -> [FAIL][4] ([i915#2374]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html * igt@gem_exec_reloc@basic-concurrent0: - shard-apl: [PASS][5] -> [TIMEOUT][6] ([i915#1635] / [i915#1958]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl7/igt@gem_exec_re...@basic-concurrent0.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl6/igt@gem_exec_re...@basic-concurrent0.html * igt@gem_exec_whisper@basic-contexts-all: - shard-glk: [PASS][7] -> [TIMEOUT][8] ([i915#1958]) +3 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk1/igt@gem_exec_whis...@basic-contexts-all.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-glk4/igt@gem_exec_whis...@basic-contexts-all.html * igt@gem_exec_whisper@basic-fds-priority-all: - shard-glk: [PASS][9] -> [DMESG-WARN][10] ([i915#118] / [i915#95]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk8/igt@gem_exec_whis...@basic-fds-priority-all.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-glk1/igt@gem_exec_whis...@basic-fds-priority-all.html * igt@gem_exec_whisper@basic-queues: - shard-kbl: [PASS][11] -> [TIMEOUT][12] ([i915#1958]) +2 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl2/igt@gem_exec_whis...@basic-queues.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-kbl1/igt@gem_exec_whis...@basic-queues.html * igt@gem_sync@basic-store-all: - shard-apl: [PASS][13] -> [FAIL][14] ([i915#1635] / [i915#2356]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl2/igt@gem_s...@basic-store-all.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl7/igt@gem_s...@basic-store-all.html * igt@i915_pm_rpm@i2c: - shard-tglb: [PASS][15] -> [DMESG-WARN][16] ([i915#2411]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-tglb5/igt@i915_pm_...@i2c.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-tglb2/igt@i915_pm_...@i2c.html * igt@i915_selftest@mock@contexts: - shard-skl: [PASS][17] -> [INCOMPLETE][18] ([i915#198] / [i915#2278]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@i915_selftest@m...@contexts.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl7/igt@i915_selftest@m...@contexts.html * igt@kms_color@pipe-c-ctm-0-25: - shard-skl: [PASS][19] -> [DMESG-WARN][20] ([i915#1982]) +6 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html * igt@kms_cursor_crc@pipe-b-cursor-128x128-onscreen: - shard-kbl: [PASS][21] -> [FAIL][22] ([i915#54]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl4/igt@kms_cursor_...@pipe-b-cursor-128x128-onscreen.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-kbl1/igt@kms_cursor_...@pipe-b-cursor-128x128-onscreen.html *
Re: [Intel-gfx] [PATCH] drm/i915/display: fix uninitialized variable
Just merged the first patch that fixed this issue, thanks anyways. 2034c2129bc4a91d471815d4dc7a2a69eaa5338d - drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state On Tue, 2020-08-25 at 16:20 -0700, t...@redhat.com wrote: > From: Tom Rix < > t...@redhat.com > > > > clang static analysis flags this error > > intel_combo_phy.c:268:7: warning: The left expression of the > compound assignment is an uninitialized value. > The computed value will also be garbage > ret &= check_phy_reg(... > ~~~ ^ > > ret has no initial values, in icl_combo_phy_verify_state() ret is > set by the next statment and then updated by similar &= logic. > > Because the check_phy_req() are only register reads, reorder the > statements. > > Fixes: 239bef676d8e ("drm/i915/display: Implement new combo phy > initialization step") > Signed-off-by: Tom Rix < > t...@redhat.com > > > --- > drivers/gpu/drm/i915/display/intel_combo_phy.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_combo_phy.c > b/drivers/gpu/drm/i915/display/intel_combo_phy.c > index 6968de4f3477..7622ef66c987 100644 > --- a/drivers/gpu/drm/i915/display/intel_combo_phy.c > +++ b/drivers/gpu/drm/i915/display/intel_combo_phy.c > @@ -264,6 +264,8 @@ static bool icl_combo_phy_verify_state(struct > drm_i915_private *dev_priv, > if (!icl_combo_phy_enabled(dev_priv, phy)) > return false; > > + ret = cnl_verify_procmon_ref_values(dev_priv, phy); > + > if (INTEL_GEN(dev_priv) >= 12) { > ret &= check_phy_reg(dev_priv, phy, ICL_PORT_TX_DW8_LN0(phy), >ICL_PORT_TX_DW8_ODCC_CLK_SEL | > @@ -276,8 +278,6 @@ static bool icl_combo_phy_verify_state(struct > drm_i915_private *dev_priv, >DCC_MODE_SELECT_CONTINUOSLY); > } > > - ret = cnl_verify_procmon_ref_values(dev_priv, phy); > - > if (phy_is_master(dev_priv, phy)) { > ret &= check_phy_reg(dev_priv, phy, ICL_PORT_COMP_DW8(phy), >IREFGEN, IREFGEN); > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
On Fri, 2020-08-28 at 22:41 +, Patchwork wrote: > Patch Details > Series: drm/i915/display: Ensure that ret is always initialized in > icl_combo_phy_verify_state (rev2) > URL: https://patchwork.freedesktop.org/series/79536/ > State:failure > Details: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/index.html > CI Bug Log - changes from CI_DRM_8938_full -> Patchwork_18420_full > Summary > FAILURE > > Serious unknown changes coming with Patchwork_18420_full absolutely need to be > verified manually. > > If you think the reported changes have nothing to do with the changes > introduced in Patchwork_18420_full, please notify your bug team to allow them > to document this new failure mode, which will reduce false positives in CI. > > Possible new issues > Here are the unknown changes that may have been introduced in > Patchwork_18420_full: > > IGT changes > Possible regressions > igt@i915_pm_rpm@i2c: > > shard-tglb: PASS -> DMESG-WARN +97 similar issues This issue was not caused by this patch but it was introduced by "drm/i915/display: Implement new combo phy initialization step", so pushing this patch that fix the not initialized variable and I have opened assigned to me a issue to fix the root cause. https://gitlab.freedesktop.org/drm/intel/-/issues/2411 Lakshminarayana: do I need to do anything to tie this gitlab issue to the CI error? Thanks for the patch Nathan. > igt@runner@aborted: > > shard-snb: NOTRUN -> FAIL > Known issues > Here are the changes found in Patchwork_18420_full that come from known > issues: > > IGT changes > Issues hit > igt@gem_ctx_persistence@legacy-engines-mixed-process@blt: > > shard-skl: PASS -> FAIL (i915#2374) > igt@gem_exec_reloc@basic-concurrent0: > > shard-apl: PASS -> TIMEOUT (i915#1635 / i915#1958) > igt@gem_exec_whisper@basic-contexts-all: > > shard-glk: PASS -> TIMEOUT (i915#1958) +3 similar issues > igt@gem_exec_whisper@basic-fds-priority-all: > > shard-glk: PASS -> DMESG-WARN (i915#118 / i915#95) > igt@gem_exec_whisper@basic-queues: > > shard-kbl: PASS -> TIMEOUT (i915#1958) +2 similar issues > igt@gem_sync@basic-store-all: > > shard-apl: PASS -> FAIL (i915#1635 / i915#2356) > igt@i915_selftest@mock@contexts: > > shard-skl: PASS -> INCOMPLETE (i915#198 / i915#2278) > igt@kms_color@pipe-c-ctm-0-25: > > shard-skl: PASS -> DMESG-WARN (i915#1982) +6 similar issues > igt@kms_cursor_crc@pipe-b-cursor-128x128-onscreen: > > shard-kbl: PASS -> FAIL (i915#54) > igt@kms_cursor_legacy@cursor-vs-flip-toggle: > > shard-hsw: PASS -> FAIL (i915#2370) > igt@kms_flip@flip-vs-expired-vblank@b-dp1: > > shard-apl: PASS -> FAIL (i915#1635 / i915#79) > igt@kms_flip@flip-vs-suspend-interruptible@c-edp1: > > shard-skl: PASS -> INCOMPLETE (i915#198) > igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt: > > shard-tglb: PASS -> DMESG-WARN (i915#1982) +2 similar issues > igt@kms_plane@plane-panning-bottom-right-pipe-a-planes: > > shard-glk: PASS -> FAIL (i915#1036) > igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes: > > shard-glk: PASS -> DMESG-WARN (i915#1982) > igt@kms_plane_cursor@pipe-b-primary-size-64: > > shard-apl: PASS -> DMESG-WARN (i915#1635 / i915#1982) > igt@kms_psr@psr2_sprite_blt: > > shard-iclb: PASS -> SKIP (fdo#109441) +1 similar issue > igt@kms_vblank@pipe-a-ts-continuation-suspend: > > shard-kbl: PASS -> DMESG-WARN (i915#180) +12 similar issues > igt@perf@polling-small-buf: > > shard-skl: PASS -> FAIL (i915#1722) > Possible fixes > igt@gem_ctx_persistence@legacy-engines-mixed-process@bsd: > > shard-apl: FAIL (i915#1635 / i915#2374) -> PASS > igt@gem_exec_gttfill@all: > > shard-kbl: TIMEOUT (i915#1958) -> PASS > igt@gem_exec_whisper@basic-forked: > > shard-apl: TIMEOUT (i915#1635 / i915#1958) -> PASS +1 similar issue > igt@gem_exec_whisper@basic-queues: > > shard-tglb: TIMEOUT (i915#1958) -> PASS > igt@gem_partial_pwrite_pread@reads-display: > > shard-glk: FAIL (i915#2261) -> PASS +1 similar issue > igt@gem_render_copy@yf-tiled-ccs-to-y-tiled: > > shard-skl: DMESG-WARN (i915#1982) -> PASS +7 similar issues > igt@i915_pm_dc@dc6-psr: > > shard-skl: FAIL (i915#454) -> PASS > igt@kms_big_fb@y-tiled-64bpp-rotate-180: > > shard-glk: DMESG-FAIL (i915#118 / i915#95) -> PASS +1 similar issue > igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy: > > shard-hsw: FAIL (i915#96) -> PASS > igt@kms_flip@2x-flip-vs-expired-vblank@bc-vga1-hdmi-a1: > > shard-hsw: FAIL (i915#2122) -> PASS > igt@kms_flip@dpms-vs-vblank-race-interruptible@a-dp1: > > shard-kbl: DMESG-WARN (i915#1982) -> PASS > igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1: > > shard-glk: FAIL (i915#2122) -> PASS > igt@kms_flip@flip-vs-suspend-interruptible@a-dp1: > > shard-kbl: DMESG-WARN (i915#180) -> PASS > igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite: > > shard-tglb: DMESG-WARN (i915#1982) -> PASS +2 similar issues > igt@kms_hdr@bpc-switch-suspend: > > shard-skl: FAIL (i915#1188) -> PASS >
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/pll: Centralize PLL_ENABLE register lookup
== Series Details == Series: drm/i915/pll: Centralize PLL_ENABLE register lookup URL : https://patchwork.freedesktop.org/series/81150/ State : success == Summary == CI Bug Log - changes from CI_DRM_8938 -> Patchwork_18421 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/index.html Known issues Here are the changes found in Patchwork_18421 that come from known issues: ### IGT changes ### Possible fixes * igt@debugfs_test@read_all_entries: - fi-icl-u2: [DMESG-WARN][1] ([i915#289]) -> [PASS][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-icl-u2/igt@debugfs_test@read_all_entries.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/fi-icl-u2/igt@debugfs_test@read_all_entries.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic: - {fi-kbl-7560u}: [DMESG-WARN][3] ([i915#1982]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-kbl-7560u/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/fi-kbl-7560u/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html * igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1: - fi-icl-u2: [DMESG-WARN][5] ([i915#1982]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vbl...@c-edp1.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vbl...@c-edp1.html Warnings * igt@i915_pm_rpm@module-reload: - fi-kbl-x1275: [DMESG-FAIL][7] ([i915#62]) -> [DMESG-FAIL][8] ([i915#62] / [i915#95]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-kbl-x1275/igt@i915_pm_...@module-reload.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/fi-kbl-x1275/igt@i915_pm_...@module-reload.html * igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1: - fi-kbl-x1275: [DMESG-WARN][9] ([i915#62] / [i915#92]) -> [DMESG-WARN][10] ([i915#62] / [i915#92] / [i915#95]) +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-wf_vbl...@a-dp1.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-wf_vbl...@a-dp1.html * igt@kms_force_connector_basic@force-edid: - fi-kbl-x1275: [DMESG-WARN][11] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][12] ([i915#62] / [i915#92]) +4 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#289]: https://gitlab.freedesktop.org/drm/intel/issues/289 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (38 -> 34) -- Additional (1): fi-bwr-2160 Missing(5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper Build changes - * Linux: CI_DRM_8938 -> Patchwork_18421 CI-20190529: 20190529 CI_DRM_8938: 24847b4c8a388892d2ad0a24f143abfd20cdec19 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_18421: 9b03add535d52e2c72e75accfd285ffc885934ac @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 9b03add535d5 drm/i915/pll: Centralize PLL_ENABLE register lookup == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18421/index.html ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
== Series Details == Series: drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2) URL : https://patchwork.freedesktop.org/series/79536/ State : failure == Summary == CI Bug Log - changes from CI_DRM_8938_full -> Patchwork_18420_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_18420_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_18420_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_18420_full: ### IGT changes ### Possible regressions * igt@i915_pm_rpm@i2c: - shard-tglb: [PASS][1] -> [DMESG-WARN][2] +97 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-tglb5/igt@i915_pm_...@i2c.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-tglb2/igt@i915_pm_...@i2c.html * igt@runner@aborted: - shard-snb: NOTRUN -> [FAIL][3] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-snb5/igt@run...@aborted.html Known issues Here are the changes found in Patchwork_18420_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_persistence@legacy-engines-mixed-process@blt: - shard-skl: [PASS][4] -> [FAIL][5] ([i915#2374]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html * igt@gem_exec_reloc@basic-concurrent0: - shard-apl: [PASS][6] -> [TIMEOUT][7] ([i915#1635] / [i915#1958]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl7/igt@gem_exec_re...@basic-concurrent0.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl6/igt@gem_exec_re...@basic-concurrent0.html * igt@gem_exec_whisper@basic-contexts-all: - shard-glk: [PASS][8] -> [TIMEOUT][9] ([i915#1958]) +3 similar issues [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk1/igt@gem_exec_whis...@basic-contexts-all.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-glk4/igt@gem_exec_whis...@basic-contexts-all.html * igt@gem_exec_whisper@basic-fds-priority-all: - shard-glk: [PASS][10] -> [DMESG-WARN][11] ([i915#118] / [i915#95]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-glk8/igt@gem_exec_whis...@basic-fds-priority-all.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-glk1/igt@gem_exec_whis...@basic-fds-priority-all.html * igt@gem_exec_whisper@basic-queues: - shard-kbl: [PASS][12] -> [TIMEOUT][13] ([i915#1958]) +2 similar issues [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl2/igt@gem_exec_whis...@basic-queues.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-kbl1/igt@gem_exec_whis...@basic-queues.html * igt@gem_sync@basic-store-all: - shard-apl: [PASS][14] -> [FAIL][15] ([i915#1635] / [i915#2356]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-apl2/igt@gem_s...@basic-store-all.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-apl7/igt@gem_s...@basic-store-all.html * igt@i915_selftest@mock@contexts: - shard-skl: [PASS][16] -> [INCOMPLETE][17] ([i915#198] / [i915#2278]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@i915_selftest@m...@contexts.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl7/igt@i915_selftest@m...@contexts.html * igt@kms_color@pipe-c-ctm-0-25: - shard-skl: [PASS][18] -> [DMESG-WARN][19] ([i915#1982]) +6 similar issues [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-skl9/igt@kms_co...@pipe-c-ctm-0-25.html * igt@kms_cursor_crc@pipe-b-cursor-128x128-onscreen: - shard-kbl: [PASS][20] -> [FAIL][21] ([i915#54]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/shard-kbl4/igt@kms_cursor_...@pipe-b-cursor-128x128-onscreen.html [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/shard-kbl1/igt@kms_cursor_...@pipe-b-cursor-128x128-onscreen.html * igt@kms_cursor_legacy@cursor-vs-flip-toggle: - shard-hsw: [PASS][22] -> [FAIL][23] ([i915#2370]) [22]:
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/pll: Centralize PLL_ENABLE register lookup
== Series Details == Series: drm/i915/pll: Centralize PLL_ENABLE register lookup URL : https://patchwork.freedesktop.org/series/81150/ State : warning == Summary == $ dim checkpatch origin/drm-tip 9b03add535d5 drm/i915/pll: Centralize PLL_ENABLE register lookup -:26: CHECK:BRACES: Blank lines aren't necessary after an open brace '{' #26: FILE: drivers/gpu/drm/i915/display/intel_dpll_mgr.c:154: +{ + -:34: CHECK:LINE_SPACING: Please don't use multiple blank lines #34: FILE: drivers/gpu/drm/i915/display/intel_dpll_mgr.c:162: + + -:35: CHECK:BRACES: Blank lines aren't necessary before a close brace '}' #35: FILE: drivers/gpu/drm/i915/display/intel_dpll_mgr.c:163: + +} total: 0 errors, 0 warnings, 3 checks, 57 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915/pll: Centralize PLL_ENABLE register lookup
We currenty check for platform at multiple parts in the driver to grab the correct PLL. Let us begin to centralize it through a helper function. Suggested-by: Matt Roper Cc: Matt Roper Signed-off-by: Anusha Srivatsa --- drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 27 --- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c index 81ab975fe4f0..388136618bb7 100644 --- a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c +++ b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c @@ -147,6 +147,20 @@ void assert_shared_dpll(struct drm_i915_private *dev_priv, pll->info->name, onoff(state), onoff(cur_state)); } +static +i915_reg_t intel_get_pll_enable_reg(struct drm_i915_private *dev_priv, + struct intel_shared_dpll *pll) +{ + + if (IS_ELKHARTLAKE(dev_priv)) { + if (pll->info->id == DPLL_ID_EHL_DPLL4) + return MG_PLL_ENABLE(0); + } + + return CNL_DPLL_ENABLE(pll->info->id); + + +} /** * intel_prepare_shared_dpll - call a dpll's prepare hook * @crtc_state: CRTC, and its state, which has a shared dpll @@ -3842,12 +3856,7 @@ static bool combo_pll_get_hw_state(struct drm_i915_private *dev_priv, struct intel_shared_dpll *pll, struct intel_dpll_hw_state *hw_state) { - i915_reg_t enable_reg = CNL_DPLL_ENABLE(pll->info->id); - - if (IS_ELKHARTLAKE(dev_priv) && - pll->info->id == DPLL_ID_EHL_DPLL4) { - enable_reg = MG_PLL_ENABLE(0); - } + i915_reg_t enable_reg = intel_get_pll_enable_reg(dev_priv, pll); return icl_pll_get_hw_state(dev_priv, pll, hw_state, enable_reg); } @@ -4045,11 +4054,10 @@ static void icl_pll_enable(struct drm_i915_private *dev_priv, static void combo_pll_enable(struct drm_i915_private *dev_priv, struct intel_shared_dpll *pll) { - i915_reg_t enable_reg = CNL_DPLL_ENABLE(pll->info->id); + i915_reg_t enable_reg = intel_get_pll_enable_reg(dev_priv, pll); if (IS_ELKHARTLAKE(dev_priv) && pll->info->id == DPLL_ID_EHL_DPLL4) { - enable_reg = MG_PLL_ENABLE(0); /* * We need to disable DC states when this DPLL is enabled. @@ -4157,11 +4165,10 @@ static void icl_pll_disable(struct drm_i915_private *dev_priv, static void combo_pll_disable(struct drm_i915_private *dev_priv, struct intel_shared_dpll *pll) { - i915_reg_t enable_reg = CNL_DPLL_ENABLE(pll->info->id); + i915_reg_t enable_reg = intel_get_pll_enable_reg(dev_priv, pll); if (IS_ELKHARTLAKE(dev_priv) && pll->info->id == DPLL_ID_EHL_DPLL4) { - enable_reg = MG_PLL_ENABLE(0); icl_pll_disable(dev_priv, pll, enable_reg); intel_display_power_put(dev_priv, POWER_DOMAIN_DPLL_DC_OFF, -- 2.25.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
== Series Details == Series: drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2) URL : https://patchwork.freedesktop.org/series/79536/ State : success == Summary == CI Bug Log - changes from CI_DRM_8938 -> Patchwork_18420 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/index.html Known issues Here are the changes found in Patchwork_18420 that come from known issues: ### IGT changes ### Issues hit * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - fi-icl-u2: [PASS][1] -> [DMESG-WARN][2] ([i915#1982]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-icl-u2/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-legacy.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/fi-icl-u2/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-legacy.html Possible fixes * igt@debugfs_test@read_all_entries: - fi-icl-u2: [DMESG-WARN][3] ([i915#289]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-icl-u2/igt@debugfs_test@read_all_entries.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/fi-icl-u2/igt@debugfs_test@read_all_entries.html * igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1: - fi-icl-u2: [DMESG-WARN][5] ([i915#1982]) -> [PASS][6] +1 similar issue [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vbl...@c-edp1.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vbl...@c-edp1.html * igt@kms_flip@basic-flip-vs-wf_vblank@c-hdmi-a2: - fi-skl-guc: [DMESG-WARN][7] ([i915#2203]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-skl-guc/igt@kms_flip@basic-flip-vs-wf_vbl...@c-hdmi-a2.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/fi-skl-guc/igt@kms_flip@basic-flip-vs-wf_vbl...@c-hdmi-a2.html Warnings * igt@kms_force_connector_basic@force-edid: - fi-kbl-x1275: [DMESG-WARN][9] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][10] ([i915#62] / [i915#92]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html * igt@kms_force_connector_basic@prune-stale-modes: - fi-kbl-x1275: [DMESG-WARN][11] ([i915#62] / [i915#92]) -> [DMESG-WARN][12] ([i915#62] / [i915#92] / [i915#95]) +3 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8938/fi-kbl-x1275/igt@kms_force_connector_ba...@prune-stale-modes.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/fi-kbl-x1275/igt@kms_force_connector_ba...@prune-stale-modes.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#2203]: https://gitlab.freedesktop.org/drm/intel/issues/2203 [i915#289]: https://gitlab.freedesktop.org/drm/intel/issues/289 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (38 -> 34) -- Additional (1): fi-bwr-2160 Missing(5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper Build changes - * Linux: CI_DRM_8938 -> Patchwork_18420 CI-20190529: 20190529 CI_DRM_8938: 24847b4c8a388892d2ad0a24f143abfd20cdec19 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_18420: a5e1e06edb8ebc9c20bd36a37a5f781f6a77459a @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == a5e1e06edb8e drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18420/index.html ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2)
== Series Details == Series: drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state (rev2) URL : https://patchwork.freedesktop.org/series/79536/ State : warning == Summary == $ dim checkpatch origin/drm-tip a5e1e06edb8e drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state -:11: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #11: ret &= check_phy_reg(dev_priv, phy, ICL_PORT_TX_DW8_LN0(phy), total: 0 errors, 1 warnings, 0 checks, 16 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH CI] drm/i915/display: Ensure that ret is always initialized in icl_combo_phy_verify_state
From: Nathan Chancellor Clang warns: drivers/gpu/drm/i915/display/intel_combo_phy.c:268:3: warning: variable 'ret' is uninitialized when used here [-Wuninitialized] ret &= check_phy_reg(dev_priv, phy, ICL_PORT_TX_DW8_LN0(phy), ^~~ drivers/gpu/drm/i915/display/intel_combo_phy.c:261:10: note: initialize the variable 'ret' to silence this warning bool ret; ^ = 0 1 warning generated. In practice, the bug this warning appears to be concerned with would not actually matter because ret gets initialized to the return value of cnl_verify_procmon_ref_values. However, that does appear to be a bug since it means the first hunk of the patch this fixes won't actually do anything (since the values of check_phy_reg won't factor into the final ret value). Initialize ret to true then make all of the assignments a bitwise AND with itself so that the function always does what it should do. Fixes: 239bef676d8e ("drm/i915/display: Implement new combo phy initialization step") Link: https://github.com/ClangBuiltLinux/linux/issues/1094 Signed-off-by: Nathan Chancellor Reviewed-by: Matt Roper --- drivers/gpu/drm/i915/display/intel_combo_phy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_combo_phy.c b/drivers/gpu/drm/i915/display/intel_combo_phy.c index eccaa79cb4a9..a4b8aa6d0a9e 100644 --- a/drivers/gpu/drm/i915/display/intel_combo_phy.c +++ b/drivers/gpu/drm/i915/display/intel_combo_phy.c @@ -258,7 +258,7 @@ static bool phy_is_master(struct drm_i915_private *dev_priv, enum phy phy) static bool icl_combo_phy_verify_state(struct drm_i915_private *dev_priv, enum phy phy) { - bool ret; + bool ret = true; u32 expected_val = 0; if (!icl_combo_phy_enabled(dev_priv, phy)) @@ -276,7 +276,7 @@ static bool icl_combo_phy_verify_state(struct drm_i915_private *dev_priv, DCC_MODE_SELECT_CONTINUOSLY); } - ret = cnl_verify_procmon_ref_values(dev_priv, phy); + ret &= cnl_verify_procmon_ref_values(dev_priv, phy); if (phy_is_master(dev_priv, phy)) { ret &= check_phy_reg(dev_priv, phy, ICL_PORT_COMP_DW8(phy), -- 2.28.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: break TGL pci-ids in GT 1 & 2
On Fri, 28 Aug 2020 06:31:25 -0700, Lionel Landwerlin wrote: > > I'll need this in IGT to identify the different kind of GTs and apply > the right performance query configuration. Reviewed-by: Ashutosh Dixit > Signed-off-by: Lionel Landwerlin > --- > include/drm/i915_pciids.h | 14 ++ > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h > index 8e7ae30ebcbb..7eeecb07c9a1 100644 > --- a/include/drm/i915_pciids.h > +++ b/include/drm/i915_pciids.h > @@ -594,19 +594,25 @@ > INTEL_VGA_DEVICE(0x4E51, info) > > /* TGL */ > -#define INTEL_TGL_12_IDS(info) \ > +#define INTEL_TGL_12_GT1_IDS(info) \ > + INTEL_VGA_DEVICE(0x9A60, info), \ > + INTEL_VGA_DEVICE(0x9A68, info), \ > + INTEL_VGA_DEVICE(0x9A70, info) > + > +#define INTEL_TGL_12_GT2_IDS(info) \ > INTEL_VGA_DEVICE(0x9A40, info), \ > INTEL_VGA_DEVICE(0x9A49, info), \ > INTEL_VGA_DEVICE(0x9A59, info), \ > - INTEL_VGA_DEVICE(0x9A60, info), \ > - INTEL_VGA_DEVICE(0x9A68, info), \ > - INTEL_VGA_DEVICE(0x9A70, info), \ > INTEL_VGA_DEVICE(0x9A78, info), \ > INTEL_VGA_DEVICE(0x9AC0, info), \ > INTEL_VGA_DEVICE(0x9AC9, info), \ > INTEL_VGA_DEVICE(0x9AD9, info), \ > INTEL_VGA_DEVICE(0x9AF8, info) > > +#define INTEL_TGL_12_IDS(info) \ > + INTEL_TGL_12_GT1_IDS(info), \ > + INTEL_TGL_12_GT2_IDS(info) > + > /* RKL */ > #define INTEL_RKL_IDS(info) \ > INTEL_VGA_DEVICE(0x4C80, info), \ > -- > 2.28.0 > > ___ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [v3,1/3] drm/i915/display/tgl: Use TGL DP tables for eDP ports without low power support (rev2)
On Thu, 2020-08-27 at 04:54 +, Patchwork wrote: > Patch Details > Series: series starting with [v3,1/3] drm/i915/display/tgl: Use TGL DP > tables for eDP ports without low power support (rev2) > URL: https://patchwork.freedesktop.org/series/81083/ > State:failure > Details: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18414/index.html > CI Bug Log - changes from CI_DRM_8930_full -> Patchwork_18414_full > Summary > FAILURE > > Serious unknown changes coming with Patchwork_18414_full absolutely need to be > verified manually. > > If you think the reported changes have nothing to do with the changes > introduced in Patchwork_18414_full, please notify your bug team to allow them > to document this new failure mode, which will reduce false positives in CI. > > Possible new issues > Here are the unknown changes that may have been introduced in > Patchwork_18414_full: > > IGT changes > Possible regressions > igt@gem_exec_whisper@basic-queues-priority-all: > > shard-iclb: PASS -> INCOMPLETE > igt@i915_pm_rps@waitboost: > > shard-hsw: PASS -> INCOMPLETE Failures not related to this changes. Patches pushed to dinq, thanks for the reviews Matt Roper. > Known issues > Here are the changes found in Patchwork_18414_full that come from known > issues: > > IGT changes > Issues hit > igt@gem_eio@in-flight-contexts-10ms: > > shard-snb: PASS -> INCOMPLETE (i915#82) > igt@gem_exec_reloc@basic-concurrent0: > > shard-glk: PASS -> TIMEOUT (i915#1958) > > shard-kbl: PASS -> TIMEOUT (i915#1958) +1 similar issue > > igt@gem_exec_whisper@basic-fds-forked: > > shard-apl: PASS -> TIMEOUT (i915#1635 / i915#1958) > igt@gem_sync@basic-store-all: > > shard-apl: PASS -> FAIL (i915#1635 / i915#2356) > > shard-glk: PASS -> FAIL (i915#2356) > > igt@gem_tiled_swapping@non-threaded: > > shard-glk: PASS -> TIMEOUT (i915#1521 / i915#1958) > igt@i915_pm_rc6_residency@rc6-fence: > > shard-hsw: PASS -> WARN (i915#1519) > igt@kms_big_fb@y-tiled-64bpp-rotate-0: > > shard-glk: PASS -> DMESG-FAIL (i915#118 / i915#95) > igt@kms_cursor_crc@pipe-a-cursor-suspend: > > shard-kbl: PASS -> DMESG-WARN (i915#180) +5 similar issues > igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy: > > shard-hsw: PASS -> FAIL (i915#96) > igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic: > > shard-glk: PASS -> FAIL (i915#72) > igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1: > > shard-skl: PASS -> FAIL (i915#79) > igt@kms_flip@plain-flip-fb-recreate@c-dp1: > > shard-kbl: PASS -> FAIL (i915#2122) > igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt: > > shard-tglb: PASS -> DMESG-WARN (i915#1982) +5 similar issues > igt@kms_plane@plane-panning-top-left-pipe-c-planes: > > shard-skl: PASS -> DMESG-WARN (i915#1982) +17 similar issues > igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: > > shard-skl: PASS -> FAIL (fdo#108145 / i915#265) +1 similar issue > igt@kms_psr2_su@page_flip: > > shard-iclb: PASS -> SKIP (fdo#109642 / fdo#111068) > igt@kms_psr@no_drrs: > > shard-iclb: PASS -> FAIL (i915#173) > igt@kms_psr@psr2_no_drrs: > > shard-iclb: PASS -> SKIP (fdo#109441) > igt@perf_pmu@module-unload: > > shard-iclb: PASS -> DMESG-WARN (i915#1982) > Possible fixes > igt@gem_ctx_isolation@preservation-s3@bcs0: > > shard-skl: INCOMPLETE (i915#198) -> PASS > igt@gem_exec_parallel@engines@basic: > > shard-tglb: INCOMPLETE (i915#2398) -> PASS > igt@gem_exec_reloc@basic-concurrent0: > > shard-skl: TIMEOUT (i915#1958) -> PASS > igt@gem_exec_whisper@basic-fds-priority-all: > > shard-glk: TIMEOUT (i915#1958) -> PASS +2 similar issues > igt@gem_exec_whisper@basic-forked: > > shard-kbl: TIMEOUT (i915#1958) -> PASS > > shard-apl: TIMEOUT (i915#1635 / i915#1958) -> PASS > > igt@gem_sync@basic-store-all: > > shard-skl: FAIL (i915#2356) -> PASS > igt@gen9_exec_parse@allowed-all: > > shard-apl: DMESG-WARN (i915#1436 / i915#1635 / i915#716) -> PASS > igt@i915_selftest@mock@contexts: > > shard-hsw: INCOMPLETE (i915#2278) -> PASS > > shard-skl: INCOMPLETE (i915#198 / i915#2278) -> PASS > > igt@kms_color@pipe-b-ctm-max: > > shard-skl: FAIL (i915#168) -> PASS > igt@kms_cursor_crc@pipe-a-cursor-suspend: > > shard-apl: INCOMPLETE (i915#1635) -> PASS > igt@kms_cursor_legacy@cursor-vs-flip-varying-size: > > shard-skl: DMESG-WARN (i915#1982) -> PASS +6 similar issues > igt@kms_draw_crc@draw-method-xrgb2101010-blt-xtiled: > > shard-apl: DMESG-WARN (i915#1635 / i915#1982) -> PASS > igt@kms_frontbuffer_tracking@fbc-suspend: > > shard-kbl: DMESG-WARN (i915#180) -> PASS +5 similar issues > igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite: > > shard-tglb: DMESG-WARN (i915#1982) -> PASS > igt@kms_hdr@bpc-switch-dpms: > > shard-skl: FAIL (i915#1188) -> PASS +1 similar issue > igt@kms_plane@plane-position-covered-pipe-b-planes: > > shard-glk: FAIL (i915#247) -> PASS > igt@kms_plane_scaling@pipe-c-scaler-with-clipping-clamping: > > shard-iclb: DMESG-WARN (i915#1982) -> PASS >
Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/tgl: Fix stepping WA matching (rev3)
On Fri, 2020-08-28 at 02:24 +, Patchwork wrote: > Patch Details > Series: drm/i915/tgl: Fix stepping WA matching (rev3) > URL: https://patchwork.freedesktop.org/series/80820/ > State:failure > Details: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18417/index.html > CI Bug Log - changes from CI_DRM_8935_full -> Patchwork_18417_full > Summary > FAILURE > > Serious unknown changes coming with Patchwork_18417_full absolutely need to be > verified manually. > > If you think the reported changes have nothing to do with the changes > introduced in Patchwork_18417_full, please notify your bug team to allow them > to document this new failure mode, which will reduce false positives in CI. > > Possible new issues > Here are the unknown changes that may have been introduced in > Patchwork_18417_full: > > IGT changes > Possible regressions > igt@kms_flip@modeset-vs-vblank-race-interruptible@c-vga1: > shard-hsw: PASS -> INCOMPLETE Failure not related to this changes.Pushed to dinq, thanks for the review Anusha. > Known issues > Here are the changes found in Patchwork_18417_full that come from known > issues: > > IGT changes > Issues hit > igt@gem_ctx_isolation@preservation-s3@bcs0: > > shard-skl: PASS -> INCOMPLETE (i915#198) +1 similar issue > igt@gem_ctx_persistence@engines-mixed-process@rcs0: > > shard-apl: PASS -> FAIL (i915#1635 / i915#2374) > igt@gem_exec_reloc@basic-concurrent0: > > shard-glk: PASS -> TIMEOUT (i915#1958) +1 similar issue > > shard-skl: PASS -> TIMEOUT (i915#1958) > > igt@gem_exec_reloc@basic-concurrent16: > > shard-apl: PASS -> TIMEOUT (i915#1635 / i915#1958) > igt@gem_exec_whisper@basic-contexts-priority: > > shard-kbl: PASS -> TIMEOUT (i915#1958) +1 similar issue > igt@kms_big_fb@y-tiled-8bpp-rotate-180: > > shard-apl: PASS -> DMESG-WARN (i915#1635 / i915#1982) > igt@kms_cursor_edge_walk@pipe-c-128x128-top-edge: > > shard-glk: PASS -> DMESG-WARN (i915#1982) > igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy: > > shard-hsw: PASS -> FAIL (i915#96) > igt@kms_flip@flip-vs-suspend-interruptible@c-dp1: > > shard-kbl: PASS -> DMESG-WARN (i915#180) +1 similar issue > igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary: > > shard-iclb: PASS -> DMESG-WARN (i915#1982) +1 similar issue > igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt: > > shard-skl: PASS -> FAIL (i915#49) > igt@kms_hdr@bpc-switch-dpms: > > shard-kbl: PASS -> FAIL (i915#1188) > igt@kms_plane@plane-panning-bottom-right-pipe-c-planes: > > shard-skl: PASS -> DMESG-WARN (i915#1982) +18 similar issues > igt@kms_plane_alpha_blend@pipe-a-coverage-7efc: > > shard-skl: PASS -> FAIL (fdo#108145 / i915#265) > igt@kms_psr@psr2_sprite_render: > > shard-iclb: PASS -> SKIP (fdo#109441) +2 similar issues > igt@kms_vblank@pipe-b-ts-continuation-suspend: > > shard-kbl: PASS -> INCOMPLETE (i915#155) > igt@perf@blocking-parameterized: > > shard-tglb: PASS -> FAIL (i915#1542) > igt@perf_pmu@module-unload: > > shard-tglb: PASS -> DMESG-WARN (i915#1982) +2 similar issues > Possible fixes > {igt@feature_discovery@psr2}: > > shard-iclb: SKIP (i915#658) -> PASS > igt@gem_exec_parallel@engines@contexts: > > shard-glk: INCOMPLETE (i915#2398) -> PASS > igt@gem_exec_whisper@basic-contexts-forked: > > shard-glk: DMESG-WARN (i915#118 / i915#95) -> PASS > igt@gem_exec_whisper@basic-fds-all: > > shard-tglb: TIMEOUT (i915#1958) -> PASS > igt@gem_exec_whisper@basic-fds-priority: > > shard-iclb: TIMEOUT (i915#1958) -> PASS > igt@gem_exec_whisper@basic-forked-all: > > shard-glk: TIMEOUT (i915#1958) -> PASS +3 similar issues > igt@gem_exec_whisper@basic-queues-forked-all: > > shard-apl: TIMEOUT (i915#1635 / i915#1958) -> PASS +2 similar issues > igt@i915_suspend@sysfs-reader: > > shard-hsw: INCOMPLETE (i915#2055) -> PASS > igt@kms_cursor_crc@pipe-c-cursor-suspend: > > shard-skl: INCOMPLETE (i915#300) -> PASS > igt@kms_cursor_edge_walk@pipe-b-64x64-top-edge: > > shard-glk: DMESG-WARN (i915#1982) -> PASS > igt@kms_flip@blocking-wf_vblank@a-hdmi-a1: > > shard-glk: FAIL (i915#2122) -> PASS > igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render: > > shard-tglb: DMESG-WARN (i915#1982) -> PASS +1 similar issue > igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite: > > shard-kbl: DMESG-WARN (i915#1982) -> PASS > igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff: > > shard-glk: FAIL (i915#49) -> PASS > igt@kms_frontbuffer_tracking@fbc-suspend: > > shard-kbl: DMESG-WARN (i915#180) -> PASS +5 similar issues > igt@kms_hdr@bpc-switch-dpms: > > shard-skl: FAIL (i915#1188) -> PASS +1 similar issue > igt@kms_plane@plane-panning-top-left-pipe-c-planes: > > shard-skl: DMESG-WARN (i915#1982) -> PASS +9 similar issues > igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: > > shard-skl: FAIL (fdo#108145 / i915#265) -> PASS > igt@kms_psr@psr2_sprite_plane_move: > > shard-iclb: SKIP (fdo#109441) -> PASS +4 similar issues > Warnings >
[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: break TGL pci-ids in GT 1 & 2
== Series Details == Series: drm/i915: break TGL pci-ids in GT 1 & 2 URL : https://patchwork.freedesktop.org/series/81144/ State : failure == Summary == CI Bug Log - changes from CI_DRM_8937_full -> Patchwork_18419_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_18419_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_18419_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_18419_full: ### IGT changes ### Possible regressions * igt@kms_flip@modeset-vs-vblank-race-interruptible@b-vga1: - shard-hsw: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-hsw6/igt@kms_flip@modeset-vs-vblank-race-interrupti...@b-vga1.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-hsw6/igt@kms_flip@modeset-vs-vblank-race-interrupti...@b-vga1.html Known issues Here are the changes found in Patchwork_18419_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_reloc@basic-concurrent0: - shard-apl: [PASS][3] -> [TIMEOUT][4] ([i915#1635] / [i915#1958]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-apl8/igt@gem_exec_re...@basic-concurrent0.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-apl4/igt@gem_exec_re...@basic-concurrent0.html * igt@gem_exec_reloc@basic-many-active@rcs0: - shard-apl: [PASS][5] -> [FAIL][6] ([i915#1635] / [i915#2389]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-apl2/igt@gem_exec_reloc@basic-many-act...@rcs0.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-apl1/igt@gem_exec_reloc@basic-many-act...@rcs0.html * igt@gem_exec_whisper@basic-contexts-all: - shard-glk: [PASS][7] -> [TIMEOUT][8] ([i915#1958]) +3 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-glk5/igt@gem_exec_whis...@basic-contexts-all.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-glk4/igt@gem_exec_whis...@basic-contexts-all.html * igt@gem_exec_whisper@basic-contexts-forked: - shard-tglb: [PASS][9] -> [TIMEOUT][10] ([i915#1958]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-tglb1/igt@gem_exec_whis...@basic-contexts-forked.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-tglb1/igt@gem_exec_whis...@basic-contexts-forked.html * igt@gem_exec_whisper@basic-contexts-priority: - shard-iclb: [PASS][11] -> [TIMEOUT][12] ([i915#1958]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-iclb6/igt@gem_exec_whis...@basic-contexts-priority.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-iclb2/igt@gem_exec_whis...@basic-contexts-priority.html * igt@gem_exec_whisper@basic-queues-forked-all: - shard-kbl: [PASS][13] -> [TIMEOUT][14] ([i915#1958]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-kbl7/igt@gem_exec_whis...@basic-queues-forked-all.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-kbl4/igt@gem_exec_whis...@basic-queues-forked-all.html * igt@gem_sync@basic-store-all: - shard-glk: [PASS][15] -> [FAIL][16] ([i915#2356]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-glk4/igt@gem_s...@basic-store-all.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-glk1/igt@gem_s...@basic-store-all.html * igt@gen9_exec_parse@allowed-single: - shard-skl: [PASS][17] -> [DMESG-WARN][18] ([i915#1436] / [i915#716]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-skl10/igt@gen9_exec_pa...@allowed-single.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-skl9/igt@gen9_exec_pa...@allowed-single.html * igt@i915_selftest@mock@contexts: - shard-apl: [PASS][19] -> [INCOMPLETE][20] ([i915#1635] / [i915#2278]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-apl6/igt@i915_selftest@m...@contexts.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/shard-apl2/igt@i915_selftest@m...@contexts.html * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling: - shard-skl: [PASS][21] -> [DMESG-WARN][22] ([i915#1982]) +22 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/shard-skl4/igt@kms_addfb_ba...@addfb25-framebuffer-vs-set-tiling.html [22]:
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: break TGL pci-ids in GT 1 & 2
== Series Details == Series: drm/i915: break TGL pci-ids in GT 1 & 2 URL : https://patchwork.freedesktop.org/series/81144/ State : success == Summary == CI Bug Log - changes from CI_DRM_8937 -> Patchwork_18419 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/index.html Known issues Here are the changes found in Patchwork_18419 that come from known issues: ### IGT changes ### Possible fixes * igt@i915_module_load@reload: - fi-icl-y: [TIMEOUT][1] -> [PASS][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-icl-y/igt@i915_module_l...@reload.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/fi-icl-y/igt@i915_module_l...@reload.html * igt@i915_pm_rpm@module-reload: - fi-icl-y: [SKIP][3] ([i915#579]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-icl-y/igt@i915_pm_...@module-reload.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/fi-icl-y/igt@i915_pm_...@module-reload.html * igt@kms_flip@basic-flip-vs-wf_vblank@c-hdmi-a2: - fi-skl-guc: [DMESG-WARN][5] ([i915#2203]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-skl-guc/igt@kms_flip@basic-flip-vs-wf_vbl...@c-hdmi-a2.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/fi-skl-guc/igt@kms_flip@basic-flip-vs-wf_vbl...@c-hdmi-a2.html Warnings * igt@i915_pm_rpm@basic-pci-d3-state: - fi-kbl-x1275: [DMESG-WARN][7] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][8] ([i915#62] / [i915#92]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-kbl-x1275/igt@i915_pm_...@basic-pci-d3-state.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/fi-kbl-x1275/igt@i915_pm_...@basic-pci-d3-state.html * igt@i915_pm_rpm@module-reload: - fi-kbl-x1275: [DMESG-FAIL][9] ([i915#62]) -> [SKIP][10] ([fdo#109271]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-kbl-x1275/igt@i915_pm_...@module-reload.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/fi-kbl-x1275/igt@i915_pm_...@module-reload.html * igt@kms_force_connector_basic@force-edid: - fi-kbl-x1275: [DMESG-WARN][11] ([i915#62] / [i915#92]) -> [DMESG-WARN][12] ([i915#62] / [i915#92] / [i915#95]) +6 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [i915#2203]: https://gitlab.freedesktop.org/drm/intel/issues/2203 [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (39 -> 34) -- Missing(5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper Build changes - * Linux: CI_DRM_8937 -> Patchwork_18419 CI-20190529: 20190529 CI_DRM_8937: 78b090a913c972368c81f05352a532590200cc89 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5773: 17641a0df4f4a37711a28a9aaf48c0de85ef53d4 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_18419: 367b86db54b4f9e8f83fd89c317ba1971233db63 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 367b86db54b4 drm/i915: break TGL pci-ids in GT 1 & 2 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18419/index.html ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 06/39] drm/i915/gt: Wait for CSB entries on Tigerlake
Chris Wilson writes: > On Tigerlake, we are seeing a repeat of commit d8f505311717 ("drm/i915/icl: > Forcibly evict stale csb entries") where, presumably, due to a missing > Global Observation Point synchronisation, the write pointer of the CSB > ringbuffer is updated _prior_ to the contents of the ringbuffer. That is > we see the GPU report more context-switch entries for us to parse, but > those entries have not been written, leading us to process stale events, > and eventually report a hung GPU. > > However, this effect appears to be much more severe than we previously > saw on Icelake (though it might be best if we try the same approach > there as well and measure), and Bruce suggested the good idea of resetting > the CSB entry after use so that we can detect when it has been updated by > the GPU. By instrumenting how long that may be, we can set a reliable > upper bound for how long we should wait for: > > 513 late, avg of 61 retries (590 ns), max of 1061 retries (10099 ns) > > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2045 > References: d8f505311717 ("drm/i915/icl: Forcibly evict stale csb entries") References: HSDES#1508287568 > Suggested-by: Bruce Chang > Signed-off-by: Chris Wilson > Cc: Bruce Chang > Cc: Mika Kuoppala > Cc: sta...@vger.kernel.org # v5.4 > --- > drivers/gpu/drm/i915/gt/intel_lrc.c | 21 ++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c > b/drivers/gpu/drm/i915/gt/intel_lrc.c > index d6e0f62337b4..d75712a503b7 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -2498,9 +2498,22 @@ invalidate_csb_entries(const u64 *first, const u64 > *last) > */ > static inline bool gen12_csb_parse(const u64 *csb) > { > - u64 entry = READ_ONCE(*csb); > - bool ctx_away_valid = GEN12_CSB_CTX_VALID(upper_32_bits(entry)); > - bool new_queue = > + bool ctx_away_valid; > + bool new_queue; > + u64 entry; > + > + /* HSD#22011248461 */ s/220011248461/1508287568 > + entry = READ_ONCE(*csb); > + if (unlikely(entry == -1)) { > + preempt_disable(); As this seems to rather rare, consider falling back to mmio read for this entry without the poll? -Mika > + if (wait_for_atomic_us((entry = READ_ONCE(*csb)) != -1, 50)) > + GEM_WARN_ON("50us CSB timeout"); > + preempt_enable(); > + } > + WRITE_ONCE(*(u64 *)csb, -1); > + > + ctx_away_valid = GEN12_CSB_CTX_VALID(upper_32_bits(entry)); > + new_queue = > lower_32_bits(entry) & GEN12_CTX_STATUS_SWITCHED_TO_NEW_QUEUE; > > /* > @@ -4004,6 +4017,8 @@ static void reset_csb_pointers(struct intel_engine_cs > *engine) > WRITE_ONCE(*execlists->csb_write, reset_value); > wmb(); /* Make sure this is visible to HW (paranoia?) */ > > + /* Check that the GPU does indeed update the CSB entries! */ > + memset(execlists->csb_status, -1, (reset_value + 1) * sizeof(u64)); > invalidate_csb_entries(>csb_status[0], > >csb_status[reset_value]); > > -- > 2.20.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: break TGL pci-ids in GT 1 & 2
== Series Details == Series: drm/i915: break TGL pci-ids in GT 1 & 2 URL : https://patchwork.freedesktop.org/series/81144/ State : warning == Summary == $ dim checkpatch origin/drm-tip 367b86db54b4 drm/i915: break TGL pci-ids in GT 1 & 2 -:20: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #20: FILE: include/drm/i915_pciids.h:597: +#define INTEL_TGL_12_GT1_IDS(info) \ + INTEL_VGA_DEVICE(0x9A60, info), \ + INTEL_VGA_DEVICE(0x9A68, info), \ + INTEL_VGA_DEVICE(0x9A70, info) -:20: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'info' - possible side-effects? #20: FILE: include/drm/i915_pciids.h:597: +#define INTEL_TGL_12_GT1_IDS(info) \ + INTEL_VGA_DEVICE(0x9A60, info), \ + INTEL_VGA_DEVICE(0x9A68, info), \ + INTEL_VGA_DEVICE(0x9A70, info) -:25: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #25: FILE: include/drm/i915_pciids.h:602: +#define INTEL_TGL_12_GT2_IDS(info) \ INTEL_VGA_DEVICE(0x9A40, info), \ INTEL_VGA_DEVICE(0x9A49, info), \ INTEL_VGA_DEVICE(0x9A59, info), \ INTEL_VGA_DEVICE(0x9A78, info), \ INTEL_VGA_DEVICE(0x9AC0, info), \ INTEL_VGA_DEVICE(0x9AC9, info), \ INTEL_VGA_DEVICE(0x9AD9, info), \ INTEL_VGA_DEVICE(0x9AF8, info) -:25: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'info' - possible side-effects? #25: FILE: include/drm/i915_pciids.h:602: +#define INTEL_TGL_12_GT2_IDS(info) \ INTEL_VGA_DEVICE(0x9A40, info), \ INTEL_VGA_DEVICE(0x9A49, info), \ INTEL_VGA_DEVICE(0x9A59, info), \ INTEL_VGA_DEVICE(0x9A78, info), \ INTEL_VGA_DEVICE(0x9AC0, info), \ INTEL_VGA_DEVICE(0x9AC9, info), \ INTEL_VGA_DEVICE(0x9AD9, info), \ INTEL_VGA_DEVICE(0x9AF8, info) -:38: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #38: FILE: include/drm/i915_pciids.h:612: +#define INTEL_TGL_12_IDS(info) \ + INTEL_TGL_12_GT1_IDS(info), \ + INTEL_TGL_12_GT2_IDS(info) -:38: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'info' - possible side-effects? #38: FILE: include/drm/i915_pciids.h:612: +#define INTEL_TGL_12_IDS(info) \ + INTEL_TGL_12_GT1_IDS(info), \ + INTEL_TGL_12_GT2_IDS(info) total: 3 errors, 0 warnings, 3 checks, 29 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: break TGL pci-ids in GT 1 & 2
I'll need this in IGT to identify the different kind of GTs and apply the right performance query configuration. Signed-off-by: Lionel Landwerlin --- include/drm/i915_pciids.h | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h index 8e7ae30ebcbb..7eeecb07c9a1 100644 --- a/include/drm/i915_pciids.h +++ b/include/drm/i915_pciids.h @@ -594,19 +594,25 @@ INTEL_VGA_DEVICE(0x4E51, info) /* TGL */ -#define INTEL_TGL_12_IDS(info) \ +#define INTEL_TGL_12_GT1_IDS(info) \ + INTEL_VGA_DEVICE(0x9A60, info), \ + INTEL_VGA_DEVICE(0x9A68, info), \ + INTEL_VGA_DEVICE(0x9A70, info) + +#define INTEL_TGL_12_GT2_IDS(info) \ INTEL_VGA_DEVICE(0x9A40, info), \ INTEL_VGA_DEVICE(0x9A49, info), \ INTEL_VGA_DEVICE(0x9A59, info), \ - INTEL_VGA_DEVICE(0x9A60, info), \ - INTEL_VGA_DEVICE(0x9A68, info), \ - INTEL_VGA_DEVICE(0x9A70, info), \ INTEL_VGA_DEVICE(0x9A78, info), \ INTEL_VGA_DEVICE(0x9AC0, info), \ INTEL_VGA_DEVICE(0x9AC9, info), \ INTEL_VGA_DEVICE(0x9AD9, info), \ INTEL_VGA_DEVICE(0x9AF8, info) +#define INTEL_TGL_12_IDS(info) \ + INTEL_TGL_12_GT1_IDS(info), \ + INTEL_TGL_12_GT2_IDS(info) + /* RKL */ #define INTEL_RKL_IDS(info) \ INTEL_VGA_DEVICE(0x4C80, info), \ -- 2.28.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for tests/core_hotunplug: Fixes and enhancements (rev5)
On Fri, 2020-08-28 at 11:53 +, Patchwork wrote: > Patch Details > Series: tests/core_hotunplug: Fixes and enhancements (rev5) > URL: https://patchwork.freedesktop.org/series/79671/ > State:failure > Details: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4914/index.html > CI Bug Log - changes from IGT_5774_full -> IGTPW_4914_full > Summary > FAILURE > > Serious unknown changes coming with IGTPW_4914_full absolutely need to be > verified manually. > > If you think the reported changes have nothing to do with the changes > introduced in IGTPW_4914_full, please notify your bug team to allow them > to document this new failure mode, which will reduce false positives in CI. > > External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4914/index.html > > Possible new issues > Here are the unknown changes that may have been introduced in IGTPW_4914_full: > > IGT changes > Possible regressions > {igt@core_hotunplug@hotrebind-lateclose} (NEW): > > shard-snb: NOTRUN -> FAIL > > shard-iclb: NOTRUN -> FAIL > > shard-tglb: NOTRUN -> DMESG-WARN > > shard-glk: NOTRUN -> FAIL > > shard-hsw: NOTRUN -> FAIL > > shard-kbl: NOTRUN -> FAIL As before (rev4), this is an existing but formerly not reported GPU hang driver issue exhibited by the test, not a regression. The issue needs to be fixed in the driver for the test to succeed. As one can see from CI reports, the test succesfully recovers from that condition and subsequent tests don't report GPU hangs. > > {igt@core_hotunplug@unbind-rebind} (NEW): > > shard-hsw: NOTRUN -> WARN +1 similar issue This is an IGT warning that replaces a former (rev4) DMESG-WARN -> INCOMPLETE caused by a known driver issue already reported by igt@device_reset@unbind-reset-rebind. The issue has nothing to do with device reset, only with driver unbind on Haswell with Azalia audio. The kernel side needs to be fixed for the WARN not be triggered and the tests succeed. Meanwhile, the IGT warning workaround keeps the issue still visible in CI while not affecting CI runs. > igt@gem_render_copy@linear: > > shard-tglb: PASS -> FAIL +2 similar issues This is a strange issue of an inaccessible "i915_gem_drop_caches" debugfs entry for the render device node of the device just exercised with igt@core_hotunplug@hotrebind-lateclose on a GuC platform. Not reported by Trybot unfortunately, but here evidently affecting subsequent tests. Looks like the health check and recovery phase of the test still needs more work, sorry. Thanks, Janusz > New tests > New tests have been introduced between IGT_5774_full and IGTPW_4914_full: > > New IGT tests (3) > igt@core_hotunplug@hotrebind-lateclose: > > Statuses : 1 dmesg-warn(s) 6 fail(s) > Exec time: [6.13, 17.39] s > igt@core_hotunplug@hotunbind-rebind: > > Statuses : 6 pass(s) 1 warn(s) > Exec time: [0.39, 1.96] s > igt@core_hotunplug@unbind-rebind: > > Statuses : 6 pass(s) 1 warn(s) > Exec time: [0.38, 1.91] s > Known issues > Here are the changes found in IGTPW_4914_full that come from known issues: > > IGT changes > Issues hnotit > igt@gem_exec_reloc@basic-concurrent0: > > shard-tglb: PASS -> TIMEOUT (i915#1958) > > shard-kbl: PASS -> TIMEOUT (i915#1958) +1 similar issue > > igt@gem_exec_whisper@basic-forked: > > shard-iclb: PASS -> TIMEOUT (i915#1958) > igt@gem_exec_whisper@basic-forked-all: > > shard-glk: PASS -> DMESG-WARN (i915#118 / i915#95) > igt@gem_exec_whisper@basic-queues-forked-all: > > shard-glk: PASS -> TIMEOUT (i915#1958) +4 similar issues > > shard-apl: PASS -> TIMEOUT (i915#1635 / i915#1958) +1 similar issue > > igt@gen9_exec_parse@allowed-all: > > shard-apl: PASS -> DMESG-WARN (i915#1436 / i915#1635 / i915#716) > igt@i915_pm_dc@dc6-psr: > > shard-iclb: PASS -> FAIL (i915#1899) > igt@i915_pm_rpm@reg-read-ioctl: > > shard-kbl: PASS -> DMESG-WARN (i915#165) > igt@i915_selftest@mock@contexts: > > shard-hsw: PASS -> INCOMPLETE (i915#2278) > igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt: > > shard-tglb: PASS -> DMESG-WARN (i915#1982) +2 similar issues > igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc: > > shard-glk: PASS -> FAIL (i915#49) > igt@kms_frontbuffer_tracking@fbc-badstride: > > shard-glk: PASS -> DMESG-WARN (i915#1982) > igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary: > > shard-kbl: PASS -> FAIL (i915#49) > > shard-apl: PASS -> FAIL (i915#1635 / i915#49) > > igt@kms_hdmi_inject@inject-audio: > > shard-tglb: PASS -> SKIP (i915#433) > igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes: > > shard-kbl: PASS -> DMESG-WARN (i915#180) > igt@kms_psr2_su@frontbuffer: > > shard-iclb: PASS -> SKIP (fdo#109642 / fdo#111068) > igt@kms_psr@psr2_primary_mmap_cpu: > > shard-iclb: PASS -> SKIP (fdo#109441) +1 similar issue > igt@kms_universal_plane@universal-plane-gen9-features-pipe-a: > > shard-kbl: PASS -> DMESG-WARN (i915#1982) +1 similar issue > igt@kms_vblank@pipe-a-query-busy-hang: > > shard-apl: PASS -> DMESG-WARN
Re: [Intel-gfx] [igt-dev] [PATCH i-g-t] lib: Use unsigned gen for forward compatible tests
On Mon, Aug 10, 2020 at 09:56:34AM +0100, Chris Wilson wrote: > Quoting Petri Latvala (2020-08-10 09:22:42) > > On Mon, Aug 10, 2020 at 10:09:46AM +0200, Zbigniew Kempczyński wrote: > > > On Thu, Aug 06, 2020 at 03:45:29PM +0100, Chris Wilson wrote: > > > > Unknown, so future, gen are marked as -1 which we want to treat as -1u > > > > so that always pass >= gen checks. > > > > > > Do we really want to enable the tests when platform is not fully > > > enabled in IGT? > > > > What does "fully enabled" mean? > > > > If the test is checking for just "gen > x", the test should work > > already. If the test is also checking for "gen < y" then we get a > > spurious failure, but either way CI is going to tell you that > > something is not passing. Without this it will be a skip, along with > > skipping in the case that should just work already without actual test > > changes. > > And for a very large fraction of tests, the behaviour of next gen > follows current gen. Those that do not are very interesting, and will be > a much smaller number than the volume of skips we have to process. > -Chris So patch only defers in time adding explicit platform definition. For each tests which requires exact gen test will fail anyway, but other will likely work. If they won't we'll know it from CI. I see no big risk but let Petri decide, from my side: Acked-by: Zbigniew Kempczyński ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 13/21] tests/core_hotunplug: Let the driver time out essential sysfs operations
The test now arms a timer before performing each driver unbind / rebind or device unplug / bus rescan sysfs operation. Then in case of issues we may prevent the driver from showing us if and how it can handle them. Don't arm the timer before sysfs operations which are essential for a subtest. v2: Refresh, - don't time out on hot driver rebind / hot device restore in *-lateclose variants, those operations haven't been covered by other subtests. Signed-off-by: Janusz Krzysztofik --- tests/core_hotunplug.c | 38 -- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index dd1dc1fe0..1fdbd9b4c 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -116,29 +116,31 @@ static void prepare(struct hotunplug *priv) } /* Unbind the driver from the device */ -static void driver_unbind(struct hotunplug *priv, const char *prefix) +static void driver_unbind(struct hotunplug *priv, const char *prefix, + int timeout) { igt_debug("%sunbinding the driver from the device\n", prefix); priv->failure = "Driver unbind failure!"; - igt_set_timeout(60, "Driver unbind timeout!"); + igt_set_timeout(timeout, "Driver unbind timeout!"); igt_sysfs_set(priv->fd.sysfs_drv, "unbind", priv->dev_bus_addr); igt_reset_timeout(); } /* Re-bind the driver to the device */ -static void driver_bind(struct hotunplug *priv) +static void driver_bind(struct hotunplug *priv, int timeout) { igt_debug("rebinding the driver to the device\n"); priv->failure = "Driver re-bind failure!"; - igt_set_timeout(60, "Driver re-bind timeout!"); + igt_set_timeout(timeout, "Driver re-bind timeout!"); igt_sysfs_set(priv->fd.sysfs_drv, "bind", priv->dev_bus_addr); igt_reset_timeout(); } /* Remove (virtually unplug) the device from its bus */ -static void device_unplug(struct hotunplug *priv, const char *prefix) +static void device_unplug(struct hotunplug *priv, const char *prefix, + int timeout) { igt_require(priv->fd.sysfs_dev == -1); @@ -149,7 +151,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) igt_debug("%sunplugging the device\n", prefix); priv->failure = "Device unplug failure!"; - igt_set_timeout(60, "Device unplug timeout!"); + igt_set_timeout(timeout, "Device unplug timeout!"); igt_sysfs_set(priv->fd.sysfs_dev, "remove", "1"); igt_reset_timeout(); @@ -158,12 +160,12 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) } /* Re-discover the device by rescanning its bus */ -static void bus_rescan(struct hotunplug *priv) +static void bus_rescan(struct hotunplug *priv, int timeout) { igt_debug("rediscovering the device\n"); priv->failure = "Bus rescan failure!"; - igt_set_timeout(60, "Bus rescan timeout!"); + igt_set_timeout(timeout, "Bus rescan timeout!"); igt_sysfs_set(priv->fd.sysfs_bus, "../rescan", "1"); igt_reset_timeout(); } @@ -210,10 +212,10 @@ static void recover(struct hotunplug *priv) cleanup(priv); if (faccessat(priv->fd.sysfs_bus, priv->dev_bus_addr, F_OK, 0)) - bus_rescan(priv); + bus_rescan(priv, 60); else if (faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr, F_OK, 0)) - driver_bind(priv); + driver_bind(priv, 60); if (priv->failure) healthcheck(priv); @@ -248,9 +250,9 @@ static void unbind_rebind(struct hotunplug *priv) { igt_assert_eq(priv->fd.drm, -1); - driver_unbind(priv, ""); + driver_unbind(priv, "", 0); - driver_bind(priv); + driver_bind(priv, 0); healthcheck(priv); } @@ -259,9 +261,9 @@ static void unplug_rescan(struct hotunplug *priv) { igt_assert_eq(priv->fd.drm, -1); - device_unplug(priv, ""); + device_unplug(priv, "", 0); - bus_rescan(priv); + bus_rescan(priv, 0); healthcheck(priv); } @@ -271,9 +273,9 @@ static void hotunbind_lateclose(struct hotunplug *priv) igt_assert_eq(priv->fd.drm, -1); priv->fd.drm = local_drm_open_driver("", " for hotunbind"); - driver_unbind(priv, "hot "); + driver_unbind(priv, "hot ", 0); - driver_bind(priv); + driver_bind(priv, 0); igt_debug("late closing the unbound device instance\n"); priv->fd.drm = close_device(priv->fd.drm); @@ -287,9 +289,9 @@ static void hotunplug_lateclose(struct hotunplug *priv) igt_assert_eq(priv->fd.drm, -1); priv->fd.drm = local_drm_open_driver("", " for hotunplug"); - device_unplug(priv, "hot "); + device_unplug(priv, "hot ", 0); - bus_rescan(priv); + bus_rescan(priv, 0); igt_debug("late closing the removed device instance\n");
[Intel-gfx] [PATCH i-g-t v5 19/21] tests/core_hotunplug: Duplicate debug messages in dmesg
The purpose of debug messages displayed by the test is to make identification of a subtest phase that fails more easy. Since issues exhibited by the test are mostly reported to dmesg, print those debug messages to /dev/kmsg as well. v2: Rebase on upstream. v3: Refresh. v4: Refresh. Signed-off-by: Janusz Krzysztofik --- tests/core_hotunplug.c | 28 +--- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 305c57a3f..361d601af 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -52,6 +52,12 @@ struct hotunplug { /* Helpers */ +#define local_debug(fmt, msg...) \ +({\ + igt_debug(fmt, msg); \ + igt_kmsg(KMSG_DEBUG "%s: " fmt, igt_test_name(), msg); \ +}) + /** * Subtests must be able to close examined devices completely. Don't * use drm_open_driver() since in case of an i915 device it opens it @@ -61,7 +67,7 @@ static int local_drm_open_driver(const char *prefix, const char *suffix) { int fd_drm; - igt_debug("%sopening device%s\n", prefix, suffix); + local_debug("%sopening device%s\n", prefix, suffix); fd_drm = __drm_open_driver(DRIVER_ANY); igt_assert_fd(fd_drm); @@ -121,7 +127,7 @@ static void prepare(struct hotunplug *priv) static void driver_unbind(struct hotunplug *priv, const char *prefix, int timeout) { - igt_debug("%sunbinding the driver from the device\n", prefix); + local_debug("%sunbinding the driver from the device\n", prefix); priv->failure = "Driver unbind failure!"; igt_set_timeout(timeout, "Driver unbind timeout!"); @@ -137,7 +143,7 @@ static void driver_unbind(struct hotunplug *priv, const char *prefix, /* Re-bind the driver to the device */ static void driver_bind(struct hotunplug *priv, int timeout) { - igt_debug("rebinding the driver to the device\n"); + local_debug("%s\n", "rebinding the driver to the device"); priv->failure = "Driver re-bind failure!"; igt_set_timeout(timeout, "Driver re-bind timeout!"); @@ -161,7 +167,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix, O_DIRECTORY); igt_assert_fd(priv->fd.sysfs_dev); - igt_debug("%sunplugging the device\n", prefix); + local_debug("%sunplugging the device\n", prefix); priv->failure = "Device unplug failure!"; igt_set_timeout(timeout, "Device unplug timeout!"); @@ -179,7 +185,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix, /* Re-discover the device by rescanning its bus */ static void bus_rescan(struct hotunplug *priv, int timeout) { - igt_debug("rediscovering the device\n"); + local_debug("%s\n", "rediscovering the device"); priv->failure = "Bus rescan failure!"; igt_set_timeout(timeout, "Bus rescan timeout!"); @@ -232,7 +238,7 @@ static int local_i915_healthcheck(int i915, const char *prefix) if (hang_detected) return -EIO; - igt_debug("%srunning i915 GPU healthcheck\n", prefix); + local_debug("%s%s\n", prefix, "running i915 GPU healthcheck"); if (local_i915_is_wedged(i915)) return -EIO; @@ -267,7 +273,7 @@ static int local_i915_recover(int i915) if (!local_i915_healthcheck(i915, "re-")) return 0; - igt_debug("forcing i915 GPU reset\n"); + local_debug("%s\n", "forcing i915 GPU reset"); igt_force_gpu_reset(i915); hang_detected = false; @@ -392,7 +398,7 @@ static void hotunbind_rebind(struct hotunplug *priv) driver_unbind(priv, "hot ", 0); - igt_debug("late closing the unbound device instance\n"); + local_debug("%s\n", "late closing the unbound device instance"); priv->fd.drm = close_device(priv->fd.drm); igt_assert_eq(priv->fd.drm, -1); @@ -408,7 +414,7 @@ static void hotunplug_rescan(struct hotunplug *priv) device_unplug(priv, "hot ", 0); - igt_debug("late closing the removed device instance\n"); + local_debug("%s\n", "late closing the removed device instance"); priv->fd.drm = close_device(priv->fd.drm); igt_assert_eq(priv->fd.drm, -1); @@ -427,7 +433,7 @@ static void hotrebind_lateclose(struct hotunplug *priv) healthcheck(priv, false); - igt_debug("late closing the unbound device instance\n"); + local_debug("%s\n", "late closing the unbound device instance"); priv->fd.drm = close_device(priv->fd.drm); igt_assert_eq(priv->fd.drm, -1); @@ -444,7 +450,7 @@ static void hotreplug_lateclose(struct hotunplug *priv) healthcheck(priv, false); - igt_debug("late closing the removed device instance\n"); + local_debug("%s\n", "late closing
[Intel-gfx] [PATCH i-g-t v5 16/21] tests/core_hotunplug: Explicitly ignore unused return values
Some return values are not useful and can be ignored. Wrap those cases inside igt_ignore_warn(), not only to make sure compilers are happy but also to clearly document our decisions. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index b53c9ecde..923b8cdfd 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -257,7 +257,7 @@ static void set_filter_from_device(int fd) char path[PATH_MAX + 1]; igt_assert(igt_sysfs_path(fd, path, PATH_MAX)); - strncat(path, "/device", PATH_MAX - strlen(path)); + igt_ignore_warn(strncat(path, "/device", PATH_MAX - strlen(path))); igt_assert(realpath(path, dst)); igt_device_filter_free_all(); @@ -396,7 +396,7 @@ igt_main igt_fixture { post_healthcheck(); - close(priv.fd.sysfs_bus); - close(priv.fd.sysfs_drv); + igt_ignore_warn(close(priv.fd.sysfs_bus)); + igt_ignore_warn(close(priv.fd.sysfs_drv)); } } -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 20/21] tests/core_hotunplug: HSW audio issue workaround
Unbinding the i915 driver on some Haswell platforms with Azalia audio results in a kernel WARNING on "i915 raw-wakerefs=1 wakelocks=1 on cleanup". The issue can be worked around by manually enabling runtime power management for the conflicting audio adapter. Use that method but also display a warning to preserve visibility of the issue. Also tag the workaround with a FIXME comment. Signed-off-by: Janusz Krzysztofik --- tests/core_hotunplug.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 361d601af..a3d2a04ed 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -473,9 +473,23 @@ igt_main igt_skip_on_f(fd_drm < 0, "No known DRM device found\n"); if (is_i915_device(fd_drm)) { + uint32_t devid = intel_get_drm_devid(fd_drm); + gem_quiescent_gpu(fd_drm); igt_skip_on_f(local_i915_healthcheck(fd_drm, "pre-"), "i915 device not healthy on test start\n"); + + /** +* FIXME: Unbinding the i915 driver on some Haswell +* platforms with Azalia audio results in a kernel WARN +* on "i915 raw-wakerefs=1 wakelocks=1 on cleanup". The +* below CI friendly user level workaround prevents the +* warning from appearing. Drop this hack as soon as +* this is fixed in the kernel. +*/ + if (igt_warn_on_f((bool) IS_HASWELL(devid), + "Manually enabling audio PM to work around a kernel WARN\n")) + igt_pm_enable_audio_runtime_pm(); } /* Make sure subtests always reopen the same device */ -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 09/21] tests/core_hotunplug: Prepare invariant data once per test run
Each subtest now calls a prepare() helper which opens a couple of files required by that subtest. Those files are then closed after use, either directly from the subtest body, or indirectly from inside one of helper functions called during the subtest execution. That approach not only makes life cycle of individual file descriptors difficult to follow but also prevents us from re-running health checks on subtest failures from follow up igt_fixture sections since we may need to retry bus rescan or driver rebind operations. Two of those files - device bus and driver sysfs nodes - are not affected nor interfere with driver unbind / device unplug operations performed by subtests. Then, there is not much sense in closing and reopening those nodes. Open them once at the beginning of a test run, then close them as late as on test completion. The prepare() helper also populates a device bus address string used by driver unbind / rebind operations. Since the bus address of an exercised device never changes, also prepare that string only once at the beginning of a test run. Note that it is the same as the last component of a device filter string which is already resolved and installed from an initial igt_fixture section of the test. Then, initialize the device bus address field of a hotunplug structure instance with a pointer to the respective substring of that filter rather than resolving it again from the device sysfs node pathname. There is one more sysfs node - a DRM device node - now opened by the prepare() helper for subtests which perform device remove operations. That node can't be opened only once at the beginning of a test run because its open file descriptor is no longer usable as soon as a driver unbind operation is performed. On the other hand, it can't be opened easily from inside a device_remove() helper since some subtests just don't open the device so its file descriptor used by igt_sysfs_open() may just not be available. However, note that only a PCI sysfs node of the device, not necessarily the DRM one, is actually required for a successful device remove operation, and that node can be opened easily from a bus file descriptor using a device bus address string, both already available. Then, change the semantics of a .fd.sysfs_dev field of the hotunplug structure from DRM to PCI device sysfs file descriptor, then let the device_remove() helper open the device PCI node by itself and store its file descriptor in that field. Also, for still more easy access to the device PCI node, use a 'subsystem/devices' sub-node of the PCI device as its bus sysfs location instead of just 'subsystem', then adjust a relative path to the bus 'rescan' function accordingly. A side benefit of using the PCI device sysfs node, not the DRM one, while removing the device is that a future subtest may now easily perform both driver unbind and device remove operations in a row. v2: Rebase only. v3: Refresh. v4: Still assert a device dile descriptor closed cleanly on subtest start, a device sysfs file descriptor still before open. Suggested-by: Michał Winiarski Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski # v1 --- tests/core_hotunplug.c | 85 -- 1 file changed, 33 insertions(+), 52 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 2884c3f77..1da0e5a9f 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -86,45 +86,31 @@ static int close_sysfs(int fd_sysfs_dev) return local_close(fd_sysfs_dev, "Device sysfs node close failed"); } -static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) +static void prepare(struct hotunplug *priv) { - int len; + const char *filter = igt_device_filter_get(0), *sysfs_path; - igt_assert(buflen); + igt_assert(filter); - priv->fd.sysfs_drv = openat(priv->fd.sysfs_dev, "device/driver", - O_DIRECTORY); - igt_assert_fd(priv->fd.sysfs_drv); - - len = readlinkat(priv->fd.sysfs_dev, "device", buf, buflen - 1); - buf[len] = '\0'; - priv->dev_bus_addr = strrchr(buf, '/'); + priv->dev_bus_addr = strrchr(filter, '/'); igt_assert(priv->dev_bus_addr++); - /* sysfs_dev no longer needed */ - priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); - igt_assert_eq(priv->fd.sysfs_dev, -1); -} + sysfs_path = strchr(filter, ':'); + igt_assert(sysfs_path++); -static void prepare(struct hotunplug *priv, char *buf, int buflen) -{ - /* assert device file descriptors closed cleanly on subtest start */ - igt_assert_eq(priv->fd.drm, -1); igt_assert_eq(priv->fd.sysfs_dev, -1); + priv->fd.sysfs_dev = open(sysfs_path, O_DIRECTORY); + igt_assert_fd(priv->fd.sysfs_dev); - priv->fd.drm = local_drm_open_driver("", " for subtest"); + priv->fd.sysfs_drv = openat(priv->fd.sysfs_dev, "driver",
[Intel-gfx] [PATCH i-g-t v5 18/21] tests/core_hotunplug: Add 'lateclose before restore' variants
If a GPU gets wedged during driver rebind or device re-plug for some reason, current hotunbind/hotunplug test variants may time out before lateclose phase, resulting in incomplete CI reports. Add new test variants which close the device before restoring it. Also rename old variants to more adequate hotrebind/hotreplug-lateclose and perform health checks both before and after late close. v2: Rebase on upstream. v3: Refresh, - further rename hotunbind/hotunplug-lateclose to hotunbind-rebind and hotunplug-rescan respectively, then add two more variants under the old names which only exercise late close, leaving rebind / rescan to be cared of in the post-subtest recovery phase, - also update descriptions of unmodified subtests for consistency. v4: Refresh, - drop subtests with no health checks, adjust timeouts in successors, - perform health checks of hot restored devices also before late close, - in order to be able to safely run a health check while still keeping an unbound / unplugged device instance open, also preserve the open device fd, not only a close error, - adjust subtest descriptions. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski # v2 --- tests/core_hotunplug.c | 98 ++ 1 file changed, 80 insertions(+), 18 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 1f211a820..305c57a3f 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -276,17 +276,19 @@ static int local_i915_recover(int i915) static void healthcheck(struct hotunplug *priv, bool recover) { - /* preserve error code potentially stored before in priv->fd.drm */ + /* preserve device fd / close status stored in priv->fd.drm */ + int fd_drm, saved_fd_drm = priv->fd.drm; bool closed = priv->fd.drm == -1; - int fd_drm; /* device name may have changed, rebuild IGT device list */ igt_devices_scan(true); priv->failure = "Device reopen failure!"; fd_drm = local_drm_open_driver("re", " for healthcheck"); - if (closed) /* store for cleanup if no error code to preserve */ + if (closed) /* store for cleanup if not dirty */ priv->fd.drm = fd_drm; + else/* force close error should we fail prematurely */ + priv->fd.drm = -EBADF; if (is_i915_device(fd_drm)) { const char *failure = NULL; @@ -308,8 +310,10 @@ static void healthcheck(struct hotunplug *priv, bool recover) } fd_drm = close_device(fd_drm); - if (closed) /* store result if no error code to preserve */ + if (closed) /* store result if no dirty status to preserve */ priv->fd.drm = fd_drm; + else if (fd_drm == -1) /* cancel fake error, restore saved status */ + priv->fd.drm = saved_fd_drm; /* not only request igt_abort on failure, also fail the health check */ igt_fail_on_f(priv->failure, "%s\n", priv->failure); @@ -381,31 +385,65 @@ static void unplug_rescan(struct hotunplug *priv) healthcheck(priv, false); } -static void hotunbind_lateclose(struct hotunplug *priv) +static void hotunbind_rebind(struct hotunplug *priv) { igt_assert_eq(priv->fd.drm, -1); - priv->fd.drm = local_drm_open_driver("", " for hotunbind"); + priv->fd.drm = local_drm_open_driver("", " for hotrebind"); driver_unbind(priv, "hot ", 0); - driver_bind(priv, 0); - igt_debug("late closing the unbound device instance\n"); priv->fd.drm = close_device(priv->fd.drm); igt_assert_eq(priv->fd.drm, -1); + driver_bind(priv, 0); + healthcheck(priv, false); } -static void hotunplug_lateclose(struct hotunplug *priv) +static void hotunplug_rescan(struct hotunplug *priv) { igt_assert_eq(priv->fd.drm, -1); - priv->fd.drm = local_drm_open_driver("", " for hotunplug"); + priv->fd.drm = local_drm_open_driver("", " for hotreplug"); device_unplug(priv, "hot ", 0); + igt_debug("late closing the removed device instance\n"); + priv->fd.drm = close_device(priv->fd.drm); + igt_assert_eq(priv->fd.drm, -1); + bus_rescan(priv, 0); + healthcheck(priv, false); +} + +static void hotrebind_lateclose(struct hotunplug *priv) +{ + priv->fd.drm = local_drm_open_driver("", " for hotrebind"); + + driver_unbind(priv, "hot ", 60); + + driver_bind(priv, 0); + + healthcheck(priv, false); + + igt_debug("late closing the unbound device instance\n"); + priv->fd.drm = close_device(priv->fd.drm); + igt_assert_eq(priv->fd.drm, -1); + + healthcheck(priv, false); +} + +static void hotreplug_lateclose(struct hotunplug *priv) +{ + priv->fd.drm = local_drm_open_driver("", " for hotreplug"); + + device_unplug(priv, "hot ", 60); + + bus_rescan(priv, 0); + +
[Intel-gfx] [PATCH i-g-t v5 03/21] tests/core_hotunplug: Clean up device open error handling
We don't use drm_driver_open() since in case of an i915 device it keeps an extra file descriptor of the exercised device open for exit handler use, while we would like to be able to close the device completely before running certain test operations. Instead, we call __drm_driver_open() and handle its result ourselves. Unlike drm_driver_open() which skips on device open errors, we always fail or abort the test in such case. Moreover, we don't ensure that the i915 driver is idle before starting subtests like drm_open_driver() does. Skip instead of failing on initial device open error. Also, call gem_quiescent_gpu() if an i915 device is detected. For subsequent device opens, define a local helper that fails on error and use it. If we think we need to abort the test execution on device open error, set our failure marker first to trigger the abort from a follow up igt_fixture section. Signed-off-by: Janusz Krzysztofik --- tests/core_hotunplug.c | 34 +++--- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index a4071f51e..e576a6c6c 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -49,6 +49,21 @@ struct hotunplug { /* Helpers */ +/** + * Subtests must be able to close examined devices completely. Don't + * use drm_open_driver() since in case of an i915 device it opens it + * twice and keeps a second file descriptor open for exit handler use. + */ +static int local_drm_open_driver(void) +{ + int fd_drm; + + fd_drm = __drm_open_driver(DRIVER_ANY); + igt_assert_fd(fd_drm); + + return fd_drm; +} + static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) { int len; @@ -71,8 +86,7 @@ static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) static void prepare(struct hotunplug *priv, char *buf, int buflen) { igt_debug("opening device\n"); - priv->fd.drm = __drm_open_driver(DRIVER_ANY); - igt_assert_fd(priv->fd.drm); + priv->fd.drm = local_drm_open_driver(); priv->fd.sysfs_dev = igt_sysfs_open(priv->fd.drm); igt_assert_fd(priv->fd.sysfs_dev); @@ -145,8 +159,9 @@ static void healthcheck(void) igt_devices_scan(true); igt_debug("reopening the device\n"); - fd_drm = __drm_open_driver(DRIVER_ANY); - igt_abort_on_f(fd_drm < 0, "Device reopen failure"); + failure = "Device reopen failure!"; + fd_drm = local_drm_open_driver(); + failure = NULL; if (is_i915_device(fd_drm)) { failure = "GEM failure"; @@ -255,16 +270,13 @@ igt_main igt_fixture { int fd_drm; - /** -* As subtests must be able to close examined devices -* completely, don't use drm_open_driver() as it keeps -* a device file descriptor open for exit handler use. -*/ fd_drm = __drm_open_driver(DRIVER_ANY); - igt_assert_fd(fd_drm); + igt_skip_on_f(fd_drm < 0, "No known DRM device found\n"); - if (is_i915_device(fd_drm)) + if (is_i915_device(fd_drm)) { + gem_quiescent_gpu(fd_drm); igt_require_gem(fd_drm); + } /* Make sure subtests always reopen the same device */ set_filter_from_device(fd_drm); -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 21/21] tests/core_hotunplug: Un-blocklist *bind* subtests
Subtests which don't remove the device, only unbind the driver from it, seem relatively safe and harmless for CI. Remove them from the CI blocklist. Signed-off-by: Janusz Krzysztofik --- tests/intel-ci/blacklist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/intel-ci/blacklist.txt b/tests/intel-ci/blacklist.txt index f9a57cb54..25b567038 100644 --- a/tests/intel-ci/blacklist.txt +++ b/tests/intel-ci/blacklist.txt @@ -120,7 +120,7 @@ igt@perf_pmu@cpu-hotplug # Currently fails and leaves the machine in a very bad state, and # causes coverage loss for other tests. -igt@core_hotunplug@.* +igt@core_hotunplug@.*plug.* # hangs several gens of hosts, and has no immediate fix igt@device_reset@reset-bound \ No newline at end of file -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 17/21] tests/core_hotunplug: More thorough i915 healthcheck and recovery
The test now assumes the i915 driver is able to identify potential hardware or driver issues while rebinding to a device and indicate them by marking the GPU wedged. Should that assumption occur wrong, the health check phase of the test would happily succeed while potentially leaving the device in an unusable state. That would not only give us falsely positive test results but could also potentially affect subsequently run applications. Then, we should examine health of the exercised device more thoroughly and try harder to recover it from potentially detected stalls. We could use a gem_test_engine() library function which submits and asserts successful execution of a NOP batch on each physical engine. Unfortunately, on failure this function jumps out of an IGT test section it is called from, while we would like to continue with recovery steps, possibly not adding another level of test section group nesting. Moreover, the function opens the device again and doesn't close the extra file descriptor before the jump, while we care for being able to close the exercised device completely before running certain subtest operations. Then, reimplement the function locally with those issues fixed and use it as an i915 health check. Call it also on test startup so operations performed by the test are never blamed for driver or hardware issues which may potentially exist and be possible to detect on test start. Should the i915 GPU be found unresponsive by the health check called from a recovery section, try harder to recover it to a usable state with a global GPU reset. For still more effective detection of GPU hangs, use a hang detector provided by IGT library. However, replace the library signal handler with our own implementation that doesn't jump out of the current IGT test section on GPU hang so we are still able to perform the reset and retry. v2: Skip i915 health check if a GPU hang has been already detected by a previous health check run and not yet recovered with a GPU reset, - take care of stopping a hang detector instance possibly left running by a failed health check attempt. v3: Re-run i915 health check as a first setp of i915 recovery (use full GPU reset as a last resort), - prefix i915 health check debug messages with step indicators, - fix spelling error in a comment. v4: Unbind the driver from an unhealthy device before recovery, - drop caches on i915 health check completion. Signed-off-by: Janusz Krzysztofik --- tests/core_hotunplug.c | 114 + 1 file changed, 104 insertions(+), 10 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 923b8cdfd..1f211a820 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -23,8 +23,10 @@ #include #include +#include #include #include +#include #include #include #include @@ -196,7 +198,83 @@ static void cleanup(struct hotunplug *priv) priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); } -static void healthcheck(struct hotunplug *priv) +static bool local_i915_is_wedged(int i915) +{ + int err = 0; + + if (ioctl(i915, DRM_IOCTL_I915_GEM_THROTTLE)) + err = -errno; + return err == -EIO; +} + +static bool hang_detected = false; + +static void local_sig_abort(int sig) +{ + errno = 0; /* inside a signal, last errno reporting is confusing */ + hang_detected = true; +} + +static int local_i915_healthcheck(int i915, const char *prefix) +{ + const uint32_t bbe = MI_BATCH_BUFFER_END; + struct drm_i915_gem_exec_object2 obj = { }; + struct drm_i915_gem_execbuffer2 execbuf = { + .buffers_ptr = to_user_pointer(), + .buffer_count = 1, + }; + const struct intel_execution_engine2 *engine; + + /* stop our hang detector possibly still running if we failed before */ + igt_stop_hang_detector(); + + /* don't run again before GPU reset if hang has been already detected */ + if (hang_detected) + return -EIO; + + igt_debug("%srunning i915 GPU healthcheck\n", prefix); + + if (local_i915_is_wedged(i915)) + return -EIO; + + obj.handle = gem_create(i915, 4096); + gem_write(i915, obj.handle, 0, , sizeof(bbe)); + + igt_fork_hang_detector(i915); + signal(SIGIO, local_sig_abort); + + __for_each_physical_engine(i915, engine) { + execbuf.flags = engine->flags; + gem_execbuf(i915, ); + } + + gem_sync(i915, obj.handle); + gem_close(i915, obj.handle); + + igt_stop_hang_detector(); + if (hang_detected) + return -EIO; + + if (local_i915_is_wedged(i915)) + return -EIO; + + return 0; +} + +static int local_i915_recover(int i915) +{ + hang_detected = false; + if (!local_i915_healthcheck(i915, "re-")) + return 0; + + igt_debug("forcing i915 GPU
[Intel-gfx] [PATCH i-g-t v5 12/21] tests/core_hotunplug: Fail subtests on device close errors
Since health checks are now run from follow-up fixture sections, it is safe to fail subtests without the need to abort the test execution. Do that on device close errors instead of just emitting warnings. v2: Rebase only. v3: Refresh. v4: Refresh. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index b72361900..dd1dc1fe0 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -154,6 +154,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) igt_reset_timeout(); priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); + igt_assert_eq(priv->fd.sysfs_dev, -1); } /* Re-discover the device by rescanning its bus */ @@ -276,6 +277,7 @@ static void hotunbind_lateclose(struct hotunplug *priv) igt_debug("late closing the unbound device instance\n"); priv->fd.drm = close_device(priv->fd.drm); + igt_assert_eq(priv->fd.drm, -1); healthcheck(priv); } @@ -291,6 +293,7 @@ static void hotunplug_lateclose(struct hotunplug *priv) igt_debug("late closing the removed device instance\n"); priv->fd.drm = close_device(priv->fd.drm); + igt_assert_eq(priv->fd.drm, -1); healthcheck(priv); } -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 07/21] tests/core_hotunplug: Pass errors via a data structure field
A pointer to fatal error messages can be passed around via hotunplug structure, no need to declare it as global. v2: Rebase only. v3: Refresh. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 96 +- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 95d326ee9..4f7e89c95 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -45,6 +45,7 @@ struct hotunplug { int sysfs_drv; } fd; const char *dev_bus_addr; + const char *failure; }; /* Helpers */ @@ -102,80 +103,77 @@ static void prepare(struct hotunplug *priv, char *buf, int buflen) } } -static const char *failure; - /* Unbind the driver from the device */ -static void driver_unbind(int fd_sysfs_drv, const char *dev_bus_addr, - const char *prefix) +static void driver_unbind(struct hotunplug *priv, const char *prefix) { igt_debug("%sunbinding the driver from the device\n", prefix); - failure = "Driver unbind timeout!"; - igt_set_timeout(60, failure); - igt_sysfs_set(fd_sysfs_drv, "unbind", dev_bus_addr); + priv->failure = "Driver unbind timeout!"; + igt_set_timeout(60, priv->failure); + igt_sysfs_set(priv->fd.sysfs_drv, "unbind", priv->dev_bus_addr); igt_reset_timeout(); - failure = NULL; + priv->failure = NULL; - /* don't close fd_sysfs_drv, it will be used for driver rebinding */ + /* don't close fd.sysfs_drv, it will be used for driver rebinding */ } /* Re-bind the driver to the device */ -static void driver_bind(int fd_sysfs_drv, const char *dev_bus_addr) +static void driver_bind(struct hotunplug *priv) { igt_debug("rebinding the driver to the device\n"); - failure = "Driver re-bind timeout!"; - igt_set_timeout(60, failure); - igt_sysfs_set(fd_sysfs_drv, "bind", dev_bus_addr); + priv->failure = "Driver re-bind timeout!"; + igt_set_timeout(60, priv->failure); + igt_sysfs_set(priv->fd.sysfs_drv, "bind", priv->dev_bus_addr); igt_reset_timeout(); - failure = NULL; + priv->failure = NULL; - close(fd_sysfs_drv); + close(priv->fd.sysfs_drv); } /* Remove (virtually unplug) the device from its bus */ -static void device_unplug(int fd_sysfs_dev, const char *prefix) +static void device_unplug(struct hotunplug *priv, const char *prefix) { igt_debug("%sunplugging the device\n", prefix); - failure = "Device unplug timeout!"; - igt_set_timeout(60, failure); - igt_sysfs_set(fd_sysfs_dev, "device/remove", "1"); + priv->failure = "Device unplug timeout!"; + igt_set_timeout(60, priv->failure); + igt_sysfs_set(priv->fd.sysfs_dev, "device/remove", "1"); igt_reset_timeout(); - failure = NULL; + priv->failure = NULL; - close(fd_sysfs_dev); + close(priv->fd.sysfs_dev); } /* Re-discover the device by rescanning its bus */ -static void bus_rescan(int fd_sysfs_bus) +static void bus_rescan(struct hotunplug *priv) { igt_debug("rediscovering the device\n"); - failure = "Bus rescan timeout!"; - igt_set_timeout(60, failure); - igt_sysfs_set(fd_sysfs_bus, "rescan", "1"); + priv->failure = "Bus rescan timeout!"; + igt_set_timeout(60, priv->failure); + igt_sysfs_set(priv->fd.sysfs_bus, "rescan", "1"); igt_reset_timeout(); - failure = NULL; + priv->failure = NULL; - close(fd_sysfs_bus); + close(priv->fd.sysfs_bus); } -static void healthcheck(void) +static void healthcheck(struct hotunplug *priv) { int fd_drm; /* device name may have changed, rebuild IGT device list */ igt_devices_scan(true); - failure = "Device reopen failure!"; + priv->failure = "Device reopen failure!"; fd_drm = local_drm_open_driver("re", " for healthcheck"); - failure = NULL; + priv->failure = NULL; if (is_i915_device(fd_drm)) { - failure = "GEM failure"; + priv->failure = "GEM failure"; igt_require_gem(fd_drm); - failure = NULL; + priv->failure = NULL; } close(fd_drm); @@ -207,11 +205,11 @@ static void unbind_rebind(struct hotunplug *priv) igt_debug("closing the device\n"); close(priv->fd.drm); - driver_unbind(priv->fd.sysfs_drv, priv->dev_bus_addr, ""); + driver_unbind(priv, ""); - driver_bind(priv->fd.sysfs_drv, priv->dev_bus_addr); + driver_bind(priv); - healthcheck(); + healthcheck(priv); } static void unplug_rescan(struct hotunplug *priv) @@ -221,11 +219,11 @@ static void unplug_rescan(struct hotunplug *priv) igt_debug("closing the device\n"); close(priv->fd.drm); -
[Intel-gfx] [PATCH i-g-t v5 15/21] tests/core_hotunplug: Assert expected device presence/absence
Don't rely on successful write to sysfs control files, assert existence / non-existence of a respective device sysfs node as well. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index bbc9d30b5..b53c9ecde 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -127,6 +127,9 @@ static void driver_unbind(struct hotunplug *priv, const char *prefix, priv->dev_bus_addr), "Driver unbind failure!\n"); igt_reset_timeout(); + + igt_assert_f(faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr, F_OK, 0), +"Unbound device still present\n"); } /* Re-bind the driver to the device */ @@ -140,6 +143,10 @@ static void driver_bind(struct hotunplug *priv, int timeout) priv->dev_bus_addr), "Driver re-bind failure\n!"); igt_reset_timeout(); + + igt_fail_on_f(faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr, + F_OK, 0), + "Rebound device not present!\n"); } /* Remove (virtually unplug) the device from its bus */ @@ -162,6 +169,9 @@ static void device_unplug(struct hotunplug *priv, const char *prefix, priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); igt_assert_eq(priv->fd.sysfs_dev, -1); + + igt_assert_f(faccessat(priv->fd.sysfs_bus, priv->dev_bus_addr, F_OK, 0), +"Unplugged device still present\n"); } /* Re-discover the device by rescanning its bus */ @@ -174,6 +184,10 @@ static void bus_rescan(struct hotunplug *priv, int timeout) igt_assert_f(igt_sysfs_set(priv->fd.sysfs_bus, "../rescan", "1"), "Bus rescan failure!\n"); igt_reset_timeout(); + + igt_fail_on_f(faccessat(priv->fd.sysfs_bus, priv->dev_bus_addr, + F_OK, 0), + "Fakely unplugged device not rediscovered!\n"); } static void cleanup(struct hotunplug *priv) -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 10/21] tests/core_hotunplug: Skip selectively on sysfs close errors
Since we no longer open a device DRM sysfs node, only a PCI one, driver unbind operations are no longer affected by missed or unsuccessful sysfs file close attempts. Skip only affected subtests if that happens. v2: Rebase only. v3: Refresh. v4: Refresh. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 1da0e5a9f..25508db85 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -110,7 +110,6 @@ static void prepare(struct hotunplug *priv) igt_assert_fd(priv->fd.sysfs_bus); priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); - igt_assert_eq(priv->fd.sysfs_dev, -1); } /* Unbind the driver from the device */ @@ -140,7 +139,8 @@ static void driver_bind(struct hotunplug *priv) /* Remove (virtually unplug) the device from its bus */ static void device_unplug(struct hotunplug *priv, const char *prefix) { - igt_assert_eq(priv->fd.sysfs_dev, -1); + igt_require(priv->fd.sysfs_dev == -1); + priv->fd.sysfs_dev = openat(priv->fd.sysfs_bus, priv->dev_bus_addr, O_DIRECTORY); igt_assert_fd(priv->fd.sysfs_dev); @@ -196,7 +196,6 @@ static void post_healthcheck(struct hotunplug *priv) igt_abort_on_f(priv->failure, "%s\n", priv->failure); igt_require(priv->fd.drm == -1); - igt_require(priv->fd.sysfs_dev == -1); } static void set_filter_from_device(int fd) -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 11/21] tests/core_hotunplug: Recover from subtest failures
Subtests now forcibly call or request igt_abort on failures in order to avoid silently leaving an exercised device in an unusable state. However, a failure inside a subtest doesn't always mean the device is no longer working correctly and reboot is needed. On the other hand, if a subtest just fails without aborting, that doesn't mean in turn the device is healthy. We should still perform a device health check in that case before deciding on next steps. Reuse the 'failure' structure field as a mark which is set before each critical operation is executed that must be followed by a successful health check in order to avoid aborting the test. Then, follow each subtest with its individual igt_fixture section, from where device file descriptors potentially left open are closed, device rediscover or driver rebing operation is run as needed, and finally the health check is run again if the preceding igt_subtest section has exited with the marker set. v2: Start each recovery phase from unconditionally closing file descriptors potentially left open by a subtest before it entered its critical section, - replace igt_require() with 'if() return;' construct in recover() to reduce noise, - replace "subtest failure" message used as a request for healthcheck with a more appropriate "need healthcheck" for clarity, - rebase on current upstream master. v3: Refresh, - move bus_rescan() and driver_bind() function calls back from heaalthcheck() to recover() so a pure health check can still be called from a subtest if essential, - move failure mark assignments back from subtests to helpers for more adequate abort reason reporting but clean the mark only on health check success, - call cleanup() also from post_healthcheck() in order to close a device file descriptor potentially left open by a failed health check, - reword commit message and update description. v4: Close exercised device fd before failing a health check run, - don't drop health checks from subtest bodies, their results should always matter. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski # v1 --- tests/core_hotunplug.c | 100 ++--- 1 file changed, 74 insertions(+), 26 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 25508db85..b72361900 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -69,6 +69,9 @@ static int local_drm_open_driver(const char *prefix, const char *suffix) static int local_close(int fd, const char *message) { + if (fd < 0) /* not open - return current status */ + return fd; + errno = 0; if (igt_warn_on_f(close(fd), "%s\n", message)) return -errno; /* (never -1) */ @@ -116,24 +119,22 @@ static void prepare(struct hotunplug *priv) static void driver_unbind(struct hotunplug *priv, const char *prefix) { igt_debug("%sunbinding the driver from the device\n", prefix); + priv->failure = "Driver unbind failure!"; - priv->failure = "Driver unbind timeout!"; - igt_set_timeout(60, priv->failure); + igt_set_timeout(60, "Driver unbind timeout!"); igt_sysfs_set(priv->fd.sysfs_drv, "unbind", priv->dev_bus_addr); igt_reset_timeout(); - priv->failure = NULL; } /* Re-bind the driver to the device */ static void driver_bind(struct hotunplug *priv) { igt_debug("rebinding the driver to the device\n"); + priv->failure = "Driver re-bind failure!"; - priv->failure = "Driver re-bind timeout!"; - igt_set_timeout(60, priv->failure); + igt_set_timeout(60, "Driver re-bind timeout!"); igt_sysfs_set(priv->fd.sysfs_drv, "bind", priv->dev_bus_addr); igt_reset_timeout(); - priv->failure = NULL; } /* Remove (virtually unplug) the device from its bus */ @@ -146,12 +147,11 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) igt_assert_fd(priv->fd.sysfs_dev); igt_debug("%sunplugging the device\n", prefix); + priv->failure = "Device unplug failure!"; - priv->failure = "Device unplug timeout!"; - igt_set_timeout(60, priv->failure); + igt_set_timeout(60, "Device unplug timeout!"); igt_sysfs_set(priv->fd.sysfs_dev, "remove", "1"); igt_reset_timeout(); - priv->failure = NULL; priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); } @@ -160,17 +160,23 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) static void bus_rescan(struct hotunplug *priv) { igt_debug("rediscovering the device\n"); + priv->failure = "Bus rescan failure!"; - priv->failure = "Bus rescan timeout!"; - igt_set_timeout(60, priv->failure); + igt_set_timeout(60, "Bus rescan timeout!"); igt_sysfs_set(priv->fd.sysfs_bus, "../rescan", "1"); igt_reset_timeout(); - priv->failure = NULL; +} + +static void
[Intel-gfx] [PATCH i-g-t v5 06/21] tests/core_hotunplug: Maintain a single data structure instance
The following changes to the test are planned: - avoid global variables if possible, - prepare invariant data only once per test run, - skip subsequent subtests after device close errors, - allow subtests to fail on errors and try to recover from those failures in follow up igt dixture sections instead of aborting. For that to be possible, maintain a single instance of hotunplug structure at igt_main level and pass it down to subtests. v2: Commit description refreshed. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 56 -- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 46f9ad118..95d326ee9 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -198,68 +198,62 @@ static void set_filter_from_device(int fd) /* Subtests */ -static void unbind_rebind(void) +static void unbind_rebind(struct hotunplug *priv) { - struct hotunplug priv; char buf[PATH_MAX]; - prepare(, buf, sizeof(buf)); + prepare(priv, buf, sizeof(buf)); igt_debug("closing the device\n"); - close(priv.fd.drm); + close(priv->fd.drm); - driver_unbind(priv.fd.sysfs_drv, priv.dev_bus_addr, ""); + driver_unbind(priv->fd.sysfs_drv, priv->dev_bus_addr, ""); - driver_bind(priv.fd.sysfs_drv, priv.dev_bus_addr); + driver_bind(priv->fd.sysfs_drv, priv->dev_bus_addr); healthcheck(); } -static void unplug_rescan(void) +static void unplug_rescan(struct hotunplug *priv) { - struct hotunplug priv; - - prepare(, NULL, 0); + prepare(priv, NULL, 0); igt_debug("closing the device\n"); - close(priv.fd.drm); + close(priv->fd.drm); - device_unplug(priv.fd.sysfs_dev, ""); + device_unplug(priv->fd.sysfs_dev, ""); - bus_rescan(priv.fd.sysfs_bus); + bus_rescan(priv->fd.sysfs_bus); healthcheck(); } -static void hotunbind_lateclose(void) +static void hotunbind_lateclose(struct hotunplug *priv) { - struct hotunplug priv; char buf[PATH_MAX]; - prepare(, buf, sizeof(buf)); + prepare(priv, buf, sizeof(buf)); - driver_unbind(priv.fd.sysfs_drv, priv.dev_bus_addr, "hot "); + driver_unbind(priv->fd.sysfs_drv, priv->dev_bus_addr, "hot "); - driver_bind(priv.fd.sysfs_drv, priv.dev_bus_addr); + driver_bind(priv->fd.sysfs_drv, priv->dev_bus_addr); igt_debug("late closing the unbound device instance\n"); - close(priv.fd.drm); + close(priv->fd.drm); healthcheck(); } -static void hotunplug_lateclose(void) +static void hotunplug_lateclose(struct hotunplug *priv) { - struct hotunplug priv; - - prepare(, NULL, 0); + prepare(priv, NULL, 0); - device_unplug(priv.fd.sysfs_dev, "hot "); + device_unplug(priv->fd.sysfs_dev, "hot "); - bus_rescan(priv.fd.sysfs_bus); + bus_rescan(priv->fd.sysfs_bus); igt_debug("late closing the removed device instance\n"); - close(priv.fd.drm); + close(priv->fd.drm); healthcheck(); } @@ -268,6 +262,8 @@ static void hotunplug_lateclose(void) igt_main { + struct hotunplug priv; + igt_fixture { int fd_drm; @@ -287,28 +283,28 @@ igt_main igt_describe("Check if the driver can be cleanly unbound from a device believed to be closed"); igt_subtest("unbind-rebind") - unbind_rebind(); + unbind_rebind(); igt_fixture igt_abort_on_f(failure, "%s\n", failure); igt_describe("Check if a device believed to be closed can be cleanly unplugged"); igt_subtest("unplug-rescan") - unplug_rescan(); + unplug_rescan(); igt_fixture igt_abort_on_f(failure, "%s\n", failure); igt_describe("Check if the driver can be cleanly unbound from a still open device, then released"); igt_subtest("hotunbind-lateclose") - hotunbind_lateclose(); + hotunbind_lateclose(); igt_fixture igt_abort_on_f(failure, "%s\n", failure); igt_describe("Check if a still open device can be cleanly unplugged, then released"); igt_subtest("hotunplug-lateclose") - hotunplug_lateclose(); + hotunplug_lateclose(); igt_fixture igt_abort_on_f(failure, "%s\n", failure); -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 14/21] tests/core_hotunplug: Process return values of sysfs operations
Return values of driver bind/unbind / device remove/recover sysfs operations are now ignored. Assert their correctness. v2: Add trailing newlines missing from igt_assert messages. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 1fdbd9b4c..bbc9d30b5 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -123,7 +123,9 @@ static void driver_unbind(struct hotunplug *priv, const char *prefix, priv->failure = "Driver unbind failure!"; igt_set_timeout(timeout, "Driver unbind timeout!"); - igt_sysfs_set(priv->fd.sysfs_drv, "unbind", priv->dev_bus_addr); + igt_assert_f(igt_sysfs_set(priv->fd.sysfs_drv, "unbind", + priv->dev_bus_addr), +"Driver unbind failure!\n"); igt_reset_timeout(); } @@ -134,7 +136,9 @@ static void driver_bind(struct hotunplug *priv, int timeout) priv->failure = "Driver re-bind failure!"; igt_set_timeout(timeout, "Driver re-bind timeout!"); - igt_sysfs_set(priv->fd.sysfs_drv, "bind", priv->dev_bus_addr); + igt_assert_f(igt_sysfs_set(priv->fd.sysfs_drv, "bind", + priv->dev_bus_addr), +"Driver re-bind failure\n!"); igt_reset_timeout(); } @@ -152,7 +156,8 @@ static void device_unplug(struct hotunplug *priv, const char *prefix, priv->failure = "Device unplug failure!"; igt_set_timeout(timeout, "Device unplug timeout!"); - igt_sysfs_set(priv->fd.sysfs_dev, "remove", "1"); + igt_assert_f(igt_sysfs_set(priv->fd.sysfs_dev, "remove", "1"), +"Device unplug failure\n!"); igt_reset_timeout(); priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); @@ -166,7 +171,8 @@ static void bus_rescan(struct hotunplug *priv, int timeout) priv->failure = "Bus rescan failure!"; igt_set_timeout(timeout, "Bus rescan timeout!"); - igt_sysfs_set(priv->fd.sysfs_bus, "../rescan", "1"); + igt_assert_f(igt_sysfs_set(priv->fd.sysfs_bus, "../rescan", "1"), + "Bus rescan failure!\n"); igt_reset_timeout(); } -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 00/21] tests/core_hotunplug: Fixes and enhancements
Clean up the test code, add some new basic subtests, then unblock unbind test variants. No incompletes / aborts have been reported by Trybot this time. Series changelog: v2: New patch "Un-blocklist *bind* subtests added. v3: Patch "Follow failed subtests with healthcheck" renamed to "Recover from subtest failures". - a new patche "Clean up device open error handling" added, an old patch "Fix missing newline" obsoleted by the new one dropped, - other new patches added: - "Let the driver time out essential sysfs operations", - "More thorough i915 healthcheck and recovery", - a patch "Add 'lateclose before restore' variants" from another series included. v4: Optional patch "Duplicate debug messages in dmesg" from another series included. v5: New patch added with Haswell audio related kernel warning worked around and replaced with an IGT warning to preserve visibility of the issue. @Michał: Since some patch updates are trivial, I've preserved your v1/v2 Reviewd-by: except for patches with non-trivial changes, where I marked your R-b as v1/v2 applicable. Please have a look and confirm if you are still OK with them. @Tvrtko: As I already asked before, please support my attempt to remove the unbind test variants from the blocklist. @Petri, @Martin: Assuming CI results will be as good as those obtained on Trybot, please give me your green light for merging this series if you have no objections. Thanks, Janusz Janusz Krzysztofik (21): tests/core_hotunplug: Use igt_assert_fd() tests/core_hotunplug: Constify dev_bus_addr string tests/core_hotunplug: Clean up device open error handling tests/core_hotunplug: Consolidate duplicated debug messages tests/core_hotunplug: Assert successful device filter application tests/core_hotunplug: Maintain a single data structure instance tests/core_hotunplug: Pass errors via a data structure field tests/core_hotunplug: Handle device close errors tests/core_hotunplug: Prepare invariant data once per test run tests/core_hotunplug: Skip selectively on sysfs close errors tests/core_hotunplug: Recover from subtest failures tests/core_hotunplug: Fail subtests on device close errors tests/core_hotunplug: Let the driver time out essential sysfs operations tests/core_hotunplug: Process return values of sysfs operations tests/core_hotunplug: Assert expected device presence/absence tests/core_hotunplug: Explicitly ignore unused return values tests/core_hotunplug: More thorough i915 healthcheck and recovery tests/core_hotunplug: Add 'lateclose before restore' variants tests/core_hotunplug: Duplicate debug messages in dmesg tests/core_hotunplug: HSW audio issue workaround tests/core_hotunplug: Un-blocklist *bind* subtests tests/core_hotunplug.c | 542 ++- tests/intel-ci/blacklist.txt | 2 +- 2 files changed, 410 insertions(+), 134 deletions(-) -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 08/21] tests/core_hotunplug: Handle device close errors
The test now ignores device close errors. Those errors are believed to have no influence on device health so there is no need to process them the same way as we mostly do on errors, i.e., notify CI about a problem via igt_abort. However, those errors may indicate issues with the test itself. Moreover, impact of those errors on operations performed by subtests, like driver unbind or device remove, should be perceived as undefined. Then, we should fail as soon as a device or device sysfs node close error occurs in a subtest and also skip subsequent subtests. However, once a driver unbind or device unplug operation has been attempted by a subtest, we would still like to check the device health. When in a subtest, store results of device close operations for future reference. Reuse file descriptor fields of the hotunplug structure for that. Unless in between of a driver remove or device unplug operation and a successful device health check completion, fail current test section right after a device close error occurs, warn otherwise. If still running, examine device file descriptor fields in subsequent igt_fixture sections and skip on errors. v2: Fix a typo in post_healthcheck function name. v3: Don't fail on close error after successful health check, warn only, - move duplicated messages to helpers. v4: On start of each subtest assert device file descriptors closed cleanly. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski # v1 --- tests/core_hotunplug.c | 68 +- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 4f7e89c95..2884c3f77 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -43,7 +43,7 @@ struct hotunplug { int sysfs_dev; int sysfs_bus; int sysfs_drv; - } fd; + } fd; /* >= 0: valid fd, == -1: closed, < -1: close failed */ const char *dev_bus_addr; const char *failure; }; @@ -67,6 +67,25 @@ static int local_drm_open_driver(const char *prefix, const char *suffix) return fd_drm; } +static int local_close(int fd, const char *message) +{ + errno = 0; + if (igt_warn_on_f(close(fd), "%s\n", message)) + return -errno; /* (never -1) */ + + return -1; /* success - return 'closed' */ +} + +static int close_device(int fd_drm) +{ + return local_close(fd_drm, "Device close failed"); +} + +static int close_sysfs(int fd_sysfs_dev) +{ + return local_close(fd_sysfs_dev, "Device sysfs node close failed"); +} + static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) { int len; @@ -83,11 +102,16 @@ static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) igt_assert(priv->dev_bus_addr++); /* sysfs_dev no longer needed */ - close(priv->fd.sysfs_dev); + priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); + igt_assert_eq(priv->fd.sysfs_dev, -1); } static void prepare(struct hotunplug *priv, char *buf, int buflen) { + /* assert device file descriptors closed cleanly on subtest start */ + igt_assert_eq(priv->fd.drm, -1); + igt_assert_eq(priv->fd.sysfs_dev, -1); + priv->fd.drm = local_drm_open_driver("", " for subtest"); priv->fd.sysfs_dev = igt_sysfs_open(priv->fd.drm); @@ -142,7 +166,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) igt_reset_timeout(); priv->failure = NULL; - close(priv->fd.sysfs_dev); + priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); } /* Re-discover the device by rescanning its bus */ @@ -161,6 +185,7 @@ static void bus_rescan(struct hotunplug *priv) static void healthcheck(struct hotunplug *priv) { + /* preserve error code potentially stored before in priv->fd.drm */ int fd_drm; /* device name may have changed, rebuild IGT device list */ @@ -176,7 +201,17 @@ static void healthcheck(struct hotunplug *priv) priv->failure = NULL; } - close(fd_drm); + fd_drm = close_device(fd_drm); + if (priv->fd.drm == -1) /* store result if no error code to preserve */ + priv->fd.drm = fd_drm; +} + +static void post_healthcheck(struct hotunplug *priv) +{ + igt_abort_on_f(priv->failure, "%s\n", priv->failure); + + igt_require(priv->fd.drm == -1); + igt_require(priv->fd.sysfs_dev == -1); } static void set_filter_from_device(int fd) @@ -203,7 +238,8 @@ static void unbind_rebind(struct hotunplug *priv) prepare(priv, buf, sizeof(buf)); igt_debug("closing the device\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm); + igt_assert_eq(priv->fd.drm, -1); driver_unbind(priv, ""); @@ -217,7 +253,8 @@ static void unplug_rescan(struct hotunplug *priv) prepare(priv,
[Intel-gfx] [PATCH i-g-t v5 01/21] tests/core_hotunplug: Use igt_assert_fd()
There is a new library helper that asserts validity of open file descriptors. Use it instead of open coding. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index e03f3b945..7431346b1 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -57,7 +57,7 @@ static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) priv->fd.sysfs_drv = openat(priv->fd.sysfs_dev, "device/driver", O_DIRECTORY); - igt_assert(priv->fd.sysfs_drv >= 0); + igt_assert_fd(priv->fd.sysfs_drv); len = readlinkat(priv->fd.sysfs_dev, "device", buf, buflen - 1); buf[len] = '\0'; @@ -72,10 +72,10 @@ static void prepare(struct hotunplug *priv, char *buf, int buflen) { igt_debug("opening device\n"); priv->fd.drm = __drm_open_driver(DRIVER_ANY); - igt_assert(priv->fd.drm >= 0); + igt_assert_fd(priv->fd.drm); priv->fd.sysfs_dev = igt_sysfs_open(priv->fd.drm); - igt_assert(priv->fd.sysfs_dev >= 0); + igt_assert_fd(priv->fd.sysfs_dev); if (buf) { prepare_for_unbind(priv, buf, buflen); @@ -83,7 +83,7 @@ static void prepare(struct hotunplug *priv, char *buf, int buflen) /* prepare for bus rescan */ priv->fd.sysfs_bus = openat(priv->fd.sysfs_dev, "device/subsystem", O_DIRECTORY); - igt_assert(priv->fd.sysfs_bus >= 0); + igt_assert_fd(priv->fd.sysfs_bus); } } @@ -261,7 +261,7 @@ igt_main * a device file descriptor open for exit handler use. */ fd_drm = __drm_open_driver(DRIVER_ANY); - igt_assert(fd_drm >= 0); + igt_assert_fd(fd_drm); if (is_i915_device(fd_drm)) igt_require_gem(fd_drm); -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 05/21] tests/core_hotunplug: Assert successful device filter application
Return value of igt_device_filter_add() representing a number of successfully installed device filters is now ignored. Fail if not 1. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 5093233d7..46f9ad118 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -193,7 +193,7 @@ static void set_filter_from_device(int fd) igt_assert(realpath(path, dst)); igt_device_filter_free_all(); - igt_device_filter_add(filter); + igt_assert_eq(igt_device_filter_add(filter), 1); } /* Subtests */ -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH i-g-t v5 04/21] tests/core_hotunplug: Consolidate duplicated debug messages
Some debug messages which designate specific test operations, or their greater parts at least, sound always the same, no matter which subtest they are called from. Emit them, possibly updated with subtest specified modifiers, from inside respective helpers instead of duplicating them in subtest bodies. v2: Rebase only. v3: Refresh and extend over new case (local_drm_open_driver), - allow callers to specify a message suffix as well where applicable. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski # v1 --- tests/core_hotunplug.c | 39 --- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index e576a6c6c..5093233d7 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -54,10 +54,12 @@ struct hotunplug { * use drm_open_driver() since in case of an i915 device it opens it * twice and keeps a second file descriptor open for exit handler use. */ -static int local_drm_open_driver(void) +static int local_drm_open_driver(const char *prefix, const char *suffix) { int fd_drm; + igt_debug("%sopening device%s\n", prefix, suffix); + fd_drm = __drm_open_driver(DRIVER_ANY); igt_assert_fd(fd_drm); @@ -85,8 +87,7 @@ static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) static void prepare(struct hotunplug *priv, char *buf, int buflen) { - igt_debug("opening device\n"); - priv->fd.drm = local_drm_open_driver(); + priv->fd.drm = local_drm_open_driver("", " for subtest"); priv->fd.sysfs_dev = igt_sysfs_open(priv->fd.drm); igt_assert_fd(priv->fd.sysfs_dev); @@ -104,8 +105,11 @@ static void prepare(struct hotunplug *priv, char *buf, int buflen) static const char *failure; /* Unbind the driver from the device */ -static void driver_unbind(int fd_sysfs_drv, const char *dev_bus_addr) +static void driver_unbind(int fd_sysfs_drv, const char *dev_bus_addr, + const char *prefix) { + igt_debug("%sunbinding the driver from the device\n", prefix); + failure = "Driver unbind timeout!"; igt_set_timeout(60, failure); igt_sysfs_set(fd_sysfs_drv, "unbind", dev_bus_addr); @@ -118,6 +122,8 @@ static void driver_unbind(int fd_sysfs_drv, const char *dev_bus_addr) /* Re-bind the driver to the device */ static void driver_bind(int fd_sysfs_drv, const char *dev_bus_addr) { + igt_debug("rebinding the driver to the device\n"); + failure = "Driver re-bind timeout!"; igt_set_timeout(60, failure); igt_sysfs_set(fd_sysfs_drv, "bind", dev_bus_addr); @@ -128,8 +134,10 @@ static void driver_bind(int fd_sysfs_drv, const char *dev_bus_addr) } /* Remove (virtually unplug) the device from its bus */ -static void device_unplug(int fd_sysfs_dev) +static void device_unplug(int fd_sysfs_dev, const char *prefix) { + igt_debug("%sunplugging the device\n", prefix); + failure = "Device unplug timeout!"; igt_set_timeout(60, failure); igt_sysfs_set(fd_sysfs_dev, "device/remove", "1"); @@ -142,6 +150,8 @@ static void device_unplug(int fd_sysfs_dev) /* Re-discover the device by rescanning its bus */ static void bus_rescan(int fd_sysfs_bus) { + igt_debug("rediscovering the device\n"); + failure = "Bus rescan timeout!"; igt_set_timeout(60, failure); igt_sysfs_set(fd_sysfs_bus, "rescan", "1"); @@ -158,9 +168,8 @@ static void healthcheck(void) /* device name may have changed, rebuild IGT device list */ igt_devices_scan(true); - igt_debug("reopening the device\n"); failure = "Device reopen failure!"; - fd_drm = local_drm_open_driver(); + fd_drm = local_drm_open_driver("re", " for healthcheck"); failure = NULL; if (is_i915_device(fd_drm)) { @@ -199,10 +208,8 @@ static void unbind_rebind(void) igt_debug("closing the device\n"); close(priv.fd.drm); - igt_debug("unbinding the driver from the device\n"); - driver_unbind(priv.fd.sysfs_drv, priv.dev_bus_addr); + driver_unbind(priv.fd.sysfs_drv, priv.dev_bus_addr, ""); - igt_debug("rebinding the driver to the device\n"); driver_bind(priv.fd.sysfs_drv, priv.dev_bus_addr); healthcheck(); @@ -217,10 +224,8 @@ static void unplug_rescan(void) igt_debug("closing the device\n"); close(priv.fd.drm); - igt_debug("unplugging the device\n"); - device_unplug(priv.fd.sysfs_dev); + device_unplug(priv.fd.sysfs_dev, ""); - igt_debug("recovering the device\n"); bus_rescan(priv.fd.sysfs_bus); healthcheck(); @@ -233,10 +238,8 @@ static void hotunbind_lateclose(void) prepare(, buf, sizeof(buf)); - igt_debug("hot unbinding the driver from the device\n"); - driver_unbind(priv.fd.sysfs_drv, priv.dev_bus_addr); + driver_unbind(priv.fd.sysfs_drv,
[Intel-gfx] [PATCH i-g-t v5 02/21] tests/core_hotunplug: Constify dev_bus_addr string
Device bus address structure field is always initialized with a pointer to a substring of the device sysfs path and never used for its modification. Declare it as a constant string. Signed-off-by: Janusz Krzysztofik Reviewed-by: Michał Winiarski --- tests/core_hotunplug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 7431346b1..a4071f51e 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -44,7 +44,7 @@ struct hotunplug { int sysfs_bus; int sysfs_drv; } fd; - char *dev_bus_addr; + const char *dev_bus_addr; }; /* Helpers */ -- 2.21.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/opregion: add support for mailbox #5 EDID
== Series Details == Series: series starting with [1/2] drm/i915/opregion: add support for mailbox #5 EDID URL : https://patchwork.freedesktop.org/series/81121/ State : failure == Summary == CI Bug Log - changes from CI_DRM_8937 -> Patchwork_18418 Summary --- **FAILURE** Serious unknown changes coming with Patchwork_18418 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_18418, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/index.html Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_18418: ### IGT changes ### Possible regressions * igt@gem_exec_parallel@engines@basic: - fi-icl-u2: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-icl-u2/igt@gem_exec_parallel@engi...@basic.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-icl-u2/igt@gem_exec_parallel@engi...@basic.html * igt@i915_selftest@live@requests: - fi-cml-s: [PASS][3] -> [INCOMPLETE][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-cml-s/igt@i915_selftest@l...@requests.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-cml-s/igt@i915_selftest@l...@requests.html * igt@runner@aborted: - fi-icl-u2: NOTRUN -> [FAIL][5] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-icl-u2/igt@run...@aborted.html Known issues Here are the changes found in Patchwork_18418 that come from known issues: ### IGT changes ### Issues hit * igt@i915_selftest@live@execlists: - fi-icl-y: [PASS][6] -> [INCOMPLETE][7] ([i915#2276]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-icl-y/igt@i915_selftest@l...@execlists.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-icl-y/igt@i915_selftest@l...@execlists.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic: - fi-byt-j1900: [PASS][8] -> [DMESG-WARN][9] ([i915#1982]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-byt-j1900/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-byt-j1900/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html Possible fixes * igt@i915_module_load@reload: - fi-icl-y: [TIMEOUT][10] -> [PASS][11] [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-icl-y/igt@i915_module_l...@reload.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-icl-y/igt@i915_module_l...@reload.html * igt@i915_pm_rpm@basic-pci-d3-state: - fi-bsw-kefka: [DMESG-WARN][12] ([i915#1982]) -> [PASS][13] [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-bsw-kefka/igt@i915_pm_...@basic-pci-d3-state.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-bsw-kefka/igt@i915_pm_...@basic-pci-d3-state.html * igt@i915_pm_rpm@module-reload: - fi-icl-y: [SKIP][14] ([i915#579]) -> [PASS][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-icl-y/igt@i915_pm_...@module-reload.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-icl-y/igt@i915_pm_...@module-reload.html Warnings * igt@gem_exec_suspend@basic-s0: - fi-kbl-x1275: [DMESG-WARN][16] ([i915#62] / [i915#92]) -> [DMESG-WARN][17] ([i915#1982] / [i915#62] / [i915#92] / [i915#95]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-kbl-x1275/igt@gem_exec_susp...@basic-s0.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-kbl-x1275/igt@gem_exec_susp...@basic-s0.html * igt@kms_flip@basic-plain-flip@a-dp1: - fi-kbl-x1275: [DMESG-WARN][18] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][19] ([i915#62] / [i915#92]) +1 similar issue [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-kbl-x1275/igt@kms_flip@basic-plain-f...@a-dp1.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-kbl-x1275/igt@kms_flip@basic-plain-f...@a-dp1.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-x1275: [DMESG-WARN][20] ([i915#62] / [i915#92]) -> [DMESG-WARN][21] ([i915#62] / [i915#92] / [i915#95]) +1 similar issue [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8937/fi-kbl-x1275/igt@prime_v...@basic-fence-flip.html [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18418/fi-kbl-x1275/igt@prime_v...@basic-fence-flip.html [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#2276]:
[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/2] drm/i915/opregion: add support for mailbox #5 EDID
== Series Details == Series: series starting with [1/2] drm/i915/opregion: add support for mailbox #5 EDID URL : https://patchwork.freedesktop.org/series/81121/ State : warning == Summary == $ dim sparse --fast origin/drm-tip Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. - +drivers/gpu/drm/i915/gt/intel_reset.c:1311:5: warning: context imbalance in 'intel_gt_reset_trylock' - different lock contexts for basic block +drivers/gpu/drm/i915/gvt/mmio.c:287:23: warning: memcpy with byte count of 279040 +drivers/gpu/drm/i915/i915_perf.c:1440:15: warning: memset with byte count of 16777216 +drivers/gpu/drm/i915/i915_perf.c:1494:15: warning: memset with byte count of 16777216 +./include/linux/seqlock.h:752:24: warning: trying to copy expression type 31 +./include/linux/seqlock.h:778:16: warning: trying to copy expression type 31 +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_read16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_read32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_read64' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_read8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_write16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_write32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'fwtable_write8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_read16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_read32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_read64' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_read8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_write16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_write32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen11_fwtable_write8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_read16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_read32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_read64' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_read8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_write16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_write32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen12_fwtable_write8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_read16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_read32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_read64' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_read8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_write16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_write32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen6_write8' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen8_write16' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen8_write32' - different lock contexts for basic block +./include/linux/spinlock.h:409:9: warning: context imbalance in 'gen8_write8' - different lock contexts for basic block ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add support for mailbox #5 EDID
On Fri, 28 Aug 2020, Jani Nikula wrote: > The ACPI OpRegion Mailbox #5 ASLE extension may contain an EDID to be > used for the embedded display. Add support for using it via the EDID > override mechanism. > > Note that the override EDID may be later reset or changed via debugfs, > as usual. > > Cc: Uma Shankar > Signed-off-by: Jani Nikula > --- > drivers/gpu/drm/i915/display/intel_opregion.c | 46 ++- > drivers/gpu/drm/i915/display/intel_opregion.h | 8 > 2 files changed, 53 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c > b/drivers/gpu/drm/i915/display/intel_opregion.c > index de995362f428..13485969fafa 100644 > --- a/drivers/gpu/drm/i915/display/intel_opregion.c > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c > @@ -196,6 +196,8 @@ struct opregion_asle_ext { > #define ASLE_IUER_WINDOWS_BTN(1 << 1) > #define ASLE_IUER_POWER_BTN (1 << 0) > > +#define ASLE_PHED_EDID_VALID_MASK0x3 > + > /* Software System Control Interrupt (SWSCI) */ > #define SWSCI_SCIC_INDICATOR (1 << 0) > #define SWSCI_SCIC_MAIN_FUNCTION_SHIFT 1 > @@ -909,8 +911,10 @@ int intel_opregion_setup(struct drm_i915_private > *dev_priv) > opregion->asle->ardy = ASLE_ARDY_NOT_READY; > } > > - if (mboxes & MBOX_ASLE_EXT) > + if (mboxes & MBOX_ASLE_EXT) { > drm_dbg(_priv->drm, "ASLE extension supported\n"); > + opregion->asle_ext = base + OPREGION_ASLE_EXT_OFFSET; > + } > > if (intel_load_vbt_firmware(dev_priv) == 0) > goto out; > @@ -1041,6 +1045,45 @@ intel_opregion_get_panel_type(struct drm_i915_private > *dev_priv) > return ret - 1; > } > > +void intel_opregion_edid_override(struct intel_connector *intel_connector) > +{ > + struct drm_connector *connector = _connector->base; > + struct drm_i915_private *i915 = to_i915(connector->dev); > + struct intel_opregion *opregion = >opregion; > + const void *in_edid; > + const struct edid *edid; > + int len, ret; > + > + if (!opregion->asle_ext) > + return; > + > + in_edid = opregion->asle_ext->bddc; > + > + /* Validity corresponds to number of 128-byte blocks */ > + len = (opregion->asle_ext->phed & ASLE_PHED_EDID_VALID_MASK) * 128; > + if (!len || !memchr_inv(in_edid, 0, len)) > + return; > + > + edid = in_edid; > + > + /* > + * FIXME: Might also check drm_edid_is_valid(edid) here but that > + * requires mutable edid. > + */ > + if (len < EDID_LENGTH * (1 + edid->extensions)) { > + drm_dbg_kms(>drm, "Invalid EDID in ACPI OpRegion (Mailbox > #5)\n"); > + return; > + } > + > + connector->override_edid = false; > + ret = drm_connector_update_edid_property(connector, edid); > + if (ret) > + return; > + This is missing here: connector->override_edid = true; > + drm_dbg_kms(>drm, "Using OpRegion EDID for [CONNECTOR:%d:%s]\n", > + connector->base.id, connector->name); > +} > + > void intel_opregion_register(struct drm_i915_private *i915) > { > struct intel_opregion *opregion = >opregion; > @@ -1131,6 +1174,7 @@ void intel_opregion_unregister(struct drm_i915_private > *i915) > opregion->acpi = NULL; > opregion->swsci = NULL; > opregion->asle = NULL; > + opregion->asle_ext = NULL; > opregion->vbt = NULL; > opregion->lid_state = NULL; > } > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h > b/drivers/gpu/drm/i915/display/intel_opregion.h > index 4aa68ffbd30e..b407a0744c40 100644 > --- a/drivers/gpu/drm/i915/display/intel_opregion.h > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h > @@ -29,12 +29,14 @@ > #include > > struct drm_i915_private; > +struct intel_connector; > struct intel_encoder; > > struct opregion_header; > struct opregion_acpi; > struct opregion_swsci; > struct opregion_asle; > +struct opregion_asle_ext; > > struct intel_opregion { > struct opregion_header *header; > @@ -43,6 +45,7 @@ struct intel_opregion { > u32 swsci_gbda_sub_functions; > u32 swsci_sbcb_sub_functions; > struct opregion_asle *asle; > + struct opregion_asle_ext *asle_ext; > void *rvda; > void *vbt_firmware; > const void *vbt; > @@ -71,6 +74,7 @@ int intel_opregion_notify_encoder(struct intel_encoder > *intel_encoder, > int intel_opregion_notify_adapter(struct drm_i915_private *dev_priv, > pci_power_t state); > int intel_opregion_get_panel_type(struct drm_i915_private *dev_priv); > +void intel_opregion_edid_override(struct intel_connector *connector); > > #else /* CONFIG_ACPI*/ > > @@ -117,6 +121,10 @@ static inline int intel_opregion_get_panel_type(struct > drm_i915_private *dev) > return -ENODEV; > } > > +void intel_opregion_edid_override(struct intel_connector
Re: [Intel-gfx] [PATCH v8 06/11] drm/i915: Enable big joiner support in enable and disable sequences.
Op 28-08-2020 om 01:35 schreef Navare, Manasi: > On Mon, Aug 10, 2020 at 04:28:28PM -0700, Manasi Navare wrote: >> From: Maarten Lankhorst >> >> Make vdsc work when no output is enabled. The big joiner needs VDSC >> on the slave, so enable it and set the appropriate bits. >> Also update timestamping constants, because slave crtc's are not >> updated in drm_atomic_helper_update_legacy_modeset_state(). >> >> This should be enough to bring up CRTC's in a big joiner configuration, >> without any plane configuration on the second pipe yet. >> >> HOWEVER, we still bring up the crtc's in the wrong order. We need to >> make sure that the master crtc is brought up after the slave crtc. >> This is done correctly later in this series. >> >> The next steps are to enable planes correctly, and make sure we enable >> and update both master and slave in the correct order. >> >> v2: >> * Manual rebase (Manasi) >> >> v3: >> * Rebase (Manasi) >> >> v4: >> * Rebase (Manasi) >> >> v5: >> * Get dsc power domain in ddi_init (Manasi) >> >> v6: >> * Remove dsc power put from dsc_disable (Maarten) >> >> Signed-off-by: Maarten Lankhorst >> Signed-off-by: Manasi Navare >> --- >> drivers/gpu/drm/i915/display/icl_dsi.c| 2 - >> drivers/gpu/drm/i915/display/intel_ddi.c | 68 +++- >> drivers/gpu/drm/i915/display/intel_display.c | 377 -- >> .../drm/i915/display/intel_display_types.h| 1 + >> drivers/gpu/drm/i915/display/intel_dp.c | 6 +- >> drivers/gpu/drm/i915/display/intel_vdsc.c | 201 +- >> drivers/gpu/drm/i915/display/intel_vdsc.h | 7 +- >> 7 files changed, 413 insertions(+), 249 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c >> b/drivers/gpu/drm/i915/display/icl_dsi.c >> index 8c55f5bee9ab..26f7372b4c25 100644 >> --- a/drivers/gpu/drm/i915/display/icl_dsi.c >> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c >> @@ -1454,8 +1454,6 @@ static void gen11_dsi_get_config(struct intel_encoder >> *encoder, >> struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); >> struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); >> >> -intel_dsc_get_config(encoder, pipe_config); > Maarten, > Why do we need to remove this from dsi_get_config()? This is read by the pipe now, which is the only place that does get_config(). > >> - >> /* FIXME: adapt icl_ddi_clock_get() for DSI and use that? */ >> pipe_config->port_clock = intel_dpll_get_freq(i915, >>pipe_config->shared_dpll); >> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c >> b/drivers/gpu/drm/i915/display/intel_ddi.c >> index de5b216561d8..6de13c67f5b8 100644 >> --- a/drivers/gpu/drm/i915/display/intel_ddi.c >> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c >> @@ -28,6 +28,7 @@ >> #include >> >> #include "i915_drv.h" >> +#include "i915_trace.h" >> #include "intel_audio.h" >> #include "intel_combo_phy.h" >> #include "intel_connector.h" >> @@ -2093,12 +2094,6 @@ static void intel_ddi_get_power_domains(struct >> intel_encoder *encoder, >> intel_display_power_get(dev_priv, >> >> intel_ddi_main_link_aux_domain(dig_port)); >> >> -/* >> - * VDSC power is needed when DSC is enabled >> - */ >> -if (crtc_state->dsc.compression_enable) >> -intel_display_power_get(dev_priv, >> -intel_dsc_power_domain(crtc_state)); >> } >> >> void intel_ddi_enable_pipe_clock(struct intel_encoder *encoder, >> @@ -3387,7 +3382,8 @@ static void tgl_ddi_pre_enable_dp(struct >> intel_atomic_state *state, >> >> /* 7.l Configure and enable FEC if needed */ >> intel_ddi_enable_fec(encoder, crtc_state); >> -intel_dsc_enable(encoder, crtc_state); >> +if (!crtc_state->bigjoiner) >> +intel_dsc_enable(encoder, crtc_state); >> } >> >> static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, >> @@ -3458,7 +3454,8 @@ static void hsw_ddi_pre_enable_dp(struct >> intel_atomic_state *state, >> if (!is_mst) >> intel_ddi_enable_pipe_clock(encoder, crtc_state); >> >> -intel_dsc_enable(encoder, crtc_state); >> +if (!crtc_state->bigjoiner) >> +intel_dsc_enable(encoder, crtc_state); >> } >> >> static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state, >> @@ -3713,6 +3710,21 @@ static void intel_ddi_post_disable(struct >> intel_atomic_state *state, >> ilk_pfit_disable(old_crtc_state); >> } >> >> +if (old_crtc_state->bigjoiner_linked_crtc) { >> +struct intel_atomic_state *state = >> +to_intel_atomic_state(old_crtc_state->uapi.state); >> +struct intel_crtc *slave = >> +old_crtc_state->bigjoiner_linked_crtc; >> +const struct intel_crtc_state *old_slave_crtc_state = >> +intel_atomic_get_old_crtc_state(state,
[Intel-gfx] [PATCH 1/2] drm/i915/opregion: add support for mailbox #5 EDID
The ACPI OpRegion Mailbox #5 ASLE extension may contain an EDID to be used for the embedded display. Add support for using it via the EDID override mechanism. Note that the override EDID may be later reset or changed via debugfs, as usual. Cc: Uma Shankar Signed-off-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_opregion.c | 46 ++- drivers/gpu/drm/i915/display/intel_opregion.h | 8 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c index de995362f428..13485969fafa 100644 --- a/drivers/gpu/drm/i915/display/intel_opregion.c +++ b/drivers/gpu/drm/i915/display/intel_opregion.c @@ -196,6 +196,8 @@ struct opregion_asle_ext { #define ASLE_IUER_WINDOWS_BTN (1 << 1) #define ASLE_IUER_POWER_BTN(1 << 0) +#define ASLE_PHED_EDID_VALID_MASK 0x3 + /* Software System Control Interrupt (SWSCI) */ #define SWSCI_SCIC_INDICATOR (1 << 0) #define SWSCI_SCIC_MAIN_FUNCTION_SHIFT 1 @@ -909,8 +911,10 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv) opregion->asle->ardy = ASLE_ARDY_NOT_READY; } - if (mboxes & MBOX_ASLE_EXT) + if (mboxes & MBOX_ASLE_EXT) { drm_dbg(_priv->drm, "ASLE extension supported\n"); + opregion->asle_ext = base + OPREGION_ASLE_EXT_OFFSET; + } if (intel_load_vbt_firmware(dev_priv) == 0) goto out; @@ -1041,6 +1045,45 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv) return ret - 1; } +void intel_opregion_edid_override(struct intel_connector *intel_connector) +{ + struct drm_connector *connector = _connector->base; + struct drm_i915_private *i915 = to_i915(connector->dev); + struct intel_opregion *opregion = >opregion; + const void *in_edid; + const struct edid *edid; + int len, ret; + + if (!opregion->asle_ext) + return; + + in_edid = opregion->asle_ext->bddc; + + /* Validity corresponds to number of 128-byte blocks */ + len = (opregion->asle_ext->phed & ASLE_PHED_EDID_VALID_MASK) * 128; + if (!len || !memchr_inv(in_edid, 0, len)) + return; + + edid = in_edid; + + /* +* FIXME: Might also check drm_edid_is_valid(edid) here but that +* requires mutable edid. +*/ + if (len < EDID_LENGTH * (1 + edid->extensions)) { + drm_dbg_kms(>drm, "Invalid EDID in ACPI OpRegion (Mailbox #5)\n"); + return; + } + + connector->override_edid = false; + ret = drm_connector_update_edid_property(connector, edid); + if (ret) + return; + + drm_dbg_kms(>drm, "Using OpRegion EDID for [CONNECTOR:%d:%s]\n", + connector->base.id, connector->name); +} + void intel_opregion_register(struct drm_i915_private *i915) { struct intel_opregion *opregion = >opregion; @@ -1131,6 +1174,7 @@ void intel_opregion_unregister(struct drm_i915_private *i915) opregion->acpi = NULL; opregion->swsci = NULL; opregion->asle = NULL; + opregion->asle_ext = NULL; opregion->vbt = NULL; opregion->lid_state = NULL; } diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h b/drivers/gpu/drm/i915/display/intel_opregion.h index 4aa68ffbd30e..b407a0744c40 100644 --- a/drivers/gpu/drm/i915/display/intel_opregion.h +++ b/drivers/gpu/drm/i915/display/intel_opregion.h @@ -29,12 +29,14 @@ #include struct drm_i915_private; +struct intel_connector; struct intel_encoder; struct opregion_header; struct opregion_acpi; struct opregion_swsci; struct opregion_asle; +struct opregion_asle_ext; struct intel_opregion { struct opregion_header *header; @@ -43,6 +45,7 @@ struct intel_opregion { u32 swsci_gbda_sub_functions; u32 swsci_sbcb_sub_functions; struct opregion_asle *asle; + struct opregion_asle_ext *asle_ext; void *rvda; void *vbt_firmware; const void *vbt; @@ -71,6 +74,7 @@ int intel_opregion_notify_encoder(struct intel_encoder *intel_encoder, int intel_opregion_notify_adapter(struct drm_i915_private *dev_priv, pci_power_t state); int intel_opregion_get_panel_type(struct drm_i915_private *dev_priv); +void intel_opregion_edid_override(struct intel_connector *connector); #else /* CONFIG_ACPI*/ @@ -117,6 +121,10 @@ static inline int intel_opregion_get_panel_type(struct drm_i915_private *dev) return -ENODEV; } +void intel_opregion_edid_override(struct intel_connector *connector) +{ +} + #endif /* CONFIG_ACPI */ #endif -- 2.20.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 2/2] drm/i915/dp: use opregion mailbox #5 EDID for eDP, if available
If a panel's EDID is broken, there may be an override EDID set in the ACPI OpRegion mailbox #5. Use it if available. Cc: Uma Shankar Signed-off-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_dp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index c57ac83bf563..d1307be196a2 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -8114,6 +8114,9 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, goto out_vdd_off; } + /* Set up override EDID, if any, from ACPI OpRegion */ + intel_opregion_edid_override(intel_connector); + mutex_lock(>mode_config.mutex); edid = drm_get_edid(connector, _dp->aux.ddc); if (edid) { -- 2.20.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx