[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Remove i915 ggtt WA since GT E (rev2)
== Series Details == Series: drm/i915: Remove i915 ggtt WA since GT E (rev2) URL : https://patchwork.freedesktop.org/series/65066/ State : success == Summary == CI Bug Log - changes from CI_DRM_6678_full -> Patchwork_13978_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13978_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_schedule@independent-bsd: - shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#111325]) +2 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb5/igt@gem_exec_sched...@independent-bsd.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-iclb1/igt@gem_exec_sched...@independent-bsd.html * igt@gem_exec_schedule@preempt-contexts-bsd2: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276]) +15 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb4/igt@gem_exec_sched...@preempt-contexts-bsd2.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-iclb8/igt@gem_exec_sched...@preempt-contexts-bsd2.html * igt@gem_softpin@noreloc-s3: - shard-skl: [PASS][5] -> [INCOMPLETE][6] ([fdo#104108]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl3/igt@gem_soft...@noreloc-s3.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-skl4/igt@gem_soft...@noreloc-s3.html - shard-kbl: [PASS][7] -> [INCOMPLETE][8] ([fdo#103665]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-kbl2/igt@gem_soft...@noreloc-s3.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-kbl6/igt@gem_soft...@noreloc-s3.html * igt@gem_workarounds@suspend-resume-context: - shard-apl: [PASS][9] -> [DMESG-WARN][10] ([fdo#108566]) +4 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-apl6/igt@gem_workarou...@suspend-resume-context.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-apl8/igt@gem_workarou...@suspend-resume-context.html * igt@kms_color@pipe-a-degamma: - shard-skl: [PASS][11] -> [FAIL][12] ([fdo#104782] / [fdo#108145]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl3/igt@kms_co...@pipe-a-degamma.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-skl10/igt@kms_co...@pipe-a-degamma.html * igt@kms_cursor_crc@pipe-c-cursor-suspend: - shard-kbl: [PASS][13] -> [DMESG-WARN][14] ([fdo#108566]) +5 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-kbl3/igt@kms_cursor_...@pipe-c-cursor-suspend.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-kbl3/igt@kms_cursor_...@pipe-c-cursor-suspend.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +1 similar issue [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb7/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-blt.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-blt.html * igt@kms_plane@plane-position-covered-pipe-a-planes: - shard-iclb: [PASS][17] -> [INCOMPLETE][18] ([fdo#107713]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb4/igt@kms_pl...@plane-position-covered-pipe-a-planes.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-iclb1/igt@kms_pl...@plane-position-covered-pipe-a-planes.html * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: [PASS][19] -> [FAIL][20] ([fdo#108145] / [fdo#110403]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl7/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-skl2/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html * igt@kms_psr@psr2_cursor_mmap_cpu: - shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) +1 similar issue [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-iclb5/igt@kms_psr@psr2_cursor_mmap_cpu.html * igt@kms_setmode@basic: - shard-apl: [PASS][23] -> [FAIL][24] ([fdo#99912]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-apl8/igt@kms_setm...@basic.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/shard-apl6/igt@kms_setm...@basic.html * igt@perf_pmu@rc6-runtime-pm-long: - shard-glk: [PASS][25] -> [FAIL][26] ([fdo#105010]) [25]:
Re: [Intel-gfx] [PATCH] drm/i915: Remove i915 ggtt WA since GT E
Hi Dong, Thank you for the patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [cannot apply to v5.3-rc4 next-20190809] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Dong-Yang/drm-i915-Remove-i915-ggtt-WA-since-GT-E/20190812-111840 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-defconfig (attached as .config) compiler: gcc-7 (Debian 7.4.0-10) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All error/warnings (new ones prefixed by >>): In file included from drivers/gpu/drm/i915/display/intel_display_types.h:46:0, from drivers/gpu/drm/i915/i915_drv.c:54: drivers/gpu/drm/i915/i915_drv.h: In function 'intel_ggtt_update_needs_vtd_wa': >> drivers/gpu/drm/i915/i915_drv.h:2259:9: error: expected expression before >> 'return' return return IS_BXT_REVID(dev_priv, 0, BXT_REVID_D0) && intel_vtd_active(); ^~ -- In file included from drivers/gpu/drm/i915/i915_gem_gtt.c:41:0: drivers/gpu/drm/i915/i915_drv.h: In function 'intel_ggtt_update_needs_vtd_wa': >> drivers/gpu/drm/i915/i915_drv.h:2259:9: error: expected expression before >> 'return' return return IS_BXT_REVID(dev_priv, 0, BXT_REVID_D0) && intel_vtd_active(); ^~ >> drivers/gpu/drm/i915/i915_drv.h:2260:1: warning: control reaches end of >> non-void function [-Wreturn-type] } ^ vim +/return +2259 drivers/gpu/drm/i915/i915_drv.h 2255 2256 static inline bool 2257 intel_ggtt_update_needs_vtd_wa(struct drm_i915_private *dev_priv) 2258 { > 2259 return return IS_BXT_REVID(dev_priv, 0, BXT_REVID_D0) && > intel_vtd_active(); > 2260 } 2261 --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip ___ 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: Remove i915 ggtt WA since GT E (rev2)
== Series Details == Series: drm/i915: Remove i915 ggtt WA since GT E (rev2) URL : https://patchwork.freedesktop.org/series/65066/ State : success == Summary == CI Bug Log - changes from CI_DRM_6678 -> Patchwork_13978 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/ Known issues Here are the changes found in Patchwork_13978 that come from known issues: ### IGT changes ### Issues hit * igt@i915_selftest@live_execlists: - fi-skl-gvtdvm: [PASS][1] -> [DMESG-FAIL][2] ([fdo#08]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html Possible fixes * {igt@gem_ctx_switch@legacy-render}: - fi-icl-u2: [INCOMPLETE][3] ([fdo#107713]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html * igt@i915_selftest@live_requests: - fi-byt-j1900: [INCOMPLETE][5] ([fdo#102657]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-byt-j1900/igt@i915_selftest@live_requests.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-byt-j1900/igt@i915_selftest@live_requests.html * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][7] ([fdo#109271] / [fdo#109278]) -> [PASS][8] +2 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html * igt@kms_busy@basic-flip-c: - fi-kbl-7500u: [SKIP][9] ([fdo#109271] / [fdo#109278]) -> [PASS][10] +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [FAIL][11] ([fdo#109485]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [SKIP][13] ([fdo#109271]) -> [PASS][14] +23 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#102657]: https://bugs.freedesktop.org/show_bug.cgi?id=102657 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485 [fdo#08]: https://bugs.freedesktop.org/show_bug.cgi?id=08 Participating hosts (54 -> 44) -- Missing(10): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-whl-u fi-kbl-8809g fi-icl-y fi-icl-guc fi-byt-clapper fi-bdw-samus Build changes - * CI: CI-20190529 -> None * Linux: CI_DRM_6678 -> Patchwork_13978 CI-20190529: 20190529 CI_DRM_6678: 0330b51e91d7c3bedfe40afadc6c221e4d1a9c61 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5127: f43f5fa12ac1b93febfe3eeb9e9985f5f3e2eff0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_13978: 8899caa0fe6314389c7a36c6355516bf81373a74 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 8899caa0fe63 drm/i915: Remove i915 ggtt WA since GT E == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13978/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Remove i915 ggtt WA since GT E
From: "Yang, Dong" The APL already fixed this bug since GT E, bug exist from 0 to D, apply WA according GT stepping. Signed-off-by: Yang, Dong --- drivers/gpu/drm/i915/i915_drv.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 5f3e5c13fbaa..95519bac8948 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2141,6 +2141,8 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, #define BXT_REVID_B0 0x3 #define BXT_REVID_B_LAST 0x8 #define BXT_REVID_C0 0x9 +#define BXT_REVID_D0 0xC +#define BXT_REVID_E0 0xD #define IS_BXT_REVID(dev_priv, since, until) \ (IS_BROXTON(dev_priv) && IS_REVID(dev_priv, since, until)) @@ -2357,7 +2359,7 @@ static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) static inline bool intel_ggtt_update_needs_vtd_wa(struct drm_i915_private *dev_priv) { - return IS_BROXTON(dev_priv) && intel_vtd_active(); + return IS_BXT_REVID(dev_priv, 0, BXT_REVID_D0) && intel_vtd_active(); } /* i915_drv.c */ -- 2.22.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915: Remove i915 ggtt WA since GT E
== Series Details == Series: drm/i915: Remove i915 ggtt WA since GT E URL : https://patchwork.freedesktop.org/series/65066/ State : failure == Summary == CALLscripts/checksyscalls.sh CALLscripts/atomic/check-atomics.sh DESCEND objtool CHK include/generated/compile.h CC drivers/gpu/drm/i915/display/intel_gmbus.h.s CC drivers/gpu/drm/i915/display/intel_display_types.h.s In file included from ./drivers/gpu/drm/i915/display/intel_display_types.h:46:0, from :0: ./drivers/gpu/drm/i915/i915_drv.h: In function ‘intel_ggtt_update_needs_vtd_wa’: ./drivers/gpu/drm/i915/i915_drv.h:2259:9: error: expected expression before ‘return’ return return IS_BXT_REVID(dev_priv, 0, BXT_REVID_D0) && intel_vtd_active(); ^~ scripts/Makefile.build:301: recipe for target 'drivers/gpu/drm/i915/display/intel_display_types.h.s' failed make[5]: *** [drivers/gpu/drm/i915/display/intel_display_types.h.s] Error 1 scripts/Makefile.build:490: recipe for target 'drivers/gpu/drm/i915/display' failed make[4]: *** [drivers/gpu/drm/i915/display] Error 2 scripts/Makefile.build:490: recipe for target 'drivers/gpu/drm/i915' failed make[3]: *** [drivers/gpu/drm/i915] Error 2 scripts/Makefile.build:490: recipe for target 'drivers/gpu/drm' failed make[2]: *** [drivers/gpu/drm] Error 2 scripts/Makefile.build:490: recipe for target 'drivers/gpu' failed make[1]: *** [drivers/gpu] Error 2 Makefile:1080: recipe for target 'drivers' failed make: *** [drivers] Error 2 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Remove i915 ggtt WA since GT E
From: "Yang, Dong" The APL already fixed this bug since GT E, bug exist from 0 to D, apply WA according GT stepping. Signed-off-by: Yang, Dong --- drivers/gpu/drm/i915/i915_drv.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 5f3e5c13fbaa..ee384c28174a 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2141,6 +2141,8 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, #define BXT_REVID_B0 0x3 #define BXT_REVID_B_LAST 0x8 #define BXT_REVID_C0 0x9 +#define BXT_REVID_D0 0xC +#define BXT_REVID_E0 0xD #define IS_BXT_REVID(dev_priv, since, until) \ (IS_BROXTON(dev_priv) && IS_REVID(dev_priv, since, until)) @@ -2357,7 +2359,7 @@ static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) static inline bool intel_ggtt_update_needs_vtd_wa(struct drm_i915_private *dev_priv) { - return IS_BROXTON(dev_priv) && intel_vtd_active(); + return return IS_BXT_REVID(dev_priv, 0, BXT_REVID_D0) && intel_vtd_active(); } /* i915_drv.c */ -- 2.22.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.IGT: success for dma-fence: Propagate errors to dma-fence-array container
== Series Details == Series: dma-fence: Propagate errors to dma-fence-array container URL : https://patchwork.freedesktop.org/series/65062/ State : success == Summary == CI Bug Log - changes from CI_DRM_6678_full -> Patchwork_13976_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13976_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_isolation@bcs0-s3: - shard-apl: [PASS][1] -> [DMESG-WARN][2] ([fdo#108566]) +3 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-apl3/igt@gem_ctx_isolat...@bcs0-s3.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-apl4/igt@gem_ctx_isolat...@bcs0-s3.html * igt@gem_ctx_shared@exec-single-timeline-bsd: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#110841]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb3/igt@gem_ctx_sha...@exec-single-timeline-bsd.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb2/igt@gem_ctx_sha...@exec-single-timeline-bsd.html * igt@gem_exec_async@concurrent-writes-bsd: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#111325]) +2 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb3/igt@gem_exec_as...@concurrent-writes-bsd.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb4/igt@gem_exec_as...@concurrent-writes-bsd.html * igt@gem_exec_schedule@in-order-bsd2: - shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276]) +16 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb1/igt@gem_exec_sched...@in-order-bsd2.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb5/igt@gem_exec_sched...@in-order-bsd2.html * igt@i915_selftest@live_hangcheck: - shard-iclb: [PASS][9] -> [INCOMPLETE][10] ([fdo#107713] / [fdo#108569]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb2/igt@i915_selftest@live_hangcheck.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb3/igt@i915_selftest@live_hangcheck.html * igt@kms_cursor_crc@pipe-c-cursor-suspend: - shard-skl: [PASS][11] -> [INCOMPLETE][12] ([fdo#110741]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl8/igt@kms_cursor_...@pipe-c-cursor-suspend.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-skl4/igt@kms_cursor_...@pipe-c-cursor-suspend.html * igt@kms_frontbuffer_tracking@fbc-suspend: - shard-kbl: [PASS][13] -> [DMESG-WARN][14] ([fdo#108566]) +3 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-kbl1/igt@kms_frontbuffer_track...@fbc-suspend.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-kbl7/igt@kms_frontbuffer_track...@fbc-suspend.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +6 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb1/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb7/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: [PASS][17] -> [FAIL][18] ([fdo#108145] / [fdo#110403]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl7/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-skl10/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html * igt@kms_psr2_su@frontbuffer: - shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109642] / [fdo#111068]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb2/igt@kms_psr2...@frontbuffer.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb7/igt@kms_psr2...@frontbuffer.html * igt@kms_psr@psr2_cursor_mmap_cpu: - shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) +3 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-iclb1/igt@kms_psr@psr2_cursor_mmap_cpu.html * igt@kms_setmode@basic: - shard-skl: [PASS][23] -> [FAIL][24] ([fdo#99912]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl6/igt@kms_setm...@basic.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/shard-skl9/igt@kms_setm...@basic.html * igt@perf_pmu@rc6-runtime-pm-long: - shard-skl: [PASS][25] -> [FAIL][26]
[Intel-gfx] ✓ Fi.CI.BAT: success for dma-fence: Propagate errors to dma-fence-array container
== Series Details == Series: dma-fence: Propagate errors to dma-fence-array container URL : https://patchwork.freedesktop.org/series/65062/ State : success == Summary == CI Bug Log - changes from CI_DRM_6678 -> Patchwork_13976 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/ Known issues Here are the changes found in Patchwork_13976 that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: [PASS][1] -> [INCOMPLETE][2] ([fdo#107718]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html Possible fixes * {igt@gem_ctx_switch@legacy-render}: - fi-icl-u2: [INCOMPLETE][3] ([fdo#107713]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][5] ([fdo#109271] / [fdo#109278]) -> [PASS][6] +2 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html * igt@kms_busy@basic-flip-c: - fi-kbl-7500u: [SKIP][7] ([fdo#109271] / [fdo#109278]) -> [PASS][8] +2 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [FAIL][9] ([fdo#109485]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [SKIP][11] ([fdo#109271]) -> [PASS][12] +23 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html Warnings * igt@i915_pm_rpm@basic-pci-d3-state: - fi-kbl-guc: [SKIP][13] ([fdo#109271]) -> [FAIL][14] ([fdo#110829]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-guc/igt@i915_pm_...@basic-pci-d3-state.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/fi-kbl-guc/igt@i915_pm_...@basic-pci-d3-state.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485 [fdo#110829]: https://bugs.freedesktop.org/show_bug.cgi?id=110829 Participating hosts (54 -> 43) -- Missing(11): fi-ilk-m540 fi-hsw-4200u fi-bsw-n3050 fi-byt-squawks fi-bsw-cyan fi-whl-u fi-kbl-8809g fi-pnv-d510 fi-icl-y fi-byt-clapper fi-bdw-samus Build changes - * CI: CI-20190529 -> None * Linux: CI_DRM_6678 -> Patchwork_13976 CI-20190529: 20190529 CI_DRM_6678: 0330b51e91d7c3bedfe40afadc6c221e4d1a9c61 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5127: f43f5fa12ac1b93febfe3eeb9e9985f5f3e2eff0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_13976: 9b580a4726757e79155d9002a620edef1a9cfa2c @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 9b580a472675 dma-fence: Propagate errors to dma-fence-array container == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13976/ ___ 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: Extract GT powermanagement interrupt handling (rev2)
== Series Details == Series: series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling (rev2) URL : https://patchwork.freedesktop.org/series/65049/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6678 -> Patchwork_13975 Summary --- **FAILURE** Serious unknown changes coming with Patchwork_13975 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_13975, 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_13975/ Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_13975: ### IGT changes ### Possible regressions * igt@kms_chamelium@hdmi-edid-read: - fi-kbl-7567u: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_chamel...@hdmi-edid-read.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-kbl-7567u/igt@kms_chamel...@hdmi-edid-read.html Known issues Here are the changes found in Patchwork_13975 that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_exec@basic: - fi-icl-u2: [PASS][3] -> [INCOMPLETE][4] ([fdo#107713]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-icl-u2/igt@gem_ctx_e...@basic.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-icl-u2/igt@gem_ctx_e...@basic.html * igt@i915_selftest@live_execlists: - fi-bwr-2160:[PASS][5] -> [DMESG-WARN][6] ([fdo#15]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-bwr-2160/igt@i915_selftest@live_execlists.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-bwr-2160/igt@i915_selftest@live_execlists.html * igt@i915_selftest@live_hangcheck: - fi-bwr-2160:[PASS][7] -> [DMESG-FAIL][8] ([fdo#15]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-bwr-2160/igt@i915_selftest@live_hangcheck.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-bwr-2160/igt@i915_selftest@live_hangcheck.html * igt@kms_chamelium@dp-crc-fast: - fi-cml-u2: [PASS][9] -> [FAIL][10] ([fdo#110627]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-cml-u2/igt@kms_chamel...@dp-crc-fast.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-cml-u2/igt@kms_chamel...@dp-crc-fast.html Possible fixes * igt@i915_selftest@live_requests: - fi-byt-j1900: [INCOMPLETE][11] ([fdo#102657]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-byt-j1900/igt@i915_selftest@live_requests.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-byt-j1900/igt@i915_selftest@live_requests.html * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][13] ([fdo#109271] / [fdo#109278]) -> [PASS][14] +2 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html * igt@kms_busy@basic-flip-c: - fi-kbl-7500u: [SKIP][15] ([fdo#109271] / [fdo#109278]) -> [PASS][16] +2 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7567u: [WARN][17] ([fdo#109380]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html * igt@kms_pipe_crc_basic@read-crc-pipe-c: - fi-kbl-7567u: [SKIP][19] ([fdo#109271]) -> [PASS][20] +23 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [SKIP][21] ([fdo#109271]) -> [PASS][22] +23 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13975/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING,
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling (rev2)
== Series Details == Series: series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling (rev2) URL : https://patchwork.freedesktop.org/series/65049/ State : warning == Summary == $ dim checkpatch origin/drm-tip f8612d8bb2ab drm/i915: Extract GT powermanagement interrupt handling -:45: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #45: new file mode 100644 -:50: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #50: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c:1: +/* -:51: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #51: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c:2: + * SPDX-License-Identifier: MIT -:164: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #164: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h:1: +/* -:165: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #165: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h:2: + * SPDX-License-Identifier: MIT -:195: CHECK:UNCOMMENTED_DEFINITION: spinlock_t definition without comment #195: FILE: drivers/gpu/drm/i915/gt/intel_gt_types.h:76: + spinlock_t irq_lock; total: 0 errors, 5 warnings, 1 checks, 566 lines checked 70a22d77e4db drm/i915: Extract general GT interrupt handlers -:55: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #55: new file mode 100644 -:60: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #60: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.c:1: +/* -:61: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #61: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.c:2: + * SPDX-License-Identifier: MIT -:521: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #521: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.h:1: +/* -:522: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #522: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.h:2: + * SPDX-License-Identifier: MIT total: 0 errors, 5 warnings, 0 checks, 1464 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI] dma-fence: Propagate errors to dma-fence-array container
When one of the array of fences is signaled, propagate its errors to the parent fence-array (keeping the first error to be raised). v2: Opencode cmpxchg_local to avoid compiler freakout. v3: Be careful not to flag an error if we race against signal-on-any. v4: Same applies to installing the signal cb. v5: Use cmpxchg to only set the error once before using a nifty idea by Christian to avoid changing the status after emitting the signal. Signed-off-by: Chris Wilson Cc: Sumit Semwal Cc: Gustavo Padovan Cc: Christian König Reviewed-by: Christian König --- drivers/dma-buf/dma-fence-array.c | 32 ++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c index 12c6f64c0bc2..d3fbd950be94 100644 --- a/drivers/dma-buf/dma-fence-array.c +++ b/drivers/dma-buf/dma-fence-array.c @@ -13,6 +13,8 @@ #include #include +#define PENDING_ERROR 1 + static const char *dma_fence_array_get_driver_name(struct dma_fence *fence) { return "dma_fence_array"; @@ -23,10 +25,29 @@ static const char *dma_fence_array_get_timeline_name(struct dma_fence *fence) return "unbound"; } +static void dma_fence_array_set_pending_error(struct dma_fence_array *array, + int error) +{ + /* +* Propagate the first error reported by any of our fences, but only +* before we ourselves are signaled. +*/ + if (error) + cmpxchg(>base.error, PENDING_ERROR, error); +} + +static void dma_fence_array_clear_pending_error(struct dma_fence_array *array) +{ + /* Clear the error flag if not actually set. */ + cmpxchg(>base.error, PENDING_ERROR, 0); +} + static void irq_dma_fence_array_work(struct irq_work *wrk) { struct dma_fence_array *array = container_of(wrk, typeof(*array), work); + dma_fence_array_clear_pending_error(array); + dma_fence_signal(>base); dma_fence_put(>base); } @@ -38,6 +59,8 @@ static void dma_fence_array_cb_func(struct dma_fence *f, container_of(cb, struct dma_fence_array_cb, cb); struct dma_fence_array *array = array_cb->array; + dma_fence_array_set_pending_error(array, f->error); + if (atomic_dec_and_test(>num_pending)) irq_work_queue(>work); else @@ -63,9 +86,14 @@ static bool dma_fence_array_enable_signaling(struct dma_fence *fence) dma_fence_get(>base); if (dma_fence_add_callback(array->fences[i], [i].cb, dma_fence_array_cb_func)) { + int error = array->fences[i]->error; + + dma_fence_array_set_pending_error(array, error); dma_fence_put(>base); - if (atomic_dec_and_test(>num_pending)) + if (atomic_dec_and_test(>num_pending)) { + dma_fence_array_clear_pending_error(array); return false; + } } } @@ -142,6 +170,8 @@ struct dma_fence_array *dma_fence_array_create(int num_fences, atomic_set(>num_pending, signal_on_any ? 1 : num_fences); array->fences = fences; + array->base.error = PENDING_ERROR; + return array; } EXPORT_SYMBOL(dma_fence_array_create); -- 2.23.0.rc1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Extract general GT interrupt handlers
From: Andi Shyti i915_irq.c is large. It serves as the central dispatch and handler for all of our device interrupts. Lets break it up by pulling out the GT interrupt handlers. Based on a patch by Chris Wilson. Signed-off-by: Andi Shyti --- Restore rps init; rps is not moved until the next patch. --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 8 +- drivers/gpu/drm/i915/gt/intel_gt_irq.c | 455 +++ drivers/gpu/drm/i915/gt/intel_gt_irq.h | 44 ++ drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c | 1 + drivers/gpu/drm/i915/gt/intel_gt_types.h| 1 + drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 9 +- drivers/gpu/drm/i915/i915_drv.h | 1 - drivers/gpu/drm/i915/i915_irq.c | 577 ++-- drivers/gpu/drm/i915/i915_irq.h | 47 ++ 10 files changed, 593 insertions(+), 551 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_irq.c create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_irq.h diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index d226659fdbb3..45add812048b 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -79,6 +79,7 @@ gt-y += \ gt/intel_engine_pm.o \ gt/intel_engine_user.o \ gt/intel_gt.o \ + gt/intel_gt_irq.o \ gt/intel_gt_pm.o \ gt/intel_gt_pm_irq.o \ gt/intel_hangcheck.o \ diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c index e1bbc9b428cd..ceba1da61967 100644 --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c @@ -35,9 +35,9 @@ static void irq_enable(struct intel_engine_cs *engine) return; /* Caller disables interrupts */ - spin_lock(>i915->irq_lock); + spin_lock(>gt->irq_lock); engine->irq_enable(engine); - spin_unlock(>i915->irq_lock); + spin_unlock(>gt->irq_lock); } static void irq_disable(struct intel_engine_cs *engine) @@ -46,9 +46,9 @@ static void irq_disable(struct intel_engine_cs *engine) return; /* Caller disables interrupts */ - spin_lock(>i915->irq_lock); + spin_lock(>gt->irq_lock); engine->irq_disable(engine); - spin_unlock(>i915->irq_lock); + spin_unlock(>gt->irq_lock); } static void __intel_breadcrumbs_disarm_irq(struct intel_breadcrumbs *b) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c new file mode 100644 index ..34a4fb624bf7 --- /dev/null +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c @@ -0,0 +1,455 @@ +/* + * SPDX-License-Identifier: MIT + * + * Copyright © 2019 Intel Corporation + */ + +#include + +#include "i915_drv.h" +#include "i915_irq.h" +#include "intel_gt.h" +#include "intel_gt_irq.h" +#include "intel_uncore.h" + +static void guc_irq_handler(struct intel_guc *guc, u16 iir) +{ + if (iir & GUC_INTR_GUC2HOST) + intel_guc_to_host_event_handler(guc); +} + +static void +cs_irq_handler(struct intel_engine_cs *engine, u32 iir) +{ + bool tasklet = false; + + if (iir & GT_CONTEXT_SWITCH_INTERRUPT) + tasklet = true; + + if (iir & GT_RENDER_USER_INTERRUPT) { + intel_engine_breadcrumbs_irq(engine); + tasklet |= intel_engine_needs_breadcrumb_tasklet(engine); + } + + if (tasklet) + tasklet_hi_schedule(>execlists.tasklet); +} + +static u32 +gen11_gt_engine_identity(struct intel_gt *gt, +const unsigned int bank, const unsigned int bit) +{ + void __iomem * const regs = gt->uncore->regs; + u32 timeout_ts; + u32 ident; + + lockdep_assert_held(>irq_lock); + + raw_reg_write(regs, GEN11_IIR_REG_SELECTOR(bank), BIT(bit)); + + /* +* NB: Specs do not specify how long to spin wait, +* so we do ~100us as an educated guess. +*/ + timeout_ts = (local_clock() >> 10) + 100; + do { + ident = raw_reg_read(regs, GEN11_INTR_IDENTITY_REG(bank)); + } while (!(ident & GEN11_INTR_DATA_VALID) && +!time_after32(local_clock() >> 10, timeout_ts)); + + if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) { + DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n", + bank, bit, ident); + return 0; + } + + raw_reg_write(regs, GEN11_INTR_IDENTITY_REG(bank), + GEN11_INTR_DATA_VALID); + + return ident; +} + +static void +gen11_other_irq_handler(struct intel_gt *gt, const u8 instance, + const u16 iir) +{ + if (instance == OTHER_GUC_INSTANCE) + return guc_irq_handler(>uc.guc, iir); + + if (instance == OTHER_GTPM_INSTANCE) + return gen11_rps_irq_handler(gt, iir); + + WARN_ONCE(1, "unhandled
[Intel-gfx] ✗ Fi.CI.BAT: failure for Use -EIO code for GuC initialization failures
== Series Details == Series: Use -EIO code for GuC initialization failures URL : https://patchwork.freedesktop.org/series/65060/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6678 -> Patchwork_13974 Summary --- **FAILURE** Serious unknown changes coming with Patchwork_13974 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_13974, 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_13974/ Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_13974: ### IGT changes ### Possible regressions * igt@i915_selftest@live_workarounds: - fi-bsw-kefka: [PASS][1] -> [DMESG-WARN][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-bsw-kefka/igt@i915_selftest@live_workarounds.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-bsw-kefka/igt@i915_selftest@live_workarounds.html Known issues Here are the changes found in Patchwork_13974 that come from known issues: ### IGT changes ### Possible fixes * {igt@gem_ctx_switch@legacy-render}: - fi-icl-u2: [INCOMPLETE][3] ([fdo#107713]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html * igt@i915_selftest@live_requests: - fi-byt-j1900: [INCOMPLETE][5] ([fdo#102657]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-byt-j1900/igt@i915_selftest@live_requests.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-byt-j1900/igt@i915_selftest@live_requests.html * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][7] ([fdo#109271] / [fdo#109278]) -> [PASS][8] +2 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html * igt@kms_busy@basic-flip-c: - fi-kbl-7500u: [SKIP][9] ([fdo#109271] / [fdo#109278]) -> [PASS][10] +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7567u: [WARN][11] ([fdo#109380]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [FAIL][13] ([fdo#109485]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html * igt@kms_pipe_crc_basic@read-crc-pipe-c: - fi-kbl-7567u: [SKIP][15] ([fdo#109271]) -> [PASS][16] +23 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13974/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#102657]: https://bugs.freedesktop.org/show_bug.cgi?id=102657 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109380]: https://bugs.freedesktop.org/show_bug.cgi?id=109380 [fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485 Participating hosts (54 -> 45) -- Missing(9): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-whl-u fi-kbl-8809g fi-icl-y fi-byt-clapper fi-bdw-samus Build changes - * CI: CI-20190529 -> None * Linux: CI_DRM_6678 -> Patchwork_13974 CI-20190529: 20190529 CI_DRM_6678: 0330b51e91d7c3bedfe40afadc6c221e4d1a9c61 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5127: f43f5fa12ac1b93febfe3eeb9e9985f5f3e2eff0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_13974: f590970f056352e32b870ab61c6f7e5a64580cce @
Re: [Intel-gfx] [PATCH 4/4] drm/i915/uc: Use -EIO code for GuC initialization failures
Quoting Michal Wajdeczko (2019-08-11 20:51:32) > Since commit 6ca9a2beb54a ("drm/i915: Unwind i915_gem_init() failure") > we believed that we correctly handle all errors encountered during > GuC initialization, including special one that indicates request to > run driver with disabled GPU submission (-EIO). > > Unfortunately since commit 121981fafe69 ("drm/i915/guc: Combine > enable_guc_loading|submission modparams") we stopped using that > error code to avoid unwanted fallback to execlist submission mode. > > In result any GuC initialization failure was treated as non-recoverable > error leading to driver load abort, so we could not even read related > GuC error log to investigate cause of the problem. > > For now always return -EIO on any uC hardware related failure. > > Signed-off-by: Michal Wajdeczko > Cc: Daniele Ceraolo Spurio > Cc: Chris Wilson Works for me, Reviewed-by: Chris Wilson -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 3/4] drm/i915/uc: Update messages from fw upload step
Quoting Michal Wajdeczko (2019-08-11 20:51:31) > Our old messages were redundant or misleading (as loaded is > not the same as running). Keep only one message for debug. > > Signed-off-by: Michal Wajdeczko > Cc: Daniele Ceraolo Spurio > Cc: Chris Wilson One is still one too many :) Reviewed-by: Chris Wilson -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 2/4] drm/i915/uc: Include HuC firmware version in summary
Quoting Michal Wajdeczko (2019-08-11 20:51:30) > After successful uC initialization we are reporting GuC > firmware version and status of GuC submission and HuC. > Add HuC fw version to this report to make it complete, > but also skip all HuC info if HuC is not supported. > > Signed-off-by: Michal Wajdeczko > Cc: Daniele Ceraolo Spurio > Cc: Chris Wilson > --- > drivers/gpu/drm/i915/gt/uc/intel_uc.c | 16 > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c > b/drivers/gpu/drm/i915/gt/uc/intel_uc.c > index aa9701cfc754..2acf7907287c 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c > +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c > @@ -503,12 +503,20 @@ int intel_uc_init_hw(struct intel_uc *uc) > goto err_communication; > } > > - dev_info(i915->drm.dev, "GuC firmware version %u.%u\n", > + dev_info(i915->drm.dev, "%s firmware version %u.%u\n", > +intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), > guc->fw.major_ver_found, guc->fw.minor_ver_found); > - dev_info(i915->drm.dev, "GuC submission %s\n", > + dev_info(i915->drm.dev, "%s %s\n", "GuC submission", > enableddisabled(intel_uc_supports_guc_submission(uc))); > - dev_info(i915->drm.dev, "HuC %s\n", > -enableddisabled(intel_huc_is_authenticated(huc))); > + > + if (intel_uc_supports_huc(uc)) { > + dev_info(i915->drm.dev, "%s firmware version %u.%u\n", > +intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), > +huc->fw.major_ver_found, huc->fw.minor_ver_found); > + dev_info(i915->drm.dev, "%s %s\n", > +intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), > +enableddisabled(intel_huc_is_authenticated(huc))); > + } Could I ask you to squeeze each down to one line? -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 1/4] drm/i915/uc: Fail early if there is no GuC fw available
Quoting Michal Wajdeczko (2019-08-11 20:51:29) > We don't want to rely on misleading WOPCM partitioning error. > > Signed-off-by: Michal Wajdeczko > Cc: Daniele Ceraolo Spurio > Cc: Chris Wilson > --- > drivers/gpu/drm/i915/gt/uc/intel_uc.c| 5 + > drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 21 + > 2 files changed, 26 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c > b/drivers/gpu/drm/i915/gt/uc/intel_uc.c > index 32aa4509ba1d..aa9701cfc754 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c > +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c > @@ -436,6 +436,11 @@ int intel_uc_init_hw(struct intel_uc *uc) > if (!intel_uc_supports_guc(uc)) > return 0; > > + if (!intel_uc_fw_is_available(>fw)) { > + ret = intel_uc_fw_status_to_error(guc->fw.status); > + goto err_out; > + } > + > ret = uc_init_wopcm(uc); > if (ret) > goto err_out; > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h > b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h > index 0d22e73dff15..ad7e72316dcc 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h > +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h > @@ -107,6 +107,27 @@ const char *intel_uc_fw_status_repr(enum > intel_uc_fw_status status) > return ""; > } > > +static inline int intel_uc_fw_status_to_error(enum intel_uc_fw_status status) > +{ > + switch (status) { > + case INTEL_UC_FIRMWARE_NOT_SUPPORTED: > + case INTEL_UC_FIRMWARE_UNINITIALIZED: > + return -EPERM; > + case INTEL_UC_FIRMWARE_MISSING: > + return -ENOENT; > + case INTEL_UC_FIRMWARE_ERROR: > + return -ENOEXEC; > + case INTEL_UC_FIRMWARE_FAIL: > + return -EIO; Worth distinguishing with -ENXIO or is the similarity to -EIO important? Reviewed-by: Chris Wilson -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling
== Series Details == Series: series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling URL : https://patchwork.freedesktop.org/series/65049/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6678_full -> Patchwork_13972_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_13972_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_13972_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_13972_full: ### IGT changes ### Possible regressions * igt@i915_pm_rps@reset: - shard-apl: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-apl3/igt@i915_pm_...@reset.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-apl7/igt@i915_pm_...@reset.html - shard-hsw: [PASS][3] -> [FAIL][4] +1 similar issue [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-hsw4/igt@i915_pm_...@reset.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-hsw1/igt@i915_pm_...@reset.html - shard-glk: [PASS][5] -> [FAIL][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-glk9/igt@i915_pm_...@reset.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-glk8/igt@i915_pm_...@reset.html * igt@i915_pm_rps@waitboost: - shard-snb: [PASS][7] -> [FAIL][8] +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-snb2/igt@i915_pm_...@waitboost.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-snb1/igt@i915_pm_...@waitboost.html Known issues Here are the changes found in Patchwork_13972_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_shared@exec-single-timeline-bsd: - shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#110841]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb3/igt@gem_ctx_sha...@exec-single-timeline-bsd.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-iclb2/igt@gem_ctx_sha...@exec-single-timeline-bsd.html * igt@gem_eio@in-flight-1us: - shard-snb: [PASS][11] -> [INCOMPLETE][12] ([fdo#105411]) +11 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-snb4/igt@gem_...@in-flight-1us.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-snb6/igt@gem_...@in-flight-1us.html * igt@gem_exec_schedule@independent-bsd: - shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#111325]) +2 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb5/igt@gem_exec_sched...@independent-bsd.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-iclb4/igt@gem_exec_sched...@independent-bsd.html * igt@gem_exec_schedule@preempt-contexts-bsd2: - shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109276]) +11 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb4/igt@gem_exec_sched...@preempt-contexts-bsd2.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-iclb7/igt@gem_exec_sched...@preempt-contexts-bsd2.html * igt@gem_softpin@noreloc-s3: - shard-skl: [PASS][17] -> [INCOMPLETE][18] ([fdo#104108] / [fdo#107773]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl3/igt@gem_soft...@noreloc-s3.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-skl2/igt@gem_soft...@noreloc-s3.html * igt@i915_pm_rps@min-max-config-loaded: - shard-iclb: [PASS][19] -> [FAIL][20] ([fdo#108059]) +2 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-iclb1/igt@i915_pm_...@min-max-config-loaded.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-iclb1/igt@i915_pm_...@min-max-config-loaded.html * igt@i915_pm_rps@reset: - shard-kbl: [PASS][21] -> [FAIL][22] ([fdo#102250]) +2 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-kbl3/igt@i915_pm_...@reset.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-kbl3/igt@i915_pm_...@reset.html * igt@i915_pm_rps@waitboost: - shard-skl: [PASS][23] -> [FAIL][24] ([fdo#102250]) +2 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/shard-skl7/igt@i915_pm_...@waitboost.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/shard-skl2/igt@i915_pm_...@waitboost.html - shard-apl:
[Intel-gfx] [PATCH 4/4] drm/i915/uc: Use -EIO code for GuC initialization failures
Since commit 6ca9a2beb54a ("drm/i915: Unwind i915_gem_init() failure") we believed that we correctly handle all errors encountered during GuC initialization, including special one that indicates request to run driver with disabled GPU submission (-EIO). Unfortunately since commit 121981fafe69 ("drm/i915/guc: Combine enable_guc_loading|submission modparams") we stopped using that error code to avoid unwanted fallback to execlist submission mode. In result any GuC initialization failure was treated as non-recoverable error leading to driver load abort, so we could not even read related GuC error log to investigate cause of the problem. For now always return -EIO on any uC hardware related failure. Signed-off-by: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Chris Wilson --- drivers/gpu/drm/i915/gt/uc/intel_uc.c | 11 +++ drivers/gpu/drm/i915/i915_gem.c | 14 -- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c index 2acf7907287c..3b33fb275efb 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c @@ -530,15 +530,10 @@ int intel_uc_init_hw(struct intel_uc *uc) err_out: __uc_sanitize(uc); - /* -* Note that there is no fallback as either user explicitly asked for -* the GuC or driver default option was to run with the GuC enabled. -*/ - if (GEM_WARN_ON(ret == -EIO)) - ret = -EINVAL; - i915_probe_error(i915, "GuC initialization failed %d\n", ret); - return ret; + + /* We want to keep KMS alive */ + return -EIO; } void intel_uc_fini_hw(struct intel_uc *uc) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 6ff01a404346..4752a3bf9636 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1463,8 +1463,10 @@ int i915_gem_init(struct drm_i915_private *dev_priv) intel_init_gt_powersave(dev_priv); ret = intel_uc_init(_priv->gt.uc); - if (ret) + if (ret) { + GEM_BUG_ON(ret == -EIO); goto err_pm; + } ret = i915_gem_init_hw(dev_priv); if (ret) @@ -1526,7 +1528,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv) err_init_hw: intel_uc_fini_hw(_priv->gt.uc); err_uc_init: - intel_uc_fini(_priv->gt.uc); + if (ret != -EIO) + intel_uc_fini(_priv->gt.uc); err_pm: if (ret != -EIO) { intel_cleanup_gt_powersave(dev_priv); @@ -1542,9 +1545,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv) intel_uncore_forcewake_put(_priv->uncore, FORCEWAKE_ALL); mutex_unlock(_priv->drm.struct_mutex); - intel_uc_cleanup_firmwares(_priv->gt.uc); - if (ret != -EIO) { + intel_uc_cleanup_firmwares(_priv->gt.uc); i915_gem_cleanup_userptr(dev_priv); intel_timelines_fini(dev_priv); } @@ -1553,8 +1555,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv) mutex_lock(_priv->drm.struct_mutex); /* -* Allow engine initialisation to fail by marking the GPU as -* wedged. But we only want to do this where the GPU is angry, +* Allow engines or uC initialisation to fail by marking the GPU +* as wedged. But we only want to do this when the GPU is angry, * for all other failure, such as an allocation failure, bail. */ if (!intel_gt_is_wedged(_priv->gt)) { -- 2.19.2 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 2/4] drm/i915/uc: Include HuC firmware version in summary
After successful uC initialization we are reporting GuC firmware version and status of GuC submission and HuC. Add HuC fw version to this report to make it complete, but also skip all HuC info if HuC is not supported. Signed-off-by: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Chris Wilson --- drivers/gpu/drm/i915/gt/uc/intel_uc.c | 16 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c index aa9701cfc754..2acf7907287c 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c @@ -503,12 +503,20 @@ int intel_uc_init_hw(struct intel_uc *uc) goto err_communication; } - dev_info(i915->drm.dev, "GuC firmware version %u.%u\n", + dev_info(i915->drm.dev, "%s firmware version %u.%u\n", +intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), guc->fw.major_ver_found, guc->fw.minor_ver_found); - dev_info(i915->drm.dev, "GuC submission %s\n", + dev_info(i915->drm.dev, "%s %s\n", "GuC submission", enableddisabled(intel_uc_supports_guc_submission(uc))); - dev_info(i915->drm.dev, "HuC %s\n", -enableddisabled(intel_huc_is_authenticated(huc))); + + if (intel_uc_supports_huc(uc)) { + dev_info(i915->drm.dev, "%s firmware version %u.%u\n", +intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), +huc->fw.major_ver_found, huc->fw.minor_ver_found); + dev_info(i915->drm.dev, "%s %s\n", +intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), +enableddisabled(intel_huc_is_authenticated(huc))); + } return 0; -- 2.19.2 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 3/4] drm/i915/uc: Update messages from fw upload step
Our old messages were redundant or misleading (as loaded is not the same as running). Keep only one message for debug. Signed-off-by: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Chris Wilson --- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 14 +++--- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c index 22828a76626d..5665019d341a 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c @@ -493,9 +493,6 @@ int intel_uc_fw_upload(struct intel_uc_fw *uc_fw, struct intel_gt *gt, { int err; - DRM_DEBUG_DRIVER("%s fw load %s\n", -intel_uc_fw_type_repr(uc_fw->type), uc_fw->path); - /* make sure the status was cleared the last time we reset the uc */ GEM_BUG_ON(intel_uc_fw_is_loaded(uc_fw)); @@ -514,14 +511,9 @@ int intel_uc_fw_upload(struct intel_uc_fw *uc_fw, struct intel_gt *gt, goto fail; uc_fw->status = INTEL_UC_FIRMWARE_TRANSFERRED; - DRM_DEBUG_DRIVER("%s fw xfer completed\n", -intel_uc_fw_type_repr(uc_fw->type)); - - DRM_INFO("%s: Loaded firmware %s (version %u.%u)\n", -intel_uc_fw_type_repr(uc_fw->type), -uc_fw->path, -uc_fw->major_ver_found, uc_fw->minor_ver_found); - + DRM_DEV_DEBUG_DRIVER(gt->i915->drm.dev, "%s firmware %s: %s\n", +intel_uc_fw_type_repr(uc_fw->type), uc_fw->path, +intel_uc_fw_status_repr(uc_fw->status)); return 0; fail: -- 2.19.2 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 1/4] drm/i915/uc: Fail early if there is no GuC fw available
We don't want to rely on misleading WOPCM partitioning error. Signed-off-by: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Chris Wilson --- drivers/gpu/drm/i915/gt/uc/intel_uc.c| 5 + drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 21 + 2 files changed, 26 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c index 32aa4509ba1d..aa9701cfc754 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c @@ -436,6 +436,11 @@ int intel_uc_init_hw(struct intel_uc *uc) if (!intel_uc_supports_guc(uc)) return 0; + if (!intel_uc_fw_is_available(>fw)) { + ret = intel_uc_fw_status_to_error(guc->fw.status); + goto err_out; + } + ret = uc_init_wopcm(uc); if (ret) goto err_out; diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h index 0d22e73dff15..ad7e72316dcc 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h @@ -107,6 +107,27 @@ const char *intel_uc_fw_status_repr(enum intel_uc_fw_status status) return ""; } +static inline int intel_uc_fw_status_to_error(enum intel_uc_fw_status status) +{ + switch (status) { + case INTEL_UC_FIRMWARE_NOT_SUPPORTED: + case INTEL_UC_FIRMWARE_UNINITIALIZED: + return -EPERM; + case INTEL_UC_FIRMWARE_MISSING: + return -ENOENT; + case INTEL_UC_FIRMWARE_ERROR: + return -ENOEXEC; + case INTEL_UC_FIRMWARE_FAIL: + return -EIO; + case INTEL_UC_FIRMWARE_SELECTED: + case INTEL_UC_FIRMWARE_AVAILABLE: + case INTEL_UC_FIRMWARE_TRANSFERRED: + case INTEL_UC_FIRMWARE_RUNNING: + return 0; + } + return -EINVAL; +} + static inline const char *intel_uc_fw_type_repr(enum intel_uc_fw_type type) { switch (type) { -- 2.19.2 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 0/4] Use -EIO code for GuC initialization failures
Next portion of GuC/HuC improvements Michal Wajdeczko (4): drm/i915/uc: Fail early if there is no GuC fw available drm/i915/uc: Include HuC firmware version in summary drm/i915/uc: Update messages from fw upload step drm/i915/uc: Use -EIO code for GuC initialization failures drivers/gpu/drm/i915/gt/uc/intel_uc.c| 32 +++- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 14 +++ drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 21 drivers/gpu/drm/i915/i915_gem.c | 14 ++- 4 files changed, 52 insertions(+), 29 deletions(-) -- 2.19.2 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4] dma-fence: Propagate errors to dma-fence-array container
Hi Chris, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [cannot apply to v5.3-rc3 next-20190809] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Chris-Wilson/dma-fence-Propagate-errors-to-dma-fence-array-container/20190812-022143 reproduce: make htmldocs If you fix the issue, kindly add following tag Reported-by: kbuild test robot All warnings (new ones prefixed by >>): Warning: The Sphinx 'sphinx_rtd_theme' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme. WARNING: dot(1) not found, for better output quality install graphviz from http://www.graphviz.org WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org) >> include/linux/dma-fence-array.h:49: warning: Function parameter or member >> 'pending_error' not described in 'dma_fence_array' include/linux/w1.h:272: warning: Function parameter or member 'of_match_table' not described in 'w1_family' include/linux/i2c.h:337: warning: Function parameter or member 'init_irq' not described in 'i2c_client' lib/genalloc.c:1: warning: 'gen_pool_add_virt' not found lib/genalloc.c:1: warning: 'gen_pool_alloc' not found lib/genalloc.c:1: warning: 'gen_pool_free' not found lib/genalloc.c:1: warning: 'gen_pool_alloc_algo' not found include/linux/regulator/machine.h:196: warning: Function parameter or member 'max_uV_step' not described in 'regulation_constraints' include/linux/regulator/driver.h:223: warning: Function parameter or member 'resume' not described in 'regulator_ops' include/linux/spi/spi.h:190: warning: Function parameter or member 'driver_override' not described in 'spi_device' drivers/usb/typec/bus.c:1: warning: 'typec_altmode_register_driver' not found drivers/usb/typec/bus.c:1: warning: 'typec_altmode_unregister_driver' not found drivers/usb/typec/class.c:1: warning: 'typec_altmode_unregister_notifier' not found drivers/usb/typec/class.c:1: warning: 'typec_altmode_register_notifier' not found fs/direct-io.c:258: warning: Excess function parameter 'offset' description in 'dio_complete' fs/libfs.c:496: warning: Excess function parameter 'available' description in 'simple_write_end' fs/posix_acl.c:647: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode' fs/posix_acl.c:647: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode' fs/posix_acl.c:647: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode' include/linux/input/sparse-keymap.h:43: warning: Function parameter or member 'sw' not described in 'key_entry' drivers/gpu/drm/mcde/mcde_drv.c:1: warning: 'ST-Ericsson MCDE DRM Driver' not found include/net/mac80211.h:2006: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta' mm/util.c:1: warning: 'get_user_pages_fast' not found mm/slab.c:4215: warning: Function parameter or member 'objp' not described in '__ksize' include/linux/skbuff.h:893: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'list' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'skb_mstamp_ns' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'head_frag' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'encapsulation' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'csum_valid' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member '__pkt_vlan_present_offset' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'vlan_present' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'csum_level' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff' include/linux/skbuff.h:893: warning: Function parameter or member
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/tgl: Fixing up list of PG3 power domains.
== Series Details == Series: drm/i915/tgl: Fixing up list of PG3 power domains. URL : https://patchwork.freedesktop.org/series/65041/ State : success == Summary == CI Bug Log - changes from CI_DRM_6677_full -> Patchwork_13968_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13968_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_isolation@rcs0-s3: - shard-kbl: [PASS][1] -> [DMESG-WARN][2] ([fdo#108566]) +4 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-kbl1/igt@gem_ctx_isolat...@rcs0-s3.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-kbl7/igt@gem_ctx_isolat...@rcs0-s3.html * igt@gem_eio@reset-stress: - shard-skl: [PASS][3] -> [FAIL][4] ([fdo#109661]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl4/igt@gem_...@reset-stress.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-skl5/igt@gem_...@reset-stress.html * igt@gem_exec_schedule@preemptive-hang-bsd: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#111325]) +4 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb5/igt@gem_exec_sched...@preemptive-hang-bsd.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-iclb1/igt@gem_exec_sched...@preemptive-hang-bsd.html * igt@gem_workarounds@suspend-resume-context: - shard-apl: [PASS][7] -> [DMESG-WARN][8] ([fdo#108566]) +5 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-apl7/igt@gem_workarou...@suspend-resume-context.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-apl7/igt@gem_workarou...@suspend-resume-context.html * igt@i915_pm_rpm@i2c: - shard-hsw: [PASS][9] -> [FAIL][10] ([fdo#104097]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-hsw2/igt@i915_pm_...@i2c.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-hsw2/igt@i915_pm_...@i2c.html * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-untiled: - shard-skl: [PASS][11] -> [FAIL][12] ([fdo#103184] / [fdo#103232] / [fdo#108472]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl9/igt@kms_draw_...@draw-method-xrgb2101010-mmap-gtt-untiled.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-skl2/igt@kms_draw_...@draw-method-xrgb2101010-mmap-gtt-untiled.html * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-skl: [PASS][13] -> [FAIL][14] ([fdo#105363]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl4/igt@kms_f...@flip-vs-expired-vblank-interruptible.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-skl5/igt@kms_f...@flip-vs-expired-vblank-interruptible.html * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +4 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb6/igt@kms_frontbuffer_track...@fbc-1p-offscren-pri-indfb-draw-blt.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-iclb3/igt@kms_frontbuffer_track...@fbc-1p-offscren-pri-indfb-draw-blt.html * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min: - shard-skl: [PASS][17] -> [FAIL][18] ([fdo#108145]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl1/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-skl3/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: [PASS][19] -> [FAIL][20] ([fdo#108145] / [fdo#110403]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl3/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-skl2/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html * igt@kms_psr@psr2_sprite_plane_move: - shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) +2 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-iclb8/igt@kms_psr@psr2_sprite_plane_move.html * igt@kms_vblank@pipe-b-ts-continuation-suspend: - shard-kbl: [PASS][23] -> [INCOMPLETE][24] ([fdo#103665]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-kbl7/igt@kms_vbl...@pipe-b-ts-continuation-suspend.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/shard-kbl3/igt@kms_vbl...@pipe-b-ts-continuation-suspend.html
[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [v5] dma-fence: Propagate errors to dma-fence-array container (rev6)
== Series Details == Series: series starting with [v5] dma-fence: Propagate errors to dma-fence-array container (rev6) URL : https://patchwork.freedesktop.org/series/65027/ State : failure == Summary == Applying: dma-fence: Propagate errors to dma-fence-array container Applying: dma-fence: Report the composite sync_file status Applying: dma-fence: Refactor signaling for manual invocation Applying: dma-fence: Have dma_fence_signal call signal_locked Using index info to reconstruct a base tree... M drivers/dma-buf/dma-fence.c Falling back to patching base and 3-way merge... Auto-merging drivers/dma-buf/dma-fence.c CONFLICT (content): Merge conflict in drivers/dma-buf/dma-fence.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch' to see the failed patch Patch failed at 0004 dma-fence: Have dma_fence_signal call signal_locked When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v5] dma-fence: Propagate errors to dma-fence-array container
Am 11.08.19 um 18:25 schrieb Chris Wilson: > When one of the array of fences is signaled, propagate its errors to the > parent fence-array (keeping the first error to be raised). > > v2: Opencode cmpxchg_local to avoid compiler freakout. > v3: Be careful not to flag an error if we race against signal-on-any. > v4: Same applies to installing the signal cb. > v5: Use cmpxchg to only set the error once before using a nifty idea by > Christian to avoid changing the status after emitting the signal. > > Signed-off-by: Chris Wilson > Cc: Sumit Semwal > Cc: Gustavo Padovan > Cc: Christian König Reviewed-by: Christian König > --- > drivers/dma-buf/dma-fence-array.c | 32 ++- > 1 file changed, 31 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma-buf/dma-fence-array.c > b/drivers/dma-buf/dma-fence-array.c > index 12c6f64c0bc2..d3fbd950be94 100644 > --- a/drivers/dma-buf/dma-fence-array.c > +++ b/drivers/dma-buf/dma-fence-array.c > @@ -13,6 +13,8 @@ > #include > #include > > +#define PENDING_ERROR 1 > + > static const char *dma_fence_array_get_driver_name(struct dma_fence *fence) > { > return "dma_fence_array"; > @@ -23,10 +25,29 @@ static const char > *dma_fence_array_get_timeline_name(struct dma_fence *fence) > return "unbound"; > } > > +static void dma_fence_array_set_pending_error(struct dma_fence_array *array, > + int error) > +{ > + /* > + * Propagate the first error reported by any of our fences, but only > + * before we ourselves are signaled. > + */ > + if (error) > + cmpxchg(>base.error, PENDING_ERROR, error); > +} > + > +static void dma_fence_array_clear_pending_error(struct dma_fence_array > *array) > +{ > + /* Clear the error flag if not actually set. */ > + cmpxchg(>base.error, PENDING_ERROR, 0); > +} > + > static void irq_dma_fence_array_work(struct irq_work *wrk) > { > struct dma_fence_array *array = container_of(wrk, typeof(*array), work); > > + dma_fence_array_clear_pending_error(array); > + > dma_fence_signal(>base); > dma_fence_put(>base); > } > @@ -38,6 +59,8 @@ static void dma_fence_array_cb_func(struct dma_fence *f, > container_of(cb, struct dma_fence_array_cb, cb); > struct dma_fence_array *array = array_cb->array; > > + dma_fence_array_set_pending_error(array, f->error); > + > if (atomic_dec_and_test(>num_pending)) > irq_work_queue(>work); > else > @@ -63,9 +86,14 @@ static bool dma_fence_array_enable_signaling(struct > dma_fence *fence) > dma_fence_get(>base); > if (dma_fence_add_callback(array->fences[i], [i].cb, > dma_fence_array_cb_func)) { > + int error = array->fences[i]->error; > + > + dma_fence_array_set_pending_error(array, error); > dma_fence_put(>base); > - if (atomic_dec_and_test(>num_pending)) > + if (atomic_dec_and_test(>num_pending)) { > + dma_fence_array_clear_pending_error(array); > return false; > + } > } > } > > @@ -142,6 +170,8 @@ struct dma_fence_array *dma_fence_array_create(int > num_fences, > atomic_set(>num_pending, signal_on_any ? 1 : num_fences); > array->fences = fences; > > + array->base.error = PENDING_ERROR; > + > return array; > } > EXPORT_SYMBOL(dma_fence_array_create); ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v5] dma-fence: Propagate errors to dma-fence-array container
When one of the array of fences is signaled, propagate its errors to the parent fence-array (keeping the first error to be raised). v2: Opencode cmpxchg_local to avoid compiler freakout. v3: Be careful not to flag an error if we race against signal-on-any. v4: Same applies to installing the signal cb. v5: Use cmpxchg to only set the error once before using a nifty idea by Christian to avoid changing the status after emitting the signal. Signed-off-by: Chris Wilson Cc: Sumit Semwal Cc: Gustavo Padovan Cc: Christian König --- drivers/dma-buf/dma-fence-array.c | 32 ++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c index 12c6f64c0bc2..d3fbd950be94 100644 --- a/drivers/dma-buf/dma-fence-array.c +++ b/drivers/dma-buf/dma-fence-array.c @@ -13,6 +13,8 @@ #include #include +#define PENDING_ERROR 1 + static const char *dma_fence_array_get_driver_name(struct dma_fence *fence) { return "dma_fence_array"; @@ -23,10 +25,29 @@ static const char *dma_fence_array_get_timeline_name(struct dma_fence *fence) return "unbound"; } +static void dma_fence_array_set_pending_error(struct dma_fence_array *array, + int error) +{ + /* +* Propagate the first error reported by any of our fences, but only +* before we ourselves are signaled. +*/ + if (error) + cmpxchg(>base.error, PENDING_ERROR, error); +} + +static void dma_fence_array_clear_pending_error(struct dma_fence_array *array) +{ + /* Clear the error flag if not actually set. */ + cmpxchg(>base.error, PENDING_ERROR, 0); +} + static void irq_dma_fence_array_work(struct irq_work *wrk) { struct dma_fence_array *array = container_of(wrk, typeof(*array), work); + dma_fence_array_clear_pending_error(array); + dma_fence_signal(>base); dma_fence_put(>base); } @@ -38,6 +59,8 @@ static void dma_fence_array_cb_func(struct dma_fence *f, container_of(cb, struct dma_fence_array_cb, cb); struct dma_fence_array *array = array_cb->array; + dma_fence_array_set_pending_error(array, f->error); + if (atomic_dec_and_test(>num_pending)) irq_work_queue(>work); else @@ -63,9 +86,14 @@ static bool dma_fence_array_enable_signaling(struct dma_fence *fence) dma_fence_get(>base); if (dma_fence_add_callback(array->fences[i], [i].cb, dma_fence_array_cb_func)) { + int error = array->fences[i]->error; + + dma_fence_array_set_pending_error(array, error); dma_fence_put(>base); - if (atomic_dec_and_test(>num_pending)) + if (atomic_dec_and_test(>num_pending)) { + dma_fence_array_clear_pending_error(array); return false; + } } } @@ -142,6 +170,8 @@ struct dma_fence_array *dma_fence_array_create(int num_fences, atomic_set(>num_pending, signal_on_any ? 1 : num_fences); array->fences = fences; + array->base.error = PENDING_ERROR; + return array; } EXPORT_SYMBOL(dma_fence_array_create); -- 2.23.0.rc1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 5/4] dma-fence: Have dma_fence_signal call signal_locked
Am 11.08.19 um 11:15 schrieb Chris Wilson: > Now that dma_fence_signal always takes the spinlock to flush the > cb_list, simply take the spinlock and call dma_fence_signal_locked() to > avoid code repetition. > > Suggested-by: Christian König > Signed-off-by: Chris Wilson > Cc: Christian König Reviewed-by: Christian König > --- > drivers/dma-buf/dma-fence.c | 32 > 1 file changed, 12 insertions(+), 20 deletions(-) > > diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c > index ab4a456bba04..367b71084d34 100644 > --- a/drivers/dma-buf/dma-fence.c > +++ b/drivers/dma-buf/dma-fence.c > @@ -122,26 +122,18 @@ EXPORT_SYMBOL(dma_fence_context_alloc); >*/ > int dma_fence_signal_locked(struct dma_fence *fence) > { > - int ret = 0; > - > - lockdep_assert_held(fence->lock); > - > if (WARN_ON(!fence)) > return -EINVAL; > > - if (!__dma_fence_signal(fence)) { > - ret = -EINVAL; > + lockdep_assert_held(fence->lock); > > - /* > - * we might have raced with the unlocked dma_fence_signal, > - * still run through all callbacks > - */ > - } else { > - __dma_fence_signal__timestamp(fence, ktime_get()); > - } > + if (!__dma_fence_signal(fence)) > + return -EINVAL; > > + __dma_fence_signal__timestamp(fence, ktime_get()); > __dma_fence_signal__notify(fence); > - return ret; > + > + return 0; > } > EXPORT_SYMBOL(dma_fence_signal_locked); > > @@ -161,19 +153,19 @@ EXPORT_SYMBOL(dma_fence_signal_locked); > int dma_fence_signal(struct dma_fence *fence) > { > unsigned long flags; > + int ret; > > if (!fence) > return -EINVAL; > > - if (!__dma_fence_signal(fence)) > - return -EINVAL; > - > - __dma_fence_signal__timestamp(fence, ktime_get()); > + if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, >flags)) > + return 0; > > spin_lock_irqsave(fence->lock, flags); > - __dma_fence_signal__notify(fence); > + ret = dma_fence_signal_locked(fence); > spin_unlock_irqrestore(fence->lock, flags); > - return 0; > + > + return ret; > } > EXPORT_SYMBOL(dma_fence_signal); > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4] dma-fence: Propagate errors to dma-fence-array container
How about this instead: Setting array->base.error = 1 during initialization. Then cmpxchg(array->base.error, 1, error) whenever a fence in the array signals. And then finally cmpxchg(array->base.error, 1, 0) when the array itself signals. Christian. Am 11.08.19 um 14:21 schrieb Chris Wilson: > When one of the array of fences is signaled, propagate its errors to the > parent fence-array (keeping the first error to be raised). > > v2: Opencode cmpxchg_local to avoid compiler freakout. > v3: Be careful not to flag an error if we race against signal-on-any. > v4: Same applies to installing the signal cb. > > Signed-off-by: Chris Wilson > Cc: Sumit Semwal > Cc: Gustavo Padovan > Cc: Christian König > --- > drivers/dma-buf/dma-fence-array.c | 37 ++- > include/linux/dma-fence-array.h | 2 ++ > 2 files changed, 38 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma-buf/dma-fence-array.c > b/drivers/dma-buf/dma-fence-array.c > index 12c6f64c0bc2..4d574dff0ba9 100644 > --- a/drivers/dma-buf/dma-fence-array.c > +++ b/drivers/dma-buf/dma-fence-array.c > @@ -23,10 +23,37 @@ static const char > *dma_fence_array_get_timeline_name(struct dma_fence *fence) > return "unbound"; > } > > +static void dma_fence_array_set_error(struct dma_fence_array *array) > +{ > + int error = READ_ONCE(array->pending_error); > + > + if (!array->base.error && error) > + dma_fence_set_error(>base, error); > +} > + > +static void dma_fence_array_set_pending_error(struct dma_fence_array *array, > + int error) > +{ > + /* > + * Propagate the first error reported by any of our fences, but only > + * before we ourselves are signaled. > + * > + * Note that this may race with multiple fences completing > + * simultaneously in error, but only one error will be kept, not > + * necessarily the first. So long as we propagate an error if any > + * fences were in error before we are signaled we should be telling > + * an acceptable truth. > + */ > + if (error && !array->pending_error) > + WRITE_ONCE(array->pending_error, error); > +} > + > static void irq_dma_fence_array_work(struct irq_work *wrk) > { > struct dma_fence_array *array = container_of(wrk, typeof(*array), work); > > + dma_fence_array_set_error(array); > + > dma_fence_signal(>base); > dma_fence_put(>base); > } > @@ -38,6 +65,8 @@ static void dma_fence_array_cb_func(struct dma_fence *f, > container_of(cb, struct dma_fence_array_cb, cb); > struct dma_fence_array *array = array_cb->array; > > + dma_fence_array_set_pending_error(array, f->error); > + > if (atomic_dec_and_test(>num_pending)) > irq_work_queue(>work); > else > @@ -63,9 +92,14 @@ static bool dma_fence_array_enable_signaling(struct > dma_fence *fence) > dma_fence_get(>base); > if (dma_fence_add_callback(array->fences[i], [i].cb, > dma_fence_array_cb_func)) { > + int error = array->fences[i]->error; > + > + dma_fence_array_set_pending_error(array, error); > dma_fence_put(>base); > - if (atomic_dec_and_test(>num_pending)) > + if (atomic_dec_and_test(>num_pending)) { > + dma_fence_array_set_error(array); > return false; > + } > } > } > > @@ -141,6 +175,7 @@ struct dma_fence_array *dma_fence_array_create(int > num_fences, > array->num_fences = num_fences; > atomic_set(>num_pending, signal_on_any ? 1 : num_fences); > array->fences = fences; > + array->pending_error = 0; > > return array; > } > diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h > index 303dd712220f..faaf70c524ae 100644 > --- a/include/linux/dma-fence-array.h > +++ b/include/linux/dma-fence-array.h > @@ -42,6 +42,8 @@ struct dma_fence_array { > atomic_t num_pending; > struct dma_fence **fences; > > + int pending_error; > + > struct irq_work work; > }; > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/icl: Remove DDI IO power domain from PG3 power domains (rev2)
== Series Details == Series: drm/i915/icl: Remove DDI IO power domain from PG3 power domains (rev2) URL : https://patchwork.freedesktop.org/series/64465/ State : success == Summary == CI Bug Log - changes from CI_DRM_6677_full -> Patchwork_13966_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13966_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_balancer@smoke: - shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#110854]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb1/igt@gem_exec_balan...@smoke.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-iclb3/igt@gem_exec_balan...@smoke.html * igt@gem_exec_schedule@preempt-queue-bsd2: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276]) +13 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb1/igt@gem_exec_sched...@preempt-queue-bsd2.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-iclb3/igt@gem_exec_sched...@preempt-queue-bsd2.html * igt@gem_exec_schedule@reorder-wide-bsd: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#111325]) +7 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb6/igt@gem_exec_sched...@reorder-wide-bsd.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-iclb4/igt@gem_exec_sched...@reorder-wide-bsd.html * igt@i915_suspend@fence-restore-untiled: - shard-skl: [PASS][7] -> [INCOMPLETE][8] ([fdo#104108]) +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl9/igt@i915_susp...@fence-restore-untiled.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-skl3/igt@i915_susp...@fence-restore-untiled.html * igt@i915_suspend@sysfs-reader: - shard-apl: [PASS][9] -> [DMESG-WARN][10] ([fdo#108566]) +5 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-apl2/igt@i915_susp...@sysfs-reader.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-apl3/igt@i915_susp...@sysfs-reader.html * igt@kms_color@pipe-a-degamma: - shard-skl: [PASS][11] -> [FAIL][12] ([fdo#104782] / [fdo#108145]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl1/igt@kms_co...@pipe-a-degamma.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-skl6/igt@kms_co...@pipe-a-degamma.html * igt@kms_flip@flip-vs-expired-vblank: - shard-skl: [PASS][13] -> [FAIL][14] ([fdo#105363]) +1 similar issue [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl1/igt@kms_f...@flip-vs-expired-vblank.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-skl6/igt@kms_f...@flip-vs-expired-vblank.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +3 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb7/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite.html * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: - shard-kbl: [PASS][17] -> [DMESG-WARN][18] ([fdo#108566]) +3 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-kbl4/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-kbl7/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min: - shard-skl: [PASS][19] -> [FAIL][20] ([fdo#108145]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl1/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-skl6/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: [PASS][21] -> [FAIL][22] ([fdo#108145] / [fdo#110403]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl3/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-skl7/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html * igt@kms_psr@no_drrs: - shard-iclb: [PASS][23] -> [FAIL][24] ([fdo#108341]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb8/igt@kms_psr@no_drrs.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/shard-iclb1/igt@kms_psr@no_drrs.html * igt@kms_psr@psr2_sprite_plane_move: - shard-iclb:
[Intel-gfx] ✓ Fi.CI.IGT: success for DC3CO Support for TGL (rev3)
== Series Details == Series: DC3CO Support for TGL (rev3) URL : https://patchwork.freedesktop.org/series/64923/ State : success == Summary == CI Bug Log - changes from CI_DRM_6677_full -> Patchwork_13965_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13965_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_bad_destroy@invalid-default-ctx: - shard-iclb: [PASS][1] -> [INCOMPLETE][2] ([fdo#107713]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb7/igt@gem_ctx_bad_dest...@invalid-default-ctx.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-iclb4/igt@gem_ctx_bad_dest...@invalid-default-ctx.html * igt@gem_exec_balancer@smoke: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#110854]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb1/igt@gem_exec_balan...@smoke.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-iclb7/igt@gem_exec_balan...@smoke.html * igt@gem_exec_schedule@preempt-queue-bsd1: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276]) +21 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb2/igt@gem_exec_sched...@preempt-queue-bsd1.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-iclb6/igt@gem_exec_sched...@preempt-queue-bsd1.html * igt@gem_exec_schedule@wide-bsd: - shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#111325]) +3 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb7/igt@gem_exec_sched...@wide-bsd.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-iclb2/igt@gem_exec_sched...@wide-bsd.html * igt@gem_softpin@noreloc-s3: - shard-skl: [PASS][9] -> [INCOMPLETE][10] ([fdo#104108]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl1/igt@gem_soft...@noreloc-s3.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-skl3/igt@gem_soft...@noreloc-s3.html * igt@i915_pm_rpm@i2c: - shard-hsw: [PASS][11] -> [FAIL][12] ([fdo#104097]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-hsw2/igt@i915_pm_...@i2c.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-hsw7/igt@i915_pm_...@i2c.html * igt@i915_suspend@sysfs-reader: - shard-kbl: [PASS][13] -> [DMESG-WARN][14] ([fdo#108566]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-kbl7/igt@i915_susp...@sysfs-reader.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-kbl4/igt@i915_susp...@sysfs-reader.html * igt@kms_cursor_crc@pipe-a-cursor-256x256-random: - shard-skl: [PASS][15] -> [FAIL][16] ([fdo#103232]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl4/igt@kms_cursor_...@pipe-a-cursor-256x256-random.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-skl8/igt@kms_cursor_...@pipe-a-cursor-256x256-random.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render: - shard-iclb: [PASS][17] -> [FAIL][18] ([fdo#103167]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min: - shard-skl: [PASS][19] -> [FAIL][20] ([fdo#108145]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl1/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-skl8/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: [PASS][21] -> [FAIL][22] ([fdo#108145] / [fdo#110403]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-skl3/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-skl2/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html * igt@kms_psr@psr2_no_drrs: - shard-iclb: [PASS][23] -> [SKIP][24] ([fdo#109441]) +1 similar issue [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/shard-iclb2/igt@kms_psr@psr2_no_drrs.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/shard-iclb6/igt@kms_psr@psr2_no_drrs.html * igt@kms_vblank@pipe-a-ts-continuation-suspend: - shard-apl: [PASS][25] -> [DMESG-WARN][26] ([fdo#108566]) +1 similar issue [25]:
[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling
== Series Details == Series: series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling URL : https://patchwork.freedesktop.org/series/65049/ State : success == Summary == CI Bug Log - changes from CI_DRM_6678 -> Patchwork_13972 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/ Known issues Here are the changes found in Patchwork_13972 that come from known issues: ### IGT changes ### Issues hit * igt@i915_selftest@live_execlists: - fi-skl-gvtdvm: [PASS][1] -> [DMESG-FAIL][2] ([fdo#08]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html * igt@prime_vgem@basic-fence-flip: - fi-ilk-650: [PASS][3] -> [DMESG-WARN][4] ([fdo#106387]) +1 similar issue [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-ilk-650/igt@prime_v...@basic-fence-flip.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-ilk-650/igt@prime_v...@basic-fence-flip.html Possible fixes * {igt@gem_ctx_switch@legacy-render}: - fi-icl-u2: [INCOMPLETE][5] ([fdo#107713]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-icl-u2/igt@gem_ctx_swi...@legacy-render.html * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][7] ([fdo#109271] / [fdo#109278]) -> [PASS][8] +2 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html * igt@kms_busy@basic-flip-c: - fi-kbl-7500u: [SKIP][9] ([fdo#109271] / [fdo#109278]) -> [PASS][10] +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7567u: [WARN][11] ([fdo#109380]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html * igt@kms_pipe_crc_basic@read-crc-pipe-c: - fi-kbl-7567u: [SKIP][13] ([fdo#109271]) -> [PASS][14] +23 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [SKIP][15] ([fdo#109271]) -> [PASS][16] +23 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6678/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#106387]: https://bugs.freedesktop.org/show_bug.cgi?id=106387 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109380]: https://bugs.freedesktop.org/show_bug.cgi?id=109380 [fdo#08]: https://bugs.freedesktop.org/show_bug.cgi?id=08 Participating hosts (54 -> 46) -- Missing(8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-8809g fi-icl-y fi-byt-clapper fi-bdw-samus Build changes - * CI: CI-20190529 -> None * Linux: CI_DRM_6678 -> Patchwork_13972 CI-20190529: 20190529 CI_DRM_6678: 0330b51e91d7c3bedfe40afadc6c221e4d1a9c61 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5127: f43f5fa12ac1b93febfe3eeb9e9985f5f3e2eff0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_13972: f7132b8a78e05565c2952d914c37f8990b6f8735 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == f7132b8a78e0 drm/i915: Extract general GT interrupt handlers 3b77c08c3532 drm/i915: Extract GT powermanagement interrupt handling == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13972/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling
== Series Details == Series: series starting with [1/2] drm/i915: Extract GT powermanagement interrupt handling URL : https://patchwork.freedesktop.org/series/65049/ State : warning == Summary == $ dim checkpatch origin/drm-tip 3b77c08c3532 drm/i915: Extract GT powermanagement interrupt handling -:45: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #45: new file mode 100644 -:50: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #50: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c:1: +/* -:51: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #51: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c:2: + * SPDX-License-Identifier: MIT -:164: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #164: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h:1: +/* -:165: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #165: FILE: drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h:2: + * SPDX-License-Identifier: MIT -:195: CHECK:UNCOMMENTED_DEFINITION: spinlock_t definition without comment #195: FILE: drivers/gpu/drm/i915/gt/intel_gt_types.h:76: + spinlock_t irq_lock; total: 0 errors, 5 warnings, 1 checks, 566 lines checked f7132b8a78e0 drm/i915: Extract general GT interrupt handlers -:55: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #55: new file mode 100644 -:60: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #60: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.c:1: +/* -:61: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #61: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.c:2: + * SPDX-License-Identifier: MIT -:521: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1 #521: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.h:1: +/* -:522: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #522: FILE: drivers/gpu/drm/i915/gt/intel_gt_irq.h:2: + * SPDX-License-Identifier: MIT total: 0 errors, 5 warnings, 0 checks, 1497 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 2/2] drm/i915: Extract general GT interrupt handlers
From: Andi Shyti i915_irq.c is large. It serves as the central dispatch and handler for all of our device interrupts. Lets break it up by pulling out the GT interrupt handlers. Based on a patch by Chris Wilson. Signed-off-by: Andi Shyti --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 8 +- drivers/gpu/drm/i915/gt/intel_gt_irq.c | 455 +++ drivers/gpu/drm/i915/gt/intel_gt_irq.h | 44 ++ drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c | 1 + drivers/gpu/drm/i915/gt/intel_gt_types.h| 1 + drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 9 +- drivers/gpu/drm/i915/i915_drv.h | 1 - drivers/gpu/drm/i915/i915_irq.c | 604 ++-- drivers/gpu/drm/i915/i915_irq.h | 47 ++ 10 files changed, 593 insertions(+), 578 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_irq.c create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_irq.h diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index d226659fdbb3..45add812048b 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -79,6 +79,7 @@ gt-y += \ gt/intel_engine_pm.o \ gt/intel_engine_user.o \ gt/intel_gt.o \ + gt/intel_gt_irq.o \ gt/intel_gt_pm.o \ gt/intel_gt_pm_irq.o \ gt/intel_hangcheck.o \ diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c index e1bbc9b428cd..ceba1da61967 100644 --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c @@ -35,9 +35,9 @@ static void irq_enable(struct intel_engine_cs *engine) return; /* Caller disables interrupts */ - spin_lock(>i915->irq_lock); + spin_lock(>gt->irq_lock); engine->irq_enable(engine); - spin_unlock(>i915->irq_lock); + spin_unlock(>gt->irq_lock); } static void irq_disable(struct intel_engine_cs *engine) @@ -46,9 +46,9 @@ static void irq_disable(struct intel_engine_cs *engine) return; /* Caller disables interrupts */ - spin_lock(>i915->irq_lock); + spin_lock(>gt->irq_lock); engine->irq_disable(engine); - spin_unlock(>i915->irq_lock); + spin_unlock(>gt->irq_lock); } static void __intel_breadcrumbs_disarm_irq(struct intel_breadcrumbs *b) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c new file mode 100644 index ..34a4fb624bf7 --- /dev/null +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c @@ -0,0 +1,455 @@ +/* + * SPDX-License-Identifier: MIT + * + * Copyright © 2019 Intel Corporation + */ + +#include + +#include "i915_drv.h" +#include "i915_irq.h" +#include "intel_gt.h" +#include "intel_gt_irq.h" +#include "intel_uncore.h" + +static void guc_irq_handler(struct intel_guc *guc, u16 iir) +{ + if (iir & GUC_INTR_GUC2HOST) + intel_guc_to_host_event_handler(guc); +} + +static void +cs_irq_handler(struct intel_engine_cs *engine, u32 iir) +{ + bool tasklet = false; + + if (iir & GT_CONTEXT_SWITCH_INTERRUPT) + tasklet = true; + + if (iir & GT_RENDER_USER_INTERRUPT) { + intel_engine_breadcrumbs_irq(engine); + tasklet |= intel_engine_needs_breadcrumb_tasklet(engine); + } + + if (tasklet) + tasklet_hi_schedule(>execlists.tasklet); +} + +static u32 +gen11_gt_engine_identity(struct intel_gt *gt, +const unsigned int bank, const unsigned int bit) +{ + void __iomem * const regs = gt->uncore->regs; + u32 timeout_ts; + u32 ident; + + lockdep_assert_held(>irq_lock); + + raw_reg_write(regs, GEN11_IIR_REG_SELECTOR(bank), BIT(bit)); + + /* +* NB: Specs do not specify how long to spin wait, +* so we do ~100us as an educated guess. +*/ + timeout_ts = (local_clock() >> 10) + 100; + do { + ident = raw_reg_read(regs, GEN11_INTR_IDENTITY_REG(bank)); + } while (!(ident & GEN11_INTR_DATA_VALID) && +!time_after32(local_clock() >> 10, timeout_ts)); + + if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) { + DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n", + bank, bit, ident); + return 0; + } + + raw_reg_write(regs, GEN11_INTR_IDENTITY_REG(bank), + GEN11_INTR_DATA_VALID); + + return ident; +} + +static void +gen11_other_irq_handler(struct intel_gt *gt, const u8 instance, + const u16 iir) +{ + if (instance == OTHER_GUC_INSTANCE) + return guc_irq_handler(>uc.guc, iir); + + if (instance == OTHER_GTPM_INSTANCE) + return gen11_rps_irq_handler(gt, iir); + + WARN_ONCE(1, "unhandled other interrupt instance=0x%x, iir=0x%x\n", +
[Intel-gfx] [PATCH 1/2] drm/i915: Extract GT powermanagement interrupt handling
From: Andi Shyti i915_irq.c is large. It serves as the central dispatch and handler for all of our device interrupts. Pull out the GT pm interrupt handling (leaving the central dispatch) so that we can encapsulate the logic a little better. Based on a patch by Chris Wilson. Signed-off-by: Andi Shyti --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/gt/intel_gt.c | 4 +- drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c | 108 ++ drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h | 22 +++ drivers/gpu/drm/i915/gt/intel_gt_types.h | 3 +- drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 5 +- drivers/gpu/drm/i915/i915_irq.c| 220 + drivers/gpu/drm/i915/i915_irq.h| 2 - 8 files changed, 191 insertions(+), 174 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 3962d9728dd7..d226659fdbb3 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -80,6 +80,7 @@ gt-y += \ gt/intel_engine_user.o \ gt/intel_gt.o \ gt/intel_gt_pm.o \ + gt/intel_gt_pm_irq.o \ gt/intel_hangcheck.o \ gt/intel_lrc.o \ gt/intel_renderstate.o \ diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c index c543467a8a1c..914bd2db3bc7 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt.c +++ b/drivers/gpu/drm/i915/gt/intel_gt.c @@ -13,9 +13,11 @@ void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915) gt->i915 = i915; gt->uncore = >uncore; + spin_lock_init(>irq_lock); + INIT_LIST_HEAD(>active_rings); - INIT_LIST_HEAD(>closed_vma); + INIT_LIST_HEAD(>closed_vma); spin_lock_init(>closed_lock); intel_gt_init_hangcheck(gt); diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c new file mode 100644 index ..83e11c2cc5ab --- /dev/null +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm_irq.c @@ -0,0 +1,108 @@ +/* + * SPDX-License-Identifier: MIT + * + * Copyright © 2019 Intel Corporation + */ + +#include "i915_drv.h" +#include "i915_reg.h" +#include "intel_gt.h" +#include "intel_gt_pm_irq.h" + +static void write_pm_imr(struct intel_gt *gt) +{ + struct drm_i915_private *i915 = gt->i915; + struct intel_uncore *uncore = gt->uncore; + u32 mask = gt->pm_imr; + i915_reg_t reg; + + if (INTEL_GEN(i915) >= 11) { + reg = GEN11_GPM_WGBOXPERF_INTR_MASK; + mask <<= 16; /* pm is in upper half */ + } else if (INTEL_GEN(i915) >= 8) { + reg = GEN8_GT_IMR(2); + } else { + reg = GEN6_PMIMR; + } + + intel_uncore_write(uncore, reg, mask); +} + +static void gen6_gt_pm_update_irq(struct intel_gt *gt, + u32 interrupt_mask, + u32 enabled_irq_mask) +{ + u32 new_val; + + WARN_ON(enabled_irq_mask & ~interrupt_mask); + + lockdep_assert_held(>irq_lock); + + new_val = gt->pm_imr; + new_val &= ~interrupt_mask; + new_val |= ~enabled_irq_mask & interrupt_mask; + + if (new_val != gt->pm_imr) { + gt->pm_imr = new_val; + write_pm_imr(gt); + } +} + +void gen6_gt_pm_unmask_irq(struct intel_gt *gt, u32 mask) +{ + gen6_gt_pm_update_irq(gt, mask, mask); +} + +void gen6_gt_pm_mask_irq(struct intel_gt *gt, u32 mask) +{ + gen6_gt_pm_update_irq(gt, mask, 0); +} + +void gen6_gt_pm_reset_iir(struct intel_gt *gt, u32 reset_mask) +{ + struct intel_uncore *uncore = gt->uncore; + i915_reg_t reg = INTEL_GEN(gt->i915) >= 8 ? GEN8_GT_IIR(2) : GEN6_PMIIR; + + lockdep_assert_held(>irq_lock); + + intel_uncore_write(uncore, reg, reset_mask); + intel_uncore_write(uncore, reg, reset_mask); + intel_uncore_posting_read(uncore, reg); +} + +static void write_pm_ier(struct intel_gt *gt) +{ + struct drm_i915_private *i915 = gt->i915; + struct intel_uncore *uncore = gt->uncore; + u32 mask = gt->pm_ier; + i915_reg_t reg; + + if (INTEL_GEN(i915) >= 11) { + reg = GEN11_GPM_WGBOXPERF_INTR_ENABLE; + mask <<= 16; /* pm is in upper half */ + } else if (INTEL_GEN(i915) >= 8) { + reg = GEN8_GT_IER(2); + } else { + reg = GEN6_PMIER; + } + + intel_uncore_write(uncore, reg, mask); +} + +void gen6_gt_pm_enable_irq(struct intel_gt *gt, u32 enable_mask) +{ + lockdep_assert_held(>irq_lock); + + gt->pm_ier |= enable_mask; + write_pm_ier(gt); + gen6_gt_pm_unmask_irq(gt, enable_mask); +} + +void gen6_gt_pm_disable_irq(struct intel_gt *gt, u32 disable_mask) +{ + lockdep_assert_held(>irq_lock); + + gt->pm_ier &=
[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [v4] dma-fence: Propagate errors to dma-fence-array container (rev5)
== Series Details == Series: series starting with [v4] dma-fence: Propagate errors to dma-fence-array container (rev5) URL : https://patchwork.freedesktop.org/series/65027/ State : failure == Summary == Applying: dma-fence: Propagate errors to dma-fence-array container Applying: dma-fence: Report the composite sync_file status Applying: dma-fence: Refactor signaling for manual invocation Applying: dma-fence: Have dma_fence_signal call signal_locked Using index info to reconstruct a base tree... M drivers/dma-buf/dma-fence.c Falling back to patching base and 3-way merge... Auto-merging drivers/dma-buf/dma-fence.c CONFLICT (content): Merge conflict in drivers/dma-buf/dma-fence.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch' to see the failed patch Patch failed at 0004 dma-fence: Have dma_fence_signal call signal_locked When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v4] dma-fence: Propagate errors to dma-fence-array container
When one of the array of fences is signaled, propagate its errors to the parent fence-array (keeping the first error to be raised). v2: Opencode cmpxchg_local to avoid compiler freakout. v3: Be careful not to flag an error if we race against signal-on-any. v4: Same applies to installing the signal cb. Signed-off-by: Chris Wilson Cc: Sumit Semwal Cc: Gustavo Padovan Cc: Christian König --- drivers/dma-buf/dma-fence-array.c | 37 ++- include/linux/dma-fence-array.h | 2 ++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c index 12c6f64c0bc2..4d574dff0ba9 100644 --- a/drivers/dma-buf/dma-fence-array.c +++ b/drivers/dma-buf/dma-fence-array.c @@ -23,10 +23,37 @@ static const char *dma_fence_array_get_timeline_name(struct dma_fence *fence) return "unbound"; } +static void dma_fence_array_set_error(struct dma_fence_array *array) +{ + int error = READ_ONCE(array->pending_error); + + if (!array->base.error && error) + dma_fence_set_error(>base, error); +} + +static void dma_fence_array_set_pending_error(struct dma_fence_array *array, + int error) +{ + /* +* Propagate the first error reported by any of our fences, but only +* before we ourselves are signaled. +* +* Note that this may race with multiple fences completing +* simultaneously in error, but only one error will be kept, not +* necessarily the first. So long as we propagate an error if any +* fences were in error before we are signaled we should be telling +* an acceptable truth. +*/ + if (error && !array->pending_error) + WRITE_ONCE(array->pending_error, error); +} + static void irq_dma_fence_array_work(struct irq_work *wrk) { struct dma_fence_array *array = container_of(wrk, typeof(*array), work); + dma_fence_array_set_error(array); + dma_fence_signal(>base); dma_fence_put(>base); } @@ -38,6 +65,8 @@ static void dma_fence_array_cb_func(struct dma_fence *f, container_of(cb, struct dma_fence_array_cb, cb); struct dma_fence_array *array = array_cb->array; + dma_fence_array_set_pending_error(array, f->error); + if (atomic_dec_and_test(>num_pending)) irq_work_queue(>work); else @@ -63,9 +92,14 @@ static bool dma_fence_array_enable_signaling(struct dma_fence *fence) dma_fence_get(>base); if (dma_fence_add_callback(array->fences[i], [i].cb, dma_fence_array_cb_func)) { + int error = array->fences[i]->error; + + dma_fence_array_set_pending_error(array, error); dma_fence_put(>base); - if (atomic_dec_and_test(>num_pending)) + if (atomic_dec_and_test(>num_pending)) { + dma_fence_array_set_error(array); return false; + } } } @@ -141,6 +175,7 @@ struct dma_fence_array *dma_fence_array_create(int num_fences, array->num_fences = num_fences; atomic_set(>num_pending, signal_on_any ? 1 : num_fences); array->fences = fences; + array->pending_error = 0; return array; } diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h index 303dd712220f..faaf70c524ae 100644 --- a/include/linux/dma-fence-array.h +++ b/include/linux/dma-fence-array.h @@ -42,6 +42,8 @@ struct dma_fence_array { atomic_t num_pending; struct dma_fence **fences; + int pending_error; + struct irq_work work; }; -- 2.23.0.rc1 ___ 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 [v3] dma-fence: Propagate errors to dma-fence-array container (rev4)
== Series Details == Series: series starting with [v3] dma-fence: Propagate errors to dma-fence-array container (rev4) URL : https://patchwork.freedesktop.org/series/65027/ State : failure == Summary == Applying: dma-fence: Propagate errors to dma-fence-array container Applying: dma-fence: Report the composite sync_file status Applying: dma-fence: Refactor signaling for manual invocation Applying: dma-fence: Have dma_fence_signal call signal_locked Using index info to reconstruct a base tree... M drivers/dma-buf/dma-fence.c Falling back to patching base and 3-way merge... Auto-merging drivers/dma-buf/dma-fence.c CONFLICT (content): Merge conflict in drivers/dma-buf/dma-fence.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch' to see the failed patch Patch failed at 0004 dma-fence: Have dma_fence_signal call signal_locked When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v3] dma-fence: Propagate errors to dma-fence-array container
When one of the array of fences is signaled, propagate its errors to the parent fence-array (keeping the first error to be raised). v2: Opencode cmpxchg_local to avoid compiler freakout. v3: Be careful not to flag an error if we race against signal-on-any Signed-off-by: Chris Wilson Cc: Sumit Semwal Cc: Gustavo Padovan Cc: Christian König --- drivers/dma-buf/dma-fence-array.c | 25 + include/linux/dma-fence-array.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c index 12c6f64c0bc2..e806c5fe9ec9 100644 --- a/drivers/dma-buf/dma-fence-array.c +++ b/drivers/dma-buf/dma-fence-array.c @@ -23,10 +23,19 @@ static const char *dma_fence_array_get_timeline_name(struct dma_fence *fence) return "unbound"; } +static void dma_fence_array_set_error_once(struct dma_fence_array *array, + int error) +{ + if (!array->base.error && error) + dma_fence_set_error(>base, error); +} + static void irq_dma_fence_array_work(struct irq_work *wrk) { struct dma_fence_array *array = container_of(wrk, typeof(*array), work); + dma_fence_array_set_error_once(array, READ_ONCE(array->pending_error)); + dma_fence_signal(>base); dma_fence_put(>base); } @@ -38,6 +47,19 @@ static void dma_fence_array_cb_func(struct dma_fence *f, container_of(cb, struct dma_fence_array_cb, cb); struct dma_fence_array *array = array_cb->array; + /* +* Propagate the first error reported by any of our fences, but only +* before we ourselves are signaled. +* +* Note that this may race with multiple fences completing +* simultaneously in error, but only one error will be kept, not +* necessarily the first. So long as we propagate an error if any +* fences were in error before we are signaled we should be telling +* an acceptable truth. +*/ + if (f->error && !array->pending_error) + WRITE_ONCE(array->pending_error, f->error); + if (atomic_dec_and_test(>num_pending)) irq_work_queue(>work); else @@ -63,6 +85,8 @@ static bool dma_fence_array_enable_signaling(struct dma_fence *fence) dma_fence_get(>base); if (dma_fence_add_callback(array->fences[i], [i].cb, dma_fence_array_cb_func)) { + dma_fence_array_set_error_once(array, + array->fences[i]->error); dma_fence_put(>base); if (atomic_dec_and_test(>num_pending)) return false; @@ -141,6 +165,7 @@ struct dma_fence_array *dma_fence_array_create(int num_fences, array->num_fences = num_fences; atomic_set(>num_pending, signal_on_any ? 1 : num_fences); array->fences = fences; + array->pending_error = 0; return array; } diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h index 303dd712220f..faaf70c524ae 100644 --- a/include/linux/dma-fence-array.h +++ b/include/linux/dma-fence-array.h @@ -42,6 +42,8 @@ struct dma_fence_array { atomic_t num_pending; struct dma_fence **fences; + int pending_error; + struct irq_work work; }; -- 2.23.0.rc1 ___ 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/4] dma-fence: Propagate errors to dma-fence-array container (rev3)
== Series Details == Series: series starting with [1/4] dma-fence: Propagate errors to dma-fence-array container (rev3) URL : https://patchwork.freedesktop.org/series/65027/ State : failure == Summary == Applying: dma-fence: Propagate errors to dma-fence-array container error: patch failed: drivers/dma-buf/dma-fence-array.c:33 error: drivers/dma-buf/dma-fence-array.c: patch does not apply error: patch failed: include/linux/dma-fence-array.h:42 error: include/linux/dma-fence-array.h: patch does not apply error: Did you hand edit your patch? It does not apply to blobs recorded in its index. hint: Use 'git am --show-current-patch' to see the failed patch Using index info to reconstruct a base tree... M drivers/dma-buf/dma-fence-array.c Patch failed at 0001 dma-fence: Propagate errors to dma-fence-array container When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 2/2] drm/i915: Verify the engine setup after recording the defaults
Quoting Andi Shyti (2019-08-11 10:57:44) > Hi Chris, > > On Sat, Aug 10, 2019 at 10:03:29AM +0100, Chris Wilson wrote: > > Check that the engine w/a persist after we performed a context switch > > and record those w/a into the default context state. > > > > Signed-off-by: Chris Wilson > > Cc: Andi Shyti > > Acked-by: Andi Shyti The only problem as I'm sure you've discovered is that our selftests assume the engine is parked, and this w/a verification leaves them awake. Vexing. -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 1/4] dma-fence: Propagate errors to dma-fence-array container
Quoting Koenig, Christian (2019-08-11 09:58:31) > Am 10.08.19 um 17:34 schrieb Chris Wilson: > > + /* > > + * Propagate the first error reported by any of our fences, but only > > + * before we ourselves are signaled. > > + */ > > + if (atomic_read(>num_pending) > 0) > > + fence_set_error_once(>base, f->error); > > That is racy even if you check the atomic because num_pending can be > initialized to 1 for signal any arrays as well. We both agree that we don't care about the potential write tearing if two errors occur simultaneous, either error will do for our error? So it's just the matter of not marking the array as being in error if we have already signaled. > I suggest to rather test in dma_fence_array_set_error_once if we got an > error and if yes grab the sequence lock and test if we are already > signaled or not. How about embracing the race with something like, diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c index d90675bb4fcc..c71c57d25e48 100644 --- a/drivers/dma-buf/dma-fence-array.c +++ b/drivers/dma-buf/dma-fence-array.c @@ -33,6 +33,8 @@ static void irq_dma_fence_array_work(struct irq_work *wrk) { struct dma_fence_array *array = container_of(wrk, typeof(*array), work); + fence_set_error_once(>base, READ_ONCE(array->pending_error)); + dma_fence_signal(>base); dma_fence_put(>base); } @@ -48,8 +50,8 @@ static void dma_fence_array_cb_func(struct dma_fence *f, * Propagate the first error reported by any of our fences, but only * before we ourselves are signaled. */ - if (atomic_read(>num_pending) > 0) - fence_set_error_once(>base, f->error); + if (f->error && !array->pending_error) + WRITE_ONCE(array->pending_error, f->error); if (atomic_dec_and_test(>num_pending)) irq_work_queue(>work); @@ -156,6 +158,7 @@ struct dma_fence_array *dma_fence_array_create(int num_fences, array->num_fences = num_fences; atomic_set(>num_pending, signal_on_any ? 1 : num_fences); array->fences = fences; + array->pending_error = 0; return array; } diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h index 303dd712220f..faaf70c524ae 100644 --- a/include/linux/dma-fence-array.h +++ b/include/linux/dma-fence-array.h @@ -42,6 +42,8 @@ struct dma_fence_array { atomic_t num_pending; struct dma_fence **fences; + int pending_error; + struct irq_work work; }; That ensures there is no race between signaling and raising the error, but accepts that multiple fences may try and raise an error. There is still the potential for the signal-on-any to be flagged as an error by the second fence, but I claim that race is immaterial as the second fence could have been the signaler. -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/selftests: Prevent the timeslice expiring during suppression tests
== Series Details == Series: drm/i915/selftests: Prevent the timeslice expiring during suppression tests URL : https://patchwork.freedesktop.org/series/65032/ State : success == Summary == CI Bug Log - changes from CI_DRM_6675_full -> Patchwork_13964_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13964_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_isolation@rcs0-s3: - shard-apl: [PASS][1] -> [DMESG-WARN][2] ([fdo#108566]) +5 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-apl3/igt@gem_ctx_isolat...@rcs0-s3.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-apl6/igt@gem_ctx_isolat...@rcs0-s3.html * igt@gem_ctx_shared@exec-single-timeline-bsd: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#110841]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb3/igt@gem_ctx_sha...@exec-single-timeline-bsd.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-iclb4/igt@gem_ctx_sha...@exec-single-timeline-bsd.html * igt@gem_ctx_shared@exec-single-timeline-bsd1: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276]) +14 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb1/igt@gem_ctx_sha...@exec-single-timeline-bsd1.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-iclb8/igt@gem_ctx_sha...@exec-single-timeline-bsd1.html * igt@gem_exec_schedule@deep-bsd: - shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#111325]) +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb8/igt@gem_exec_sched...@deep-bsd.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-iclb1/igt@gem_exec_sched...@deep-bsd.html * igt@gem_softpin@noreloc-s3: - shard-skl: [PASS][9] -> [INCOMPLETE][10] ([fdo#104108]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl5/igt@gem_soft...@noreloc-s3.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-skl1/igt@gem_soft...@noreloc-s3.html * igt@gem_tiled_swapping@non-threaded: - shard-apl: [PASS][11] -> [DMESG-WARN][12] ([fdo#108686]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-apl4/igt@gem_tiled_swapp...@non-threaded.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-apl3/igt@gem_tiled_swapp...@non-threaded.html * igt@i915_pm_rpm@i2c: - shard-hsw: [PASS][13] -> [FAIL][14] ([fdo#104097]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-hsw6/igt@i915_pm_...@i2c.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-hsw6/igt@i915_pm_...@i2c.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +1 similar issue [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb1/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-cur-indfb-draw-blt.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-suspend: - shard-skl: [PASS][17] -> [INCOMPLETE][18] ([fdo#104108] / [fdo#106978]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl2/igt@kms_frontbuffer_track...@fbcpsr-suspend.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-skl7/igt@kms_frontbuffer_track...@fbcpsr-suspend.html * igt@kms_psr@psr2_suspend: - shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109441]) +1 similar issue [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb2/igt@kms_psr@psr2_suspend.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-iclb6/igt@kms_psr@psr2_suspend.html * igt@kms_setmode@basic: - shard-skl: [PASS][21] -> [FAIL][22] ([fdo#99912]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl6/igt@kms_setm...@basic.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-skl8/igt@kms_setm...@basic.html * igt@perf_pmu@rc6: - shard-kbl: [PASS][23] -> [SKIP][24] ([fdo#109271]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-kbl7/igt@perf_...@rc6.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13964/shard-kbl7/igt@perf_...@rc6.html * igt@perf_pmu@rc6-runtime-pm-long: - shard-iclb: [PASS][25] -> [FAIL][26] ([fdo#105010]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb3/igt@perf_...@rc6-runtime-pm-long.html [26]:
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/blt: support copying objects
== Series Details == Series: drm/i915/blt: support copying objects URL : https://patchwork.freedesktop.org/series/65031/ State : success == Summary == CI Bug Log - changes from CI_DRM_6675_full -> Patchwork_13963_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13963_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_shared@exec-single-timeline-bsd: - shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#110841]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb3/igt@gem_ctx_sha...@exec-single-timeline-bsd.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-iclb1/igt@gem_ctx_sha...@exec-single-timeline-bsd.html * igt@gem_exec_schedule@out-order-bsd2: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276]) +9 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb4/igt@gem_exec_sched...@out-order-bsd2.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-iclb5/igt@gem_exec_sched...@out-order-bsd2.html * igt@gem_exec_schedule@preemptive-hang-bsd: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#111325]) +7 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb7/igt@gem_exec_sched...@preemptive-hang-bsd.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-iclb2/igt@gem_exec_sched...@preemptive-hang-bsd.html * igt@gem_workarounds@suspend-resume-context: - shard-apl: [PASS][7] -> [DMESG-WARN][8] ([fdo#108566]) +5 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-apl4/igt@gem_workarou...@suspend-resume-context.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-apl2/igt@gem_workarou...@suspend-resume-context.html * igt@i915_pm_rpm@i2c: - shard-hsw: [PASS][9] -> [FAIL][10] ([fdo#104097]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-hsw6/igt@i915_pm_...@i2c.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-hsw2/igt@i915_pm_...@i2c.html * igt@i915_suspend@forcewake: - shard-kbl: [PASS][11] -> [DMESG-WARN][12] ([fdo#108566]) +2 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-kbl7/igt@i915_susp...@forcewake.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-kbl3/igt@i915_susp...@forcewake.html * igt@kms_cursor_legacy@cursor-vs-flip-toggle: - shard-hsw: [PASS][13] -> [FAIL][14] ([fdo#103355]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-hsw1/igt@kms_cursor_leg...@cursor-vs-flip-toggle.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-hsw6/igt@kms_cursor_leg...@cursor-vs-flip-toggle.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +4 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb5/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-iclb8/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes: - shard-kbl: [PASS][17] -> [INCOMPLETE][18] ([fdo#103665]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-kbl4/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-kbl2/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html * igt@kms_psr@no_drrs: - shard-iclb: [PASS][19] -> [FAIL][20] ([fdo#108341]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb6/igt@kms_psr@no_drrs.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-iclb1/igt@kms_psr@no_drrs.html * igt@kms_psr@psr2_cursor_mmap_gtt: - shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_gtt.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-iclb7/igt@kms_psr@psr2_cursor_mmap_gtt.html * igt@perf@polling: - shard-skl: [PASS][23] -> [FAIL][24] ([fdo#110728]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl9/igt@p...@polling.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13963/shard-skl10/igt@p...@polling.html Possible fixes * igt@gem_ctx_isolation@bcs0-s3: - shard-kbl: [DMESG-WARN][25] ([fdo#108566]) -> [PASS][26] +2 similar issues [25]:
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/tgl: Fixing up list of PG3 power domains.
== Series Details == Series: drm/i915/tgl: Fixing up list of PG3 power domains. URL : https://patchwork.freedesktop.org/series/65041/ State : success == Summary == CI Bug Log - changes from CI_DRM_6677 -> Patchwork_13968 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/ Known issues Here are the changes found in Patchwork_13968 that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: [PASS][1] -> [INCOMPLETE][2] ([fdo#107718]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html * igt@i915_selftest@live_execlists: - fi-skl-gvtdvm: [PASS][3] -> [DMESG-FAIL][4] ([fdo#08]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html * igt@i915_selftest@live_requests: - fi-byt-j1900: [PASS][5] -> [INCOMPLETE][6] ([fdo#102657]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-byt-j1900/igt@i915_selftest@live_requests.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-byt-j1900/igt@i915_selftest@live_requests.html * igt@kms_chamelium@dp-crc-fast: - fi-cml-u2: [PASS][7] -> [FAIL][8] ([fdo#110627]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-cml-u2/igt@kms_chamel...@dp-crc-fast.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-cml-u2/igt@kms_chamel...@dp-crc-fast.html * igt@kms_chamelium@dp-edid-read: - fi-kbl-7500u: [PASS][9] -> [WARN][10] ([fdo#109483]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7500u/igt@kms_chamel...@dp-edid-read.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-kbl-7500u/igt@kms_chamel...@dp-edid-read.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7567u: [PASS][11] -> [FAIL][12] ([fdo#109485]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7567u/igt@kms_chamel...@hdmi-hpd-fast.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-kbl-7567u/igt@kms_chamel...@hdmi-hpd-fast.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [PASS][13] -> [SKIP][14] ([fdo#109271]) +23 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html Possible fixes * igt@gem_mmap_gtt@basic-read: - fi-icl-u3: [DMESG-WARN][15] ([fdo#107724]) -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-u3/igt@gem_mmap_...@basic-read.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-icl-u3/igt@gem_mmap_...@basic-read.html * igt@gem_mmap_gtt@basic-write-no-prefault: - {fi-icl-dsi}: [DMESG-WARN][17] ([fdo#106107]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-dsi/igt@gem_mmap_...@basic-write-no-prefault.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-icl-dsi/igt@gem_mmap_...@basic-write-no-prefault.html * igt@i915_pm_rpm@module-reload: - fi-skl-6600u: [FAIL][19] ([fdo#107707]) -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6600u/igt@i915_pm_...@module-reload.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-skl-6600u/igt@i915_pm_...@module-reload.html * {igt@i915_selftest@live_gt_timelines}: - fi-bsw-kefka: [DMESG-WARN][21] -> [PASS][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-bsw-kefka/igt@i915_selftest@live_gt_timelines.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-bsw-kefka/igt@i915_selftest@live_gt_timelines.html * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][23] ([fdo#109271] / [fdo#109278]) -> [PASS][24] +2 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13968/fi-kbl-7567u/igt@kms_b...@basic-flip-a.html Warnings * igt@kms_chamelium@common-hpd-after-suspend: - fi-icl-u2: [FAIL][25] ([fdo#109483]) -> [DMESG-WARN][26] ([fdo#102505] / [fdo#110390]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html [26]:
[Intel-gfx] [PATCH] drm/i915/tgl: Fixing up list of PG3 power domains.
The DDI-IO power wells (PWR_WELL_CTL_DDI) are backing the IO/PHY functionality, which doesn't need the PG3 power power well. Accordingly fixing up the list of PG3 power domains. Cc: Imre Deak Cc: Ville Syrjälä Signed-off-by: Anshuman Gupta --- drivers/gpu/drm/i915/display/intel_display_power.c | 6 -- 1 file changed, 6 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c index e3bea2b74ce2..eac41125cf3b 100644 --- a/drivers/gpu/drm/i915/display/intel_display_power.c +++ b/drivers/gpu/drm/i915/display/intel_display_power.c @@ -2575,17 +2575,11 @@ void intel_display_power_put(struct drm_i915_private *dev_priv, BIT_ULL(POWER_DOMAIN_TRANSCODER_D) |\ BIT_ULL(POWER_DOMAIN_PIPE_B_PANEL_FITTER) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_TC1_LANES) | \ - BIT_ULL(POWER_DOMAIN_PORT_DDI_TC1_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_TC2_LANES) | \ - BIT_ULL(POWER_DOMAIN_PORT_DDI_TC2_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_TC3_LANES) | \ - BIT_ULL(POWER_DOMAIN_PORT_DDI_TC3_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_TC4_LANES) | \ - BIT_ULL(POWER_DOMAIN_PORT_DDI_TC4_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_TC5_LANES) | \ - BIT_ULL(POWER_DOMAIN_PORT_DDI_TC5_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_TC6_LANES) | \ - BIT_ULL(POWER_DOMAIN_PORT_DDI_TC6_IO) | \ BIT_ULL(POWER_DOMAIN_AUX_TC1) | \ BIT_ULL(POWER_DOMAIN_AUX_TC2) | \ BIT_ULL(POWER_DOMAIN_AUX_TC3) | \ -- 2.21.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 2/2] drm/i915: Verify the engine setup after recording the defaults
Hi Chris, On Sat, Aug 10, 2019 at 10:03:29AM +0100, Chris Wilson wrote: > Check that the engine w/a persist after we performed a context switch > and record those w/a into the default context state. > > Signed-off-by: Chris Wilson > Cc: Andi Shyti Acked-by: Andi Shyti Thanks, Andi ___ 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: Remove unused debugfs/i915_emon_status
Hi Chris, On Sat, Aug 10, 2019 at 10:03:28AM +0100, Chris Wilson wrote: > Before we start upon our great GT interrupt refactor, throw out the > cruft! In this case, it is an unloved debugfs showing the current ips > status, a fairly meaningless bunch of numbers that we are not checking. > > Signed-off-by: Chris Wilson > Cc: Andi Shyti Acked-by: Andi Shyti Andi ___ 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/4] dma-fence: Propagate errors to dma-fence-array container (rev2)
== Series Details == Series: series starting with [1/4] dma-fence: Propagate errors to dma-fence-array container (rev2) URL : https://patchwork.freedesktop.org/series/65027/ State : failure == Summary == Applying: dma-fence: Propagate errors to dma-fence-array container Applying: dma-fence: Report the composite sync_file status Applying: dma-fence: Refactor signaling for manual invocation Applying: dma-fence: Have dma_fence_signal call signal_locked Using index info to reconstruct a base tree... M drivers/dma-buf/dma-fence.c Falling back to patching base and 3-way merge... Auto-merging drivers/dma-buf/dma-fence.c CONFLICT (content): Merge conflict in drivers/dma-buf/dma-fence.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch' to see the failed patch Patch failed at 0004 dma-fence: Have dma_fence_signal call signal_locked When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] dma-buf: rename reservation_object to dma_resv
Quoting Christian König (2019-08-11 09:56:01) > Be more consistent with the naming of the other DMA-buf objects. From the tip of my fingers, \o/ > Signed-off-by: Christian König Letting the compiler do the real work (for the bits I spot checked it was the expected mechanical translation), and overwhelmingly agreeing with the motivation, Reviewed-by: Chris Wilson -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 5/4] dma-fence: Have dma_fence_signal call signal_locked
Now that dma_fence_signal always takes the spinlock to flush the cb_list, simply take the spinlock and call dma_fence_signal_locked() to avoid code repetition. Suggested-by: Christian König Signed-off-by: Chris Wilson Cc: Christian König --- drivers/dma-buf/dma-fence.c | 32 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c index ab4a456bba04..367b71084d34 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c @@ -122,26 +122,18 @@ EXPORT_SYMBOL(dma_fence_context_alloc); */ int dma_fence_signal_locked(struct dma_fence *fence) { - int ret = 0; - - lockdep_assert_held(fence->lock); - if (WARN_ON(!fence)) return -EINVAL; - if (!__dma_fence_signal(fence)) { - ret = -EINVAL; + lockdep_assert_held(fence->lock); - /* -* we might have raced with the unlocked dma_fence_signal, -* still run through all callbacks -*/ - } else { - __dma_fence_signal__timestamp(fence, ktime_get()); - } + if (!__dma_fence_signal(fence)) + return -EINVAL; + __dma_fence_signal__timestamp(fence, ktime_get()); __dma_fence_signal__notify(fence); - return ret; + + return 0; } EXPORT_SYMBOL(dma_fence_signal_locked); @@ -161,19 +153,19 @@ EXPORT_SYMBOL(dma_fence_signal_locked); int dma_fence_signal(struct dma_fence *fence) { unsigned long flags; + int ret; if (!fence) return -EINVAL; - if (!__dma_fence_signal(fence)) - return -EINVAL; - - __dma_fence_signal__timestamp(fence, ktime_get()); + if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, >flags)) + return 0; spin_lock_irqsave(fence->lock, flags); - __dma_fence_signal__notify(fence); + ret = dma_fence_signal_locked(fence); spin_unlock_irqrestore(fence->lock, flags); - return 0; + + return ret; } EXPORT_SYMBOL(dma_fence_signal); -- 2.23.0.rc1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 4/4] dma-fence: Always execute signal callbacks
Am 10.08.19 um 17:34 schrieb Chris Wilson: > Allow for some users to surreptitiously insert lazy signal callbacks that > do not depend on enabling the signaling mechanism around every fence. > (The cost of interrupts is too darn high, to revive an old meme.) > This means that we may have a cb_list even if the signaling bit is not > enabled, so always notify the callbacks. > > The cost is that dma_fence_signal() must always acquire the spinlock to > ensure that the cb_list is flushed. > > Signed-off-by: Chris Wilson > --- > drivers/dma-buf/dma-fence.c | 8 +++- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c > index 027a6a894abd..ab4a456bba04 100644 > --- a/drivers/dma-buf/dma-fence.c > +++ b/drivers/dma-buf/dma-fence.c > @@ -170,11 +170,9 @@ int dma_fence_signal(struct dma_fence *fence) > > __dma_fence_signal__timestamp(fence, ktime_get()); > > - if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, >flags)) { > - spin_lock_irqsave(fence->lock, flags); > - __dma_fence_signal__notify(fence); > - spin_unlock_irqrestore(fence->lock, flags); > - } > + spin_lock_irqsave(fence->lock, flags); > + __dma_fence_signal__notify(fence); > + spin_unlock_irqrestore(fence->lock, flags); If we now always grab the spinlock anyway I suggest to rather merge dma_fence_signal and dma_fence_signal_locked. Christian. > return 0; > } > EXPORT_SYMBOL(dma_fence_signal); ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 1/4] dma-fence: Propagate errors to dma-fence-array container
Am 10.08.19 um 17:34 schrieb Chris Wilson: > When one of the array of fences is signaled, propagate its errors to the > parent fence-array (keeping the first error to be raised). > > v2: Opencode cmpxchg_local to avoid compiler freakout. > > Signed-off-by: Chris Wilson > Cc: Sumit Semwal > Cc: Gustavo Padovan > --- > drivers/dma-buf/dma-fence-array.c | 15 +++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/dma-buf/dma-fence-array.c > b/drivers/dma-buf/dma-fence-array.c > index 12c6f64c0bc2..d90675bb4fcc 100644 > --- a/drivers/dma-buf/dma-fence-array.c > +++ b/drivers/dma-buf/dma-fence-array.c > @@ -13,6 +13,12 @@ > #include > #include > > +static void fence_set_error_once(struct dma_fence *fence, int error) I would use a dma_fence_array prefix for all names in the file. > +{ > + if (!fence->error && error) > + dma_fence_set_error(fence, error); > +} > + > static const char *dma_fence_array_get_driver_name(struct dma_fence *fence) > { > return "dma_fence_array"; > @@ -38,6 +44,13 @@ static void dma_fence_array_cb_func(struct dma_fence *f, > container_of(cb, struct dma_fence_array_cb, cb); > struct dma_fence_array *array = array_cb->array; > > + /* > + * Propagate the first error reported by any of our fences, but only > + * before we ourselves are signaled. > + */ > + if (atomic_read(>num_pending) > 0) > + fence_set_error_once(>base, f->error); That is racy even if you check the atomic because num_pending can be initialized to 1 for signal any arrays as well. I suggest to rather test in dma_fence_array_set_error_once if we got an error and if yes grab the sequence lock and test if we are already signaled or not. Christian. > + > if (atomic_dec_and_test(>num_pending)) > irq_work_queue(>work); > else > @@ -63,6 +76,8 @@ static bool dma_fence_array_enable_signaling(struct > dma_fence *fence) > dma_fence_get(>base); > if (dma_fence_add_callback(array->fences[i], [i].cb, > dma_fence_array_cb_func)) { > + fence_set_error_once(>base, > + array->fences[i]->error); > dma_fence_put(>base); > if (atomic_dec_and_test(>num_pending)) > return false; ___ 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/icl: Remove DDI IO power domain from PG3 power domains (rev2)
== Series Details == Series: drm/i915/icl: Remove DDI IO power domain from PG3 power domains (rev2) URL : https://patchwork.freedesktop.org/series/64465/ State : success == Summary == CI Bug Log - changes from CI_DRM_6677 -> Patchwork_13966 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/ Known issues Here are the changes found in Patchwork_13966 that come from known issues: ### IGT changes ### Issues hit * igt@i915_pm_rpm@module-reload: - fi-cfl-8109u: [PASS][1] -> [INCOMPLETE][2] ([fdo#107802]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-cfl-8109u/igt@i915_pm_...@module-reload.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-cfl-8109u/igt@i915_pm_...@module-reload.html * igt@i915_selftest@live_requests: - fi-byt-j1900: [PASS][3] -> [INCOMPLETE][4] ([fdo#102657]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-byt-j1900/igt@i915_selftest@live_requests.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-byt-j1900/igt@i915_selftest@live_requests.html * igt@kms_busy@basic-flip-c: - fi-kbl-7500u: [PASS][5] -> [SKIP][6] ([fdo#109271] / [fdo#109278]) +2 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-kbl-7500u/igt@kms_b...@basic-flip-c.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [PASS][7] -> [FAIL][8] ([fdo#109485]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [PASS][9] -> [SKIP][10] ([fdo#109271]) +23 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html - fi-icl-u3: [PASS][11] -> [DMESG-WARN][12] ([fdo#107724]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-u3/igt@prime_v...@basic-fence-flip.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-icl-u3/igt@prime_v...@basic-fence-flip.html Possible fixes * igt@gem_mmap_gtt@basic-read: - fi-icl-u3: [DMESG-WARN][13] ([fdo#107724]) -> [PASS][14] +1 similar issue [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-u3/igt@gem_mmap_...@basic-read.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-icl-u3/igt@gem_mmap_...@basic-read.html * igt@gem_mmap_gtt@basic-write-no-prefault: - {fi-icl-dsi}: [DMESG-WARN][15] ([fdo#106107]) -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-dsi/igt@gem_mmap_...@basic-write-no-prefault.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-icl-dsi/igt@gem_mmap_...@basic-write-no-prefault.html * igt@i915_pm_rpm@module-reload: - fi-skl-6600u: [FAIL][17] ([fdo#107707]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6600u/igt@i915_pm_...@module-reload.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-skl-6600u/igt@i915_pm_...@module-reload.html * {igt@i915_selftest@live_gt_timelines}: - fi-bsw-kefka: [DMESG-WARN][19] -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-bsw-kefka/igt@i915_selftest@live_gt_timelines.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-bsw-kefka/igt@i915_selftest@live_gt_timelines.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7567u: [WARN][21] ([fdo#109380]) -> [PASS][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-kbl-7567u/igt@kms_chamel...@common-hpd-after-suspend.html * igt@kms_pipe_crc_basic@read-crc-pipe-c: - fi-kbl-7567u: [SKIP][23] ([fdo#109271]) -> [PASS][24] +23 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13966/fi-kbl-7567u/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html Warnings * igt@kms_chamelium@common-hpd-after-suspend: - fi-icl-u2: [FAIL][25] ([fdo#109483]) -> [DMESG-WARN][26] ([fdo#102505] / [fdo#110390]) [25]:
Re: [Intel-gfx] [PATCH v3 2/2] drm/i915: add syncobj timeline support
On 01/08/2019 17:16, Chris Wilson wrote: Quoting Lionel Landwerlin (2019-08-01 15:29:34) On 31/07/2019 23:03, Chris Wilson wrote: Quoting Lionel Landwerlin (2019-07-31 15:07:33) -static struct drm_syncobj ** -get_fence_array(struct drm_i915_gem_execbuffer2 *args, - struct drm_file *file) +static struct i915_eb_fences * +get_timeline_fence_array(struct i915_execbuffer *eb, int *out_n_fences) +{ + struct drm_i915_gem_execbuffer_ext_timeline_fences *timeline_fences = + >extensions.timeline_fences; + struct drm_i915_gem_exec_fence __user *user_fences; + struct i915_eb_fences *fences; + u64 __user *user_values; + u64 num_fences, num_user_fences = timeline_fences->fence_count; + unsigned long n; + int err; + + /* Check multiplication overflow for access_ok() and kvmalloc_array() */ + BUILD_BUG_ON(sizeof(size_t) > sizeof(unsigned long)); + if (num_user_fences > min_t(unsigned long, + ULONG_MAX / sizeof(*user_fences), + SIZE_MAX / sizeof(*fences))) + return ERR_PTR(-EINVAL); + + user_fences = u64_to_user_ptr(timeline_fences->handles_ptr); + if (!access_ok(user_fences, num_user_fences * sizeof(*user_fences))) + return ERR_PTR(-EFAULT); + + user_values = u64_to_user_ptr(timeline_fences->values_ptr); + if (!access_ok(user_values, num_user_fences * sizeof(*user_values))) + return ERR_PTR(-EFAULT); + + fences = kvmalloc_array(num_user_fences, sizeof(*fences), + __GFP_NOWARN | GFP_KERNEL); + if (!fences) + return ERR_PTR(-ENOMEM); + + BUILD_BUG_ON(~(ARCH_KMALLOC_MINALIGN - 1) & +~__I915_EXEC_FENCE_UNKNOWN_FLAGS); + + for (n = 0, num_fences = 0; n < timeline_fences->fence_count; n++) { + struct drm_i915_gem_exec_fence user_fence; + struct drm_syncobj *syncobj; + struct dma_fence *fence = NULL; + u64 point; + + if (__copy_from_user(_fence, user_fences++, sizeof(user_fence))) { + err = -EFAULT; + goto err; + } + + if (user_fence.flags & __I915_EXEC_FENCE_UNKNOWN_FLAGS) { + err = -EINVAL; + goto err; + } + + if (__get_user(point, user_values++)) { + err = -EFAULT; + goto err; + } + + syncobj = drm_syncobj_find(eb->file, user_fence.handle); + if (!syncobj) { + DRM_DEBUG("Invalid syncobj handle provided\n"); + err = -ENOENT; + goto err; + } + + if (user_fence.flags & I915_EXEC_FENCE_WAIT) { + fence = drm_syncobj_fence_get(syncobj); + if (!fence) { + DRM_DEBUG("Syncobj handle has no fence\n"); + drm_syncobj_put(syncobj); + err = -EINVAL; + goto err; + } + + err = dma_fence_chain_find_seqno(, point); + if (err) { + DRM_DEBUG("Syncobj handle missing requested point %llu\n", point); + drm_syncobj_put(syncobj); + goto err; + } + + /* A point might have been signaled already and +* garbage collected from the timeline. In this case +* just ignore the point and carry on. +*/ + if (!fence) { + drm_syncobj_put(syncobj); + continue; + } + } + + /* +* For timeline syncobjs we need to preallocate chains for +* later signaling. +*/ + if (point != 0 && user_fence.flags & I915_EXEC_FENCE_SIGNAL) { if (dma_fence_chain_find_seqno() == 0) return -EINVAL; as an early sanity check? + fences[num_fences].chain_fence = + kmalloc(sizeof(*fences[num_fences].chain_fence), + GFP_KERNEL); + if (!fences[num_fences].chain_fence) { + dma_fence_put(fence); + drm_syncobj_put(syncobj); + err = -ENOMEM; + DRM_DEBUG("Unable to alloc chain_fence\n"); + goto err; + } + } else { + fences[num_fences].chain_fence = NULL; +
[Intel-gfx] ✓ Fi.CI.BAT: success for DC3CO Support for TGL (rev3)
== Series Details == Series: DC3CO Support for TGL (rev3) URL : https://patchwork.freedesktop.org/series/64923/ State : success == Summary == CI Bug Log - changes from CI_DRM_6677 -> Patchwork_13965 Summary --- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/ Known issues Here are the changes found in Patchwork_13965 that come from known issues: ### IGT changes ### Issues hit * igt@debugfs_test@read_all_entries: - fi-ilk-650: [PASS][1] -> [DMESG-WARN][2] ([fdo#106387]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-ilk-650/igt@debugfs_test@read_all_entries.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-ilk-650/igt@debugfs_test@read_all_entries.html * igt@i915_pm_rpm@basic-pci-d3-state: - fi-skl-6600u: [PASS][3] -> [FAIL][4] ([fdo#107707]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6600u/igt@i915_pm_...@basic-pci-d3-state.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-skl-6600u/igt@i915_pm_...@basic-pci-d3-state.html * igt@i915_pm_rpm@module-reload: - fi-skl-6770hq: [PASS][5] -> [FAIL][6] ([fdo#108511]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6770hq/igt@i915_pm_...@module-reload.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-skl-6770hq/igt@i915_pm_...@module-reload.html * igt@i915_selftest@live_execlists: - fi-skl-gvtdvm: [PASS][7] -> [DMESG-FAIL][8] ([fdo#08]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-skl-gvtdvm/igt@i915_selftest@live_execlists.html * igt@i915_selftest@live_requests: - fi-byt-j1900: [PASS][9] -> [INCOMPLETE][10] ([fdo#102657]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-byt-j1900/igt@i915_selftest@live_requests.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-byt-j1900/igt@i915_selftest@live_requests.html * igt@kms_addfb_basic@bad-pitch-256: - fi-icl-u3: [PASS][11] -> [DMESG-WARN][12] ([fdo#107724]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-u3/igt@kms_addfb_ba...@bad-pitch-256.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-icl-u3/igt@kms_addfb_ba...@bad-pitch-256.html * igt@kms_busy@basic-flip-c: - fi-skl-6770hq: [PASS][13] -> [SKIP][14] ([fdo#109271] / [fdo#109278]) +2 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6770hq/igt@kms_b...@basic-flip-c.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-skl-6770hq/igt@kms_b...@basic-flip-c.html * igt@kms_flip@basic-flip-vs-dpms: - fi-skl-6770hq: [PASS][15] -> [SKIP][16] ([fdo#109271]) +23 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6770hq/igt@kms_f...@basic-flip-vs-dpms.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-skl-6770hq/igt@kms_f...@basic-flip-vs-dpms.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-7500u: [PASS][17] -> [SKIP][18] ([fdo#109271]) +23 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-kbl-7500u/igt@prime_v...@basic-fence-flip.html Possible fixes * igt@gem_mmap_gtt@basic-read: - fi-icl-u3: [DMESG-WARN][19] ([fdo#107724]) -> [PASS][20] +1 similar issue [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-u3/igt@gem_mmap_...@basic-read.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-icl-u3/igt@gem_mmap_...@basic-read.html * igt@gem_mmap_gtt@basic-write-no-prefault: - {fi-icl-dsi}: [DMESG-WARN][21] ([fdo#106107]) -> [PASS][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-icl-dsi/igt@gem_mmap_...@basic-write-no-prefault.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-icl-dsi/igt@gem_mmap_...@basic-write-no-prefault.html * igt@i915_pm_rpm@module-reload: - fi-skl-6600u: [FAIL][23] ([fdo#107707]) -> [PASS][24] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-skl-6600u/igt@i915_pm_...@module-reload.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13965/fi-skl-6600u/igt@i915_pm_...@module-reload.html * {igt@i915_selftest@live_gt_timelines}: - fi-bsw-kefka: [DMESG-WARN][25] -> [PASS][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6677/fi-bsw-kefka/igt@i915_selftest@live_gt_timelines.html [26]:
[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/4] dma-fence: Propagate errors to dma-fence-array container
== Series Details == Series: series starting with [1/4] dma-fence: Propagate errors to dma-fence-array container URL : https://patchwork.freedesktop.org/series/65027/ State : success == Summary == CI Bug Log - changes from CI_DRM_6675_full -> Patchwork_13962_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_13962_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_isolation@bcs0-s3: - shard-iclb: [PASS][1] -> [INCOMPLETE][2] ([fdo#107713] / [fdo#109100]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb4/igt@gem_ctx_isolat...@bcs0-s3.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-iclb4/igt@gem_ctx_isolat...@bcs0-s3.html * igt@gem_eio@reset-stress: - shard-kbl: [PASS][3] -> [FAIL][4] ([fdo#109661]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-kbl7/igt@gem_...@reset-stress.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-kbl6/igt@gem_...@reset-stress.html * igt@gem_exec_balancer@smoke: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#110854]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb1/igt@gem_exec_balan...@smoke.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-iclb7/igt@gem_exec_balan...@smoke.html * igt@gem_exec_reloc@basic-range-active: - shard-skl: [PASS][7] -> [DMESG-WARN][8] ([fdo#106107]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl8/igt@gem_exec_re...@basic-range-active.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-skl8/igt@gem_exec_re...@basic-range-active.html * igt@gem_exec_schedule@reorder-wide-bsd: - shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#111325]) +2 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb6/igt@gem_exec_sched...@reorder-wide-bsd.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-iclb1/igt@gem_exec_sched...@reorder-wide-bsd.html * igt@kms_flip@2x-dpms-vs-vblank-race: - shard-hsw: [PASS][11] -> [DMESG-WARN][12] ([fdo#102614]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-hsw4/igt@kms_f...@2x-dpms-vs-vblank-race.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-hsw5/igt@kms_f...@2x-dpms-vs-vblank-race.html * igt@kms_flip@flip-vs-suspend-interruptible: - shard-apl: [PASS][13] -> [DMESG-WARN][14] ([fdo#108566]) +3 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-apl4/igt@kms_f...@flip-vs-suspend-interruptible.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-apl6/igt@kms_f...@flip-vs-suspend-interruptible.html - shard-kbl: [PASS][15] -> [DMESG-WARN][16] ([fdo#108566]) +3 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-kbl2/igt@kms_f...@flip-vs-suspend-interruptible.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-kbl3/igt@kms_f...@flip-vs-suspend-interruptible.html * igt@kms_flip@wf_vblank-ts-check-interruptible: - shard-hsw: [PASS][17] -> [INCOMPLETE][18] ([fdo#103540]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-hsw2/igt@kms_flip@wf_vblank-ts-check-interruptible.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-hsw7/igt@kms_flip@wf_vblank-ts-check-interruptible.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite: - shard-iclb: [PASS][19] -> [FAIL][20] ([fdo#103167]) +1 similar issue [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb5/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html * igt@kms_psr@psr2_sprite_plane_move: - shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) +3 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-iclb8/igt@kms_psr@psr2_sprite_plane_move.html * igt@kms_setmode@basic: - shard-skl: [PASS][23] -> [FAIL][24] ([fdo#99912]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl6/igt@kms_setm...@basic.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13962/shard-skl7/igt@kms_setm...@basic.html * igt@perf@polling: - shard-skl: [PASS][25] -> [FAIL][26] ([fdo#110728]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6675/shard-skl9/igt@p...@polling.html [26]:
[Intel-gfx] [PATCH v2] drm/i915/icl: Remove DDI IO power domain from PG3 power domains
The DDI-IO power wells (PWR_WELL_CTL_DDI) are backing the IO/PHY functionality, which doesn't need the PG3 power power well. Accordingly fixing up the list of PG3 power domains. v2: Removed "DDI E/F IO"power domain as well [Imre] Cc: Imre Deak Cc: Ville Syrjälä Signed-off-by: Anshuman Gupta --- drivers/gpu/drm/i915/display/intel_display_power.c | 5 - 1 file changed, 5 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c index e3bea2b74ce2..99ed4b4d7c3c 100644 --- a/drivers/gpu/drm/i915/display/intel_display_power.c +++ b/drivers/gpu/drm/i915/display/intel_display_power.c @@ -2482,15 +2482,10 @@ void intel_display_power_put(struct drm_i915_private *dev_priv, BIT_ULL(POWER_DOMAIN_TRANSCODER_C) |\ BIT_ULL(POWER_DOMAIN_PIPE_B_PANEL_FITTER) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_B_LANES) |\ - BIT_ULL(POWER_DOMAIN_PORT_DDI_B_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_C_LANES) |\ - BIT_ULL(POWER_DOMAIN_PORT_DDI_C_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_D_LANES) |\ - BIT_ULL(POWER_DOMAIN_PORT_DDI_D_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_E_LANES) |\ - BIT_ULL(POWER_DOMAIN_PORT_DDI_E_IO) | \ BIT_ULL(POWER_DOMAIN_PORT_DDI_F_LANES) |\ - BIT_ULL(POWER_DOMAIN_PORT_DDI_F_IO) | \ BIT_ULL(POWER_DOMAIN_AUX_B) | \ BIT_ULL(POWER_DOMAIN_AUX_C) | \ BIT_ULL(POWER_DOMAIN_AUX_D) | \ -- 2.21.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.SPARSE: warning for DC3CO Support for TGL (rev3)
== Series Details == Series: DC3CO Support for TGL (rev3) URL : https://patchwork.freedesktop.org/series/64923/ State : warning == Summary == $ dim sparse origin/drm-tip Sparse version: v0.5.2 Commit: drm/i915/tgl: Add DC3CO required register and bits Okay! Commit: drm/i915/tgl: Add DC3CO mask to allowed_dc_mask and gen9_dc_mask Okay! Commit: drm/i915/tgl: Add power well to enable DC3CO state Okay! Commit: drm/i915/tgl: mutual exclusive handling for DC3CO and DC5/6 Okay! Commit: drm/i915/tgl: Add helper function to prefer dc3co over dc5 Okay! Commit: drm/i915/tgl: Add VIDEO power domain Okay! Commit: drm/i915/tgl: DC3CO PSR2 helper +drivers/gpu/drm/i915/display/intel_psr.c:557:23: warning: expression using sizeof(void) +drivers/gpu/drm/i915/display/intel_psr.c:558:23: warning: expression using sizeof(void) +drivers/gpu/drm/i915/display/intel_psr.c:558:23: warning: expression using sizeof(void) Commit: drm/i915/tgl: switch between dc3co and dc5 based on display idleness Okay! Commit: drm/i915/tgl: Add DC3CO counter in i915_dmc_info Okay! ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for DC3CO Support for TGL (rev3)
== Series Details == Series: DC3CO Support for TGL (rev3) URL : https://patchwork.freedesktop.org/series/64923/ State : warning == Summary == $ dim checkpatch origin/drm-tip 2054d249c446 drm/i915/tgl: Add DC3CO required register and bits 4baba79d9dae drm/i915/tgl: Add DC3CO mask to allowed_dc_mask and gen9_dc_mask 0b870884f799 drm/i915/tgl: Add power well to enable DC3CO state -:53: CHECK:USLEEP_RANGE: usleep_range is preferred over udelay; see Documentation/timers/timers-howto.rst #53: FILE: drivers/gpu/drm/i915/display/intel_display_power.c:810: + udelay(200); total: 0 errors, 0 warnings, 1 checks, 101 lines checked 90090f91b4ff drm/i915/tgl: mutual exclusive handling for DC3CO and DC5/6 009a62ac40eb drm/i915/tgl: Add helper function to prefer dc3co over dc5 ecf16f51f1d5 drm/i915/tgl: Add VIDEO power domain 593a0fd308b8 drm/i915/tgl: DC3CO PSR2 helper 72d3d56414e2 drm/i915/tgl: switch between dc3co and dc5 based on display idleness b2921c6c42ee drm/i915/tgl: Add DC3CO counter in i915_dmc_info ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v5 3/9] drm/i915/tgl: Add power well to enable DC3CO state
"DC3CO Off" power well inherits its power domains from "DC Off" power well, these power domains will disallow DC3CO when any external displays are connected and at time of modeset and aux programming. Renaming "DC Off" power well to "DC5 Off" power well. v2: commit log improvement. v3: Used intel_wait_for_register to wait for DC3CO exit. [Imre] Used gen9_set_dc_state() to allow/disallow DC3CO. [Imre] Moved transcoder psr2 exit line enablement from tgl_allow_dc3co() to a appropriate place haswell_crtc_enable(). [Imre] Changed the DC3CO power well enabled call back logic as recommended in review comments. [Imre] v4: Used wait_for_us() instead of intel_wait_for_reg(). [Imre (IRC)] v5: using udelay() instead of waiting for DC3CO exit status. v6: Fixed minor unwanted change. Cc: Jani Nikula Cc: Imre Deak Cc: Animesh Manna Cc: Rodrigo Vivi Signed-off-by: Anshuman Gupta --- .../drm/i915/display/intel_display_power.c| 67 ++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c index e2ef202aeeef..7ca9992bb663 100644 --- a/drivers/gpu/drm/i915/display/intel_display_power.c +++ b/drivers/gpu/drm/i915/display/intel_display_power.c @@ -791,6 +791,25 @@ static void gen9_set_dc_state(struct drm_i915_private *dev_priv, u32 state) dev_priv->csr.dc_state = val & mask; } +static void tgl_allow_dc3co(struct drm_i915_private *dev_priv) +{ + gen9_set_dc_state(dev_priv, DC_STATE_EN_DC3CO); +} + +static void tgl_disallow_dc3co(struct drm_i915_private *dev_priv) +{ + u32 val; + + val = I915_READ(DC_STATE_EN); + val &= ~DC_STATE_DC3CO_STATUS; + I915_WRITE(DC_STATE_EN, val); + gen9_set_dc_state(dev_priv, DC_STATE_DISABLE); + /* +* Delay of 200us DC3CO Exit time B.Spec 49196 +*/ + udelay(200); +} + static void bxt_enable_dc9(struct drm_i915_private *dev_priv) { assert_can_enable_dc9(dev_priv); @@ -1007,6 +1026,33 @@ static void gen9_dc_off_power_well_disable(struct drm_i915_private *dev_priv, gen9_enable_dc5(dev_priv); } +static void tgl_dc3co_power_well_enable(struct drm_i915_private *dev_priv, + struct i915_power_well *power_well) +{ + tgl_disallow_dc3co(dev_priv); +} + +static void tgl_dc3co_power_well_disable(struct drm_i915_private *dev_priv, +struct i915_power_well *power_well) +{ + if (!dev_priv->psr.sink_psr2_support) + return; + + if (dev_priv->csr.allowed_dc_mask & DC_STATE_EN_DC3CO) + tgl_allow_dc3co(dev_priv); +} + +static bool tgl_dc3co_power_well_enabled(struct drm_i915_private *dev_priv, +struct i915_power_well *power_well) +{ + /* +* Checking alone DC_STATE_EN is not enough as DC5 power well also +* allow/disallow DC3CO to make sure both are not enabled at same time +*/ + return ((I915_READ(DC_STATE_EN) & DC_STATE_EN_DC3CO) == 0 && + (I915_READ(DC_STATE_EN) & DC_STATE_EN_UPTO_DC5_DC6_MASK) == 0); +} + static void i9xx_power_well_sync_hw_noop(struct drm_i915_private *dev_priv, struct i915_power_well *power_well) { @@ -2611,6 +2657,12 @@ void intel_display_power_put(struct drm_i915_private *dev_priv, BIT_ULL(POWER_DOMAIN_TRANSCODER_VDSC_PW2) | \ BIT_ULL(POWER_DOMAIN_INIT)) +#define TGL_DISPLAY_DC3CO_OFF_POWER_DOMAINS ( \ + TGL_PW_2_POWER_DOMAINS |\ + BIT_ULL(POWER_DOMAIN_MODESET) | \ + BIT_ULL(POWER_DOMAIN_AUX_A) | \ + BIT_ULL(POWER_DOMAIN_INIT)) + #define TGL_DISPLAY_DC_OFF_POWER_DOMAINS ( \ TGL_PW_2_POWER_DOMAINS |\ BIT_ULL(POWER_DOMAIN_MODESET) | \ @@ -2715,6 +2767,13 @@ static const struct i915_power_well_ops gen9_dc_off_power_well_ops = { .is_enabled = gen9_dc_off_power_well_enabled, }; +static const struct i915_power_well_ops tgl_dc3co_power_well_ops = { + .sync_hw = i9xx_power_well_sync_hw_noop, + .enable = tgl_dc3co_power_well_enable, + .disable = tgl_dc3co_power_well_disable, + .is_enabled = tgl_dc3co_power_well_enabled, +}; + static const struct i915_power_well_ops bxt_dpio_cmn_power_well_ops = { .sync_hw = i9xx_power_well_sync_hw_noop, .enable = bxt_dpio_cmn_power_well_enable, @@ -3626,11 +3685,17 @@ static const struct i915_power_well_desc tgl_power_wells[] = { }, }, { - .name = "DC off", + .name = "DC5 off", .domains = TGL_DISPLAY_DC_OFF_POWER_DOMAINS, .ops = _dc_off_power_well_ops, .id = DISP_PW_ID_NONE, }, + { + .name =