[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/dsb: Pre allocate and late cleanup of cmd buffer.

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/dsb: Pre allocate and late cleanup of cmd buffer.
URL   : https://patchwork.freedesktop.org/series/72729/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7838_full -> Patchwork_16316_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_16316_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_16316_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_16316_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_exec_schedule@deep-bsd:
- shard-skl:  [PASS][1] -> [TIMEOUT][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-skl5/igt@gem_exec_sched...@deep-bsd.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-skl10/igt@gem_exec_sched...@deep-bsd.html

  
Known issues


  Here are the changes found in Patchwork_16316_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@vcs1-queued:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276] / [fdo#112080])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb4/igt@gem_ctx_persiste...@vcs1-queued.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-iclb8/igt@gem_ctx_persiste...@vcs1-queued.html

  * igt@gem_exec_balancer@hang:
- shard-tglb: [PASS][5] -> [TIMEOUT][6] ([fdo#112271])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-tglb3/igt@gem_exec_balan...@hang.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-tglb7/igt@gem_exec_balan...@hang.html

  * igt@gem_exec_schedule@fifo-bsd1:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276]) +11 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb4/igt@gem_exec_sched...@fifo-bsd1.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-iclb3/igt@gem_exec_sched...@fifo-bsd1.html

  * igt@gem_exec_schedule@pi-userfault-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([i915#677])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb3/igt@gem_exec_sched...@pi-userfault-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-iclb4/igt@gem_exec_sched...@pi-userfault-bsd.html

  * igt@gem_exec_schedule@preemptive-hang-bsd:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#112146]) +2 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb6/igt@gem_exec_sched...@preemptive-hang-bsd.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-iclb2/igt@gem_exec_sched...@preemptive-hang-bsd.html

  * igt@gem_partial_pwrite_pread@reads:
- shard-hsw:  [PASS][13] -> [FAIL][14] ([i915#694])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-hsw4/igt@gem_partial_pwrite_pr...@reads.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-hsw5/igt@gem_partial_pwrite_pr...@reads.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-apl:  [PASS][15] -> [FAIL][16] ([i915#644])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-apl8/igt@gem_pp...@flink-and-close-vma-leak.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-apl7/igt@gem_pp...@flink-and-close-vma-leak.html

  * igt@i915_selftest@live_blt:
- shard-hsw:  [PASS][17] -> [DMESG-FAIL][18] ([i915#770])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-hsw1/igt@i915_selftest@live_blt.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-hsw8/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@mock_sanitycheck:
- shard-tglb: [PASS][19] -> [TIMEOUT][20] ([fdo#112126])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-tglb4/igt@i915_selftest@mock_sanitycheck.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-tglb2/igt@i915_selftest@mock_sanitycheck.html

  * igt@kms_color@pipe-a-ctm-0-25:
- shard-skl:  [PASS][21] -> [DMESG-WARN][22] ([i915#109])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-skl4/igt@kms_co...@pipe-a-ctm-0-25.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16316/shard-skl7/igt@kms_co...@pipe-a-ctm-0-25.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt:
- shard-tglb: [PASS][23] -> [SKIP][24] ([i915#668])
   [23]: 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore
URL   : https://patchwork.freedesktop.org/series/72724/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7838_full -> Patchwork_16315_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_16315_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@vcs1-queued:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#109276] / [fdo#112080]) 
+1 similar issue
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb4/igt@gem_ctx_persiste...@vcs1-queued.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb5/igt@gem_ctx_persiste...@vcs1-queued.html

  * igt@gem_exec_parallel@vcs1-fds:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#112080]) +16 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb4/igt@gem_exec_paral...@vcs1-fds.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb3/igt@gem_exec_paral...@vcs1-fds.html

  * igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([i915#677])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb5/igt@gem_exec_sched...@pi-common-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb2/igt@gem_exec_sched...@pi-common-bsd.html

  * igt@gem_exec_schedule@pi-shared-iova-bsd2:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276]) +23 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb4/igt@gem_exec_sched...@pi-shared-iova-bsd2.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb3/igt@gem_exec_sched...@pi-shared-iova-bsd2.html

  * igt@gem_exec_schedule@preempt-queue-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112146]) +4 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb5/igt@gem_exec_sched...@preempt-queue-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb2/igt@gem_exec_sched...@preempt-queue-bsd.html

  * igt@gem_partial_pwrite_pread@reads-snoop:
- shard-hsw:  [PASS][11] -> [FAIL][12] ([i915#694])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-hsw5/igt@gem_partial_pwrite_pr...@reads-snoop.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-hsw2/igt@gem_partial_pwrite_pr...@reads-snoop.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-apl:  [PASS][13] -> [FAIL][14] ([i915#644])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-apl8/igt@gem_pp...@flink-and-close-vma-leak.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-apl7/igt@gem_pp...@flink-and-close-vma-leak.html

  * igt@gem_softpin@noreloc-s3:
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-kbl4/igt@gem_soft...@noreloc-s3.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-kbl3/igt@gem_soft...@noreloc-s3.html

  * igt@i915_pm_dc@dc6-dpms:
- shard-iclb: [PASS][17] -> [FAIL][18] ([i915#454])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb4/igt@i915_pm...@dc6-dpms.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb3/igt@i915_pm...@dc6-dpms.html

  * igt@i915_pm_rpm@debugfs-read:
- shard-skl:  [PASS][19] -> [INCOMPLETE][20] ([i915#151])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-skl7/igt@i915_pm_...@debugfs-read.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-skl7/igt@i915_pm_...@debugfs-read.html

  * igt@i915_selftest@live_blt:
- shard-hsw:  [PASS][21] -> [DMESG-FAIL][22] ([i915#563])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-hsw1/igt@i915_selftest@live_blt.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-hsw6/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_execlists:
- shard-iclb: [PASS][23] -> [INCOMPLETE][24] ([i915#140])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-iclb3/igt@i915_selftest@live_execlists.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16315/shard-iclb6/igt@i915_selftest@live_execlists.html

  * igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-glk:  [PASS][25] -> [FAIL][26] ([i915#34])
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7838/shard-glk1/igt@kms_f...@plain-flip-fb-recreate-interruptible.html
   [26]: 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/gt: Skip rmw for masked registers (rev4)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Skip rmw for masked registers (rev4)
URL   : https://patchwork.freedesktop.org/series/72776/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16371


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/index.html

Known issues


  Here are the changes found in Patchwork_16371 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][1] -> [DMESG-FAIL][2] ([i915#725])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-j1900:   [TIMEOUT][3] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
- fi-byt-n2820:   [TIMEOUT][5] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][7] ([fdo#103375]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][9] ([fdo#111550]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][11] ([i915#563]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][13] ([fdo#108569]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-icl-y/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][15] ([fdo#111096] / [i915#323]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][17] ([i915#579]) -> [SKIP][18] ([fdo#109271])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][19] ([fdo#103375]) -> [DMESG-WARN][20] 
([IGT#4] / [i915#263])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16371/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#263]: https://gitlab.freedesktop.org/drm/intel/issues/263
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (47 -> 43)

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/tgl: Implement Wa_1606931601 (rev4)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Implement Wa_1606931601 (rev4)
URL   : https://patchwork.freedesktop.org/series/72433/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16370


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/index.html

Known issues


  Here are the changes found in Patchwork_16370 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-guc: [PASS][1] -> [FAIL][2] ([i915#138])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-kbl-guc/igt@i915_pm_...@module-reload.html
- fi-skl-6770hq:  [PASS][3] -> [FAIL][4] ([i915#178])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@i915_pm_...@module-reload.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-skl-6770hq/igt@i915_pm_...@module-reload.html

  * igt@i915_selftest@live_gem_contexts:
- fi-hsw-peppy:   [PASS][5] -> [DMESG-FAIL][6] ([i915#722])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html

  * igt@i915_selftest@live_gtt:
- fi-bxt-dsi: [PASS][7] -> [TIMEOUT][8] ([fdo#112271])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-bxt-dsi/igt@i915_selftest@live_gtt.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-bxt-dsi/igt@i915_selftest@live_gtt.html
- fi-icl-dsi: [PASS][9] -> [TIMEOUT][10] ([fdo#112271])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-dsi/igt@i915_selftest@live_gtt.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-icl-dsi/igt@i915_selftest@live_gtt.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-j1900:   [TIMEOUT][11] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
- fi-byt-n2820:   [TIMEOUT][13] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][15] ([fdo#103375]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][17] ([fdo#111550]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][19] ([i915#563]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][21] ([fdo#108569]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-icl-y/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][23] ([fdo#111096] / [i915#323]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][25] ([i915#579]) -> [SKIP][26] ([fdo#109271])
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16370/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][27] ([fdo#103375]) -> [DMESG-WARN][28] 
([IGT#4] / 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/tgl: Add Wa_1606054188:tgl (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Add Wa_1606054188:tgl (rev2)
URL   : https://patchwork.freedesktop.org/series/72839/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16369


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/index.html

Known issues


  Here are the changes found in Patchwork_16369 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_close_race@basic-threads:
- fi-hsw-peppy:   [PASS][1] -> [TIMEOUT][2] ([fdo#112271] / [i915#1084])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-peppy/igt@gem_close_r...@basic-threads.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-hsw-peppy/igt@gem_close_r...@basic-threads.html

  * igt@i915_selftest@live_blt:
- fi-ivb-3770:[PASS][3] -> [DMESG-FAIL][4] ([i915#725])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-ivb-3770/igt@i915_selftest@live_blt.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-ivb-3770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gtt:
- fi-kbl-7500u:   [PASS][5] -> [TIMEOUT][6] ([fdo#112271])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@i915_selftest@live_gtt.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-kbl-7500u/igt@i915_selftest@live_gtt.html
- fi-icl-u2:  [PASS][7] -> [TIMEOUT][8] ([fdo#112271])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@i915_selftest@live_gtt.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-icl-u2/igt@i915_selftest@live_gtt.html

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][9] ([fdo#103375]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][11] ([fdo#111550]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][13] ([fdo#108569]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-icl-y/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][15] ([fdo#111096] / [i915#323]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][17] ([i915#579]) -> [SKIP][18] ([fdo#109271])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][19] ([i915#563]) -> [DMESG-FAIL][20] 
([i915#553] / [i915#725])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][21] ([fdo#103375]) -> [DMESG-WARN][22] 
([IGT#4] / [i915#263])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16369/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#263]: https://gitlab.freedesktop.org/drm/intel/issues/263
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#553]: 

[Intel-gfx] ✗ Fi.CI.BAT: failure for In order to readout DP SDPs, refactors the handling of DP SDPs

2020-01-31 Thread Patchwork
== Series Details ==

Series: In order to readout DP SDPs, refactors the handling of DP SDPs
URL   : https://patchwork.freedesktop.org/series/72853/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16368


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_16368 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_16368, 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_16368/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_16368:

### IGT changes ###

 Possible regressions 

  * igt@gem_exec_suspend@basic-s0:
- fi-skl-6770hq:  [PASS][1] -> [TIMEOUT][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@gem_exec_susp...@basic-s0.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-skl-6770hq/igt@gem_exec_susp...@basic-s0.html
- fi-apl-guc: [PASS][3] -> [TIMEOUT][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-apl-guc/igt@gem_exec_susp...@basic-s0.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-apl-guc/igt@gem_exec_susp...@basic-s0.html

  * igt@runner@aborted:
- fi-whl-u:   NOTRUN -> [FAIL][5]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-whl-u/igt@run...@aborted.html

  
Known issues


  Here are the changes found in Patchwork_16368 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][6] -> [DMESG-FAIL][7] ([i915#553] / [i915#725])
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-hsw-4770r/igt@i915_selftest@live_blt.html
- fi-ivb-3770:[PASS][8] -> [DMESG-FAIL][9] ([i915#770])
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-ivb-3770/igt@i915_selftest@live_blt.html
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-ivb-3770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
- fi-kbl-x1275:   [PASS][10] -> [DMESG-FAIL][11] ([i915#943])
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-x1275/igt@i915_selftest@live_gem_contexts.html
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-kbl-x1275/igt@i915_selftest@live_gem_contexts.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][12] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][13]
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][14] ([i915#579]) -> [SKIP][15] ([fdo#109271])
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@runner@aborted:
- fi-kbl-soraka:  [FAIL][16] ([fdo#109383] / [fdo#111012]) -> 
[FAIL][17] ([i915#192] / [i915#193] / [i915#194])
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-soraka/igt@run...@aborted.html
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-kbl-soraka/igt@run...@aborted.html
- fi-cml-s:   [FAIL][18] ([fdo#111012] / [fdo#111764] / [i915#577]) 
-> [FAIL][19] ([i915#577])
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-cml-s/igt@run...@aborted.html
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16368/fi-cml-s/igt@run...@aborted.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109383]: https://bugs.freedesktop.org/show_bug.cgi?id=109383
  [fdo#111012]: https://bugs.freedesktop.org/show_bug.cgi?id=111012
  [fdo#111764]: https://bugs.freedesktop.org/show_bug.cgi?id=111764
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#192]: https://gitlab.freedesktop.org/drm/intel/issues/192
  [i915#193]: https://gitlab.freedesktop.org/drm/intel/issues/193
  [i915#194]: https://gitlab.freedesktop.org/drm/intel/issues/194
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#577]: https://gitlab.freedesktop.org/drm/intel/issues/577
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/tgl: Add Wa_1606054188:tgl (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Add Wa_1606054188:tgl (rev2)
URL   : https://patchwork.freedesktop.org/series/72839/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
e0d47ccc6c89 drm/i915/tgl: Add Wa_1606054188:tgl
-:56: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#56: FILE: drivers/gpu/drm/i915/display/intel_sprite.c:2164:
+   if (IS_GEN(dev_priv, 12) &&
+  plane_state->ckey.flags & I915_SET_COLORKEY_SOURCE &&

total: 0 errors, 0 warnings, 1 checks, 34 lines checked

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for In order to readout DP SDPs, refactors the handling of DP SDPs

2020-01-31 Thread Patchwork
== Series Details ==

Series: In order to readout DP SDPs, refactors the handling of DP SDPs
URL   : https://patchwork.freedesktop.org/series/72853/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
974c950dba68 drm: add DP 1.4 VSC SDP Payload related enums
b5932d8b337a drm/i915: Add DP VSC SDP payload data to 
intel_crtc_state.infoframes
fe36e97597d0 drm/i915/dp: Add compute routine for DP VSC SDP
dab670ba6466 drm/i915/dp: Add compute routine for DP HDR Metadata Infoframe SDP
-:40: WARNING:LONG_LINE: line over 100 characters
#40: FILE: drivers/gpu/drm/i915/display/intel_dp.c:2483:
+   crtc_state->infoframes.enable |= 
intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA);

total: 0 errors, 1 warnings, 0 checks, 33 lines checked
4d1d1328db05 drm/i915/dp: Add writing of DP SDPs (Secondary Data Packet)
a1ee3b6d5e37 video/hdmi: Add Unpack only function for DRM infoframe
ee3cca76be12 drm/i915/dp: Read out DP SDPs (Secondary Data Packet)
-:43: ERROR:SPACING: space prohibited before that close parenthesis ')'
#43: FILE: drivers/gpu/drm/i915/display/intel_dp.c:4933:
+   if (sdp->sdp_header.HB0 != 0 )

-:96: WARNING:LINE_SPACING: Missing a blank line after declarations
#96: FILE: drivers/gpu/drm/i915/display/intel_dp.c:4986:
+   const struct dp_sdp *sdp = buffer;
+   if (size < sizeof(struct dp_sdp))

-:99: ERROR:SPACING: space prohibited before that close parenthesis ')'
#99: FILE: drivers/gpu/drm/i915/display/intel_dp.c:4989:
+   if (sdp->sdp_header.HB0 != 0 )

-:159: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#159: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5049:
+
+}

total: 2 errors, 1 warnings, 1 checks, 185 lines checked
71d4541b4e2b drm/i915/dp: Add logging function for DP VSC SDP
-:181: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#181: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5255:
+   dp_sdp_log("colorspace: %s\n",
+   dp_colorspace_get_name(vsc->colorspace));

-:183: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#183: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5257:
+   dp_sdp_log("colorimetry: %s\n",
+   dp_colorimetry_get_name(vsc->colorspace, 
vsc->colorimetry));

-:184: ERROR:SPACING: space required after that ',' (ctx:VxV)
#184: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5258:
+   dp_sdp_log("bpc: %u\n",vsc->bpc);
  ^

-:186: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#186: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5260:
+   dp_sdp_log("dynamic range: %s\n",
+   dp_dynamic_range_get_name(vsc->dynamic_range));

-:188: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#188: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5262:
+   dp_sdp_log("content type: %s\n",
+   dp_content_type_get_name(vsc->content_type));

-:190: CHECK:LINE_SPACING: Please use a blank line after 
function/struct/union/enum declarations
#190: FILE: drivers/gpu/drm/i915/display/intel_dp.c:5264:
+}
+#undef dp_sdp_log

total: 1 errors, 0 warnings, 5 checks, 201 lines checked
36bad01ec45b drm/i915: Include HDMI DRM infoframe in the crtc state dump
5e7f5283440d drm/i915: Include DP HDR Metadata Infoframe SDP in the crtc state 
dump
4018f46daed3 drm/i915: Include DP VSC SDP in the crtc state dump
598b9e7b6d4b drm/i915: Program DP SDPs with computed configs
ed56d2bf8bf9 drm/i915: Add state readout for DP HDR Metadata Infoframe SDP
2ca13c74b7ea drm/i915: Add state readout for DP VSC SDP
-:76: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'name' - possible 
side-effects?
#76: FILE: drivers/gpu/drm/i915/display/intel_display.c:13869:
+#define PIPE_CONF_CHECK_DP_VSC_SDP(name) do { \
+   if (!intel_compare_dp_vsc_sdp(_config->infoframes.name, \
+ _config->infoframes.name)) { \
+   pipe_config_dp_vsc_sdp_mismatch(dev_priv, fastset, 
__stringify(name), \
+   
_config->infoframes.name, \
+   _config->infoframes.name); 
\
+   ret = false; \
+   } \
+} while (0)

-:86: CHECK:LINE_SPACING: Please don't use multiple blank lines
#86: FILE: drivers/gpu/drm/i915/display/intel_display.c:13879:
+
+

total: 0 errors, 0 warnings, 2 checks, 74 lines checked
4b64dff6dce0 drm/i915: Program DP SDPs on pipe updates
2d4bcb15a15d drm/i915: Stop sending DP SDPs on intel_ddi_post_disable_dp()
762cbeda3c0d drm/i915/dp: Add compute routine for DP PSR VSC SDP
89ecb4d12fb1 drm/i915/psr: Use new DP VSC SDP compute routine on PSR
-:13: WARNING:TYPO_SPELLING: 'defintion' may be misspelled - perhaps 
'definition'?
#13: 
it moves defintion of "struct intel_dp_vsc_sdp" to i915_drv.h .

total: 0 errors, 1 warnings, 0 checks, 180 lines checked

___
Intel-gfx 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm: Add support for DP 1.4 Compliance edid corruption test (rev4)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm: Add support for DP 1.4 Compliance edid corruption test (rev4)
URL   : https://patchwork.freedesktop.org/series/70530/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16367


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/index.html

Known issues


  Here are the changes found in Patchwork_16367 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][1] -> [DMESG-FAIL][2] ([i915#553] / [i915#725])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@kms_chamelium@dp-edid-read:
- fi-cml-u2:  [PASS][3] -> [FAIL][4] ([i915#217] / [i915#976])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-cml-u2/igt@kms_chamel...@dp-edid-read.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-cml-u2/igt@kms_chamel...@dp-edid-read.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-j1900:   [TIMEOUT][5] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-byt-j1900/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][7] ([fdo#103375]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][9] ([fdo#111550]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][11] ([fdo#108569]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-icl-y/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][13] ([fdo#111096] / [i915#323]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][15] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [TIMEOUT][16] ([fdo#112271] / [i915#816])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][17] ([i915#579]) -> [SKIP][18] ([fdo#109271])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][19] ([i915#563]) -> [DMESG-FAIL][20] 
([i915#725])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][21] ([fdo#103375]) -> [DMESG-WARN][22] 
([IGT#4] / [i915#263])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16367/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: 

[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/4] drm/i915/display: Wake the power well during resume

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/display: Wake the power well during 
resume
URL   : https://patchwork.freedesktop.org/series/72849/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16366


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_16366 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_16366, 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_16366/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_16366:

### IGT changes ###

 Possible regressions 

  * igt@i915_module_load@reload:
- fi-bsw-nick:NOTRUN -> [TIMEOUT][1]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-bsw-nick/igt@i915_module_l...@reload.html

  * igt@i915_selftest@live_gt_timelines:
- fi-snb-2520m:   [PASS][2] -> [TIMEOUT][3]
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-snb-2520m/igt@i915_selftest@live_gt_timelines.html
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-snb-2520m/igt@i915_selftest@live_gt_timelines.html
- fi-hsw-4770:[PASS][4] -> [TIMEOUT][5]
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_gt_timelines.html
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-hsw-4770/igt@i915_selftest@live_gt_timelines.html
- fi-blb-e6850:   [PASS][6] -> [TIMEOUT][7]
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-blb-e6850/igt@i915_selftest@live_gt_timelines.html
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-blb-e6850/igt@i915_selftest@live_gt_timelines.html
- fi-gdg-551: NOTRUN -> [TIMEOUT][8]
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-gdg-551/igt@i915_selftest@live_gt_timelines.html
- fi-bwr-2160:[PASS][9] -> [TIMEOUT][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-bwr-2160/igt@i915_selftest@live_gt_timelines.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-bwr-2160/igt@i915_selftest@live_gt_timelines.html
- fi-snb-2600:NOTRUN -> [TIMEOUT][11]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-snb-2600/igt@i915_selftest@live_gt_timelines.html
- fi-hsw-4770r:   [PASS][12] -> [TIMEOUT][13]
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770r/igt@i915_selftest@live_gt_timelines.html
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-hsw-4770r/igt@i915_selftest@live_gt_timelines.html
- fi-elk-e7500:   [PASS][14] -> [TIMEOUT][15]
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-elk-e7500/igt@i915_selftest@live_gt_timelines.html
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-elk-e7500/igt@i915_selftest@live_gt_timelines.html
- fi-ivb-3770:[PASS][16] -> [TIMEOUT][17]
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-ivb-3770/igt@i915_selftest@live_gt_timelines.html
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-ivb-3770/igt@i915_selftest@live_gt_timelines.html

  * igt@runner@aborted:
- fi-hsw-4770r:   NOTRUN -> [FAIL][18]
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-hsw-4770r/igt@run...@aborted.html
- fi-gdg-551: NOTRUN -> [FAIL][19]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-gdg-551/igt@run...@aborted.html
- fi-snb-2520m:   NOTRUN -> [FAIL][20]
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-snb-2520m/igt@run...@aborted.html
- fi-hsw-4770:NOTRUN -> [FAIL][21]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-hsw-4770/igt@run...@aborted.html
- fi-whl-u:   NOTRUN -> [FAIL][22]
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-whl-u/igt@run...@aborted.html
- fi-ivb-3770:NOTRUN -> [FAIL][23]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-ivb-3770/igt@run...@aborted.html
- fi-bxt-dsi: NOTRUN -> [FAIL][24]
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-bxt-dsi/igt@run...@aborted.html
- fi-elk-e7500:   NOTRUN -> [FAIL][25]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-elk-e7500/igt@run...@aborted.html
- fi-blb-e6850:   NOTRUN -> [FAIL][26]
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16366/fi-blb-e6850/igt@run...@aborted.html

  
 Suppressed 

  The following results come from untrusted machines, tests, or statuses.

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm: Add support for DP 1.4 Compliance edid corruption test (rev4)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm: Add support for DP 1.4 Compliance edid corruption test (rev4)
URL   : https://patchwork.freedesktop.org/series/70530/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
bd9dc1267ab5 drm: Add support for DP 1.4 Compliance edid corruption test
-:51: ERROR:CODE_INDENT: code indent should use tabs where possible
#51: FILE: drivers/gpu/drm/drm_dp_helper.c:372:
+u8 real_edid_checksum)$

-:51: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#51: FILE: drivers/gpu/drm/drm_dp_helper.c:372:
+u8 real_edid_checksum)$

total: 1 errors, 1 warnings, 0 checks, 105 lines checked

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915/display: Wake the power well during resume

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/display: Wake the power well during 
resume
URL   : https://patchwork.freedesktop.org/series/72849/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
ced9ffb2a020 drm/i915/display: Wake the power well during resume
-:10: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description 
(prefer a maximum 75 chars per line)
#10: 
<4> [135.959936] WARNING: CPU: 1 PID: 3085 at 
drivers/gpu/drm/i915/intel_uncore.c:1166 __unclaimed_reg_debug+0x69/0x80 [i915]

total: 0 errors, 1 warnings, 0 checks, 30 lines checked
c6ba1e64e9ab drm/i915: Initialise basic fence before acquiring seqno
8af8c775d115 drm/i915/gt: Warn about the hidden i915_vma_pin in 
timeline_get_seqno
edce88fb05d2 drm/i915/selftests: Add a simple rollover for the kernel context

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [CI] drm/i915/gt: Skip rmw for masked registers

2020-01-31 Thread Chris Wilson
A masked register does not need rmw to update, and it is best not to use
such a sequence.

Reported-by: Ville Syrjälä 
Signed-off-by: Chris Wilson 
Cc: Ville Syrjälä 
Cc: Tvrtko Ursulin 
Reviewed-by: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_workarounds.c   | 63 ++-
 .../gpu/drm/i915/gt/intel_workarounds_types.h |  4 +-
 drivers/gpu/drm/i915/i915_debugfs.c   |  2 +-
 3 files changed, 38 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 8d7c3191137c..857337f323ee 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -116,17 +116,17 @@ static void _wa_add(struct i915_wa_list *wal, const 
struct i915_wa *wa)
} else {
wa_ = >list[mid];
 
-   if ((wa->mask & ~wa_->mask) == 0) {
-   DRM_ERROR("Discarding overwritten w/a for reg 
%04x (mask: %08x, value: %08x)\n",
+   if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
+   DRM_ERROR("Discarding overwritten w/a for reg 
%04x (clear: %08x, set: %08x)\n",
  i915_mmio_reg_offset(wa_->reg),
- wa_->mask, wa_->val);
+ wa_->clr, wa_->set);
 
-   wa_->val &= ~wa->mask;
+   wa_->set &= ~wa->clr;
}
 
wal->wa_count++;
-   wa_->val |= wa->val;
-   wa_->mask |= wa->mask;
+   wa_->set |= wa->set;
+   wa_->clr |= wa->clr;
wa_->read |= wa->read;
return;
}
@@ -147,13 +147,13 @@ static void _wa_add(struct i915_wa_list *wal, const 
struct i915_wa *wa)
}
 }
 
-static void wa_add(struct i915_wa_list *wal, i915_reg_t reg, u32 mask,
-  u32 val, u32 read_mask)
+static void wa_add(struct i915_wa_list *wal, i915_reg_t reg,
+  u32 clear, u32 set, u32 read_mask)
 {
struct i915_wa wa = {
.reg  = reg,
-   .mask = mask,
-   .val  = val,
+   .clr  = clear,
+   .set  = set,
.read = read_mask,
};
 
@@ -161,38 +161,43 @@ static void wa_add(struct i915_wa_list *wal, i915_reg_t 
reg, u32 mask,
 }
 
 static void
-wa_write_masked_or(struct i915_wa_list *wal, i915_reg_t reg, u32 mask,
-  u32 val)
+wa_write_masked_or(struct i915_wa_list *wal, i915_reg_t reg, u32 clear, u32 
set)
 {
-   wa_add(wal, reg, mask, val, mask);
+   wa_add(wal, reg, clear, set, clear);
 }
 
 static void
-wa_masked_en(struct i915_wa_list *wal, i915_reg_t reg, u32 val)
+wa_write(struct i915_wa_list *wal, i915_reg_t reg, u32 set)
+{
+   wa_write_masked_or(wal, reg, ~0, set);
+}
+
+static void
+wa_write_or(struct i915_wa_list *wal, i915_reg_t reg, u32 set)
 {
-   wa_write_masked_or(wal, reg, val, _MASKED_BIT_ENABLE(val));
+   wa_write_masked_or(wal, reg, set, set);
 }
 
 static void
-wa_write(struct i915_wa_list *wal, i915_reg_t reg, u32 val)
+wa_masked_en(struct i915_wa_list *wal, i915_reg_t reg, u32 val)
 {
-   wa_write_masked_or(wal, reg, ~0, val);
+   wa_add(wal, reg, 0, _MASKED_BIT_ENABLE(val), val);
 }
 
 static void
-wa_write_or(struct i915_wa_list *wal, i915_reg_t reg, u32 val)
+wa_masked_dis(struct i915_wa_list *wal, i915_reg_t reg, u32 val)
 {
-   wa_write_masked_or(wal, reg, val, val);
+   wa_add(wal, reg, 0, _MASKED_BIT_DISABLE(val), val);
 }
 
 #define WA_SET_BIT_MASKED(addr, mask) \
-   wa_write_masked_or(wal, (addr), (mask), _MASKED_BIT_ENABLE(mask))
+   wa_masked_en(wal, (addr), (mask))
 
 #define WA_CLR_BIT_MASKED(addr, mask) \
-   wa_write_masked_or(wal, (addr), (mask), _MASKED_BIT_DISABLE(mask))
+   wa_masked_dis(wal, (addr), (mask))
 
 #define WA_SET_FIELD_MASKED(addr, mask, value) \
-   wa_write_masked_or(wal, (addr), (mask), _MASKED_FIELD((mask), (value)))
+   wa_write_masked_or(wal, (addr), 0, _MASKED_FIELD((mask), (value)))
 
 static void gen8_ctx_workarounds_init(struct intel_engine_cs *engine,
  struct i915_wa_list *wal)
@@ -662,7 +667,7 @@ int intel_engine_emit_ctx_wa(struct i915_request *rq)
*cs++ = MI_LOAD_REGISTER_IMM(wal->count);
for (i = 0, wa = wal->list; i < wal->count; i++, wa++) {
*cs++ = i915_mmio_reg_offset(wa->reg);
-   *cs++ = wa->val;
+   *cs++ = wa->set;
}
*cs++ = MI_NOOP;
 
@@ -991,11 +996,10 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const 
struct i915_wa_list *wal)
 static bool
 wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char 
*from)
 {
-   if ((cur ^ wa->val) & 

[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Initialise basic fence before acquiring seqno

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915: Initialise basic fence before 
acquiring seqno
URL   : https://patchwork.freedesktop.org/series/72845/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16365


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_16365 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_16365, 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_16365/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_16365:

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live_workarounds:
- fi-kbl-7500u:   [PASS][1] -> [TIMEOUT][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@i915_selftest@live_workarounds.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-kbl-7500u/igt@i915_selftest@live_workarounds.html

  
Known issues


  Here are the changes found in Patchwork_16365 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_pm_rpm@module-reload:
- fi-skl-6770hq:  [PASS][3] -> [FAIL][4] ([i915#178])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@i915_pm_...@module-reload.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-skl-6770hq/igt@i915_pm_...@module-reload.html

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][5] ([fdo#103375]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][7] ([fdo#111550]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][9] ([i915#563]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][11] ([fdo#108569]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-icl-y/igt@i915_selftest@live_execlists.html

  
 Warnings 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][13] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [TIMEOUT][14] ([fdo#112271] / [i915#816])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][15] ([i915#579]) -> [SKIP][16] ([fdo#109271])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][17] ([fdo#103375]) -> [FAIL][18] ([i915#217])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16365/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#178]: https://gitlab.freedesktop.org/drm/intel/issues/178
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (47 -> 40)

[Intel-gfx] [PATCH] drm/i915/tgl: Implement Wa_1606931601

2020-01-31 Thread Anusha Srivatsa
Disable Early Read and Src Swap (bit 14) by setting the chicken
register.

BSpec: 46045,52890

v2: Follow the Bspec implementation for the WA.
v3: Have 2 separate defines for bit 14 and 15.
- Rename register definitions with TGL_ prefix
v4: Bspec changed. Again. Add WA to rcs_ WA list.

Cc: Daniele Ceraolo Spurio 
Cc: Matt Roper 
Signed-off-by: Anusha Srivatsa 
---
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 7 +++
 drivers/gpu/drm/i915/i915_reg.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 8d7c3191137c..b0bcf8c55da0 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -593,6 +593,7 @@ static void tgl_ctx_workarounds_init(struct intel_engine_cs 
*engine,
wa_add(wal, FF_MODE2, FF_MODE2_TDS_TIMER_MASK, val,
   IS_TGL_REVID(engine->i915, TGL_REVID_A0, TGL_REVID_A0) ? 0 :
FF_MODE2_TDS_TIMER_MASK);
+
 }
 
 static void
@@ -1319,6 +1320,12 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, 
struct i915_wa_list *wal)
 {
struct drm_i915_private *i915 = engine->i915;
 
+   if (IS_TGL_REVID(i915, TGL_REVID_A0, REVID_FOREVER)) {
+   /* Wa_1606931601:tgl */
+   wa_write_or(wal,
+   GEN7_ROW_CHICKEN2,
+   GEN12_EARLY_READ_SRC0_DISABLE);
+   }
if (IS_TGL_REVID(i915, TGL_REVID_A0, TGL_REVID_A0)) {
/* Wa_1606700617:tgl */
wa_masked_en(wal,
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0bd431f6a011..c46bec8ebd17 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -9151,6 +9151,7 @@ enum {
 #define   DOP_CLOCK_GATING_DISABLE (1 << 0)
 #define   PUSH_CONSTANT_DEREF_DISABLE  (1 << 8)
 #define   GEN11_TDL_CLOCK_GATING_FIX_DISABLE   (1 << 1)
+#define   GEN12_EARLY_READ_SRC0_DISABLE(1 << 14)
 
 #define HSW_ROW_CHICKEN3   _MMIO(0xe49c)
 #define  HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE(1 << 6)
-- 
2.25.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [v3] drm/i915/tgl: Add Wa_1606054188:tgl

2020-01-31 Thread Matt Atwood
On Tiger Lake we do not support source keying in the pixel formats P010,
P012, P016.

v2: Move WA to end of function. Create helper function for format
check. Less verbose debugging messaging.

v3: whitespace

Bspec: 52890
Cc: Matt Roper 
Cc: Manasi Navare 
CC: Ville Syrjälä 
Signed-off-by: Matt Atwood 
---
 drivers/gpu/drm/i915/display/intel_sprite.c | 22 +
 1 file changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c 
b/drivers/gpu/drm/i915/display/intel_sprite.c
index 2f277d1fc6f1..71ff9849b5c0 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -2070,6 +2070,18 @@ vlv_sprite_check(struct intel_crtc_state *crtc_state,
return 0;
 }
 
+static bool intel_format_is_p01x(int format)
+{
+   switch (format) {
+   case DRM_FORMAT_P010:
+   case DRM_FORMAT_P012:
+   case DRM_FORMAT_P016:
+   return true;
+   default:
+   return false;
+   }
+}
+
 static int skl_plane_check_fb(const struct intel_crtc_state *crtc_state,
  const struct intel_plane_state *plane_state)
 {
@@ -2143,6 +2155,16 @@ static int skl_plane_check_fb(const struct 
intel_crtc_state *crtc_state,
return -EINVAL;
}
 
+   /* Wa_1606054188:tgl
+*
+* TODO: Add format RGB64i when implemented.
+*
+*/
+   if (IS_GEN(dev_priv, 12) &&
+  plane_state->ckey.flags & I915_SET_COLORKEY_SOURCE &&
+  intel_format_is_p01x(fb->format->format))
+   DRM_DEBUG_KMS("Source color keying not supported with P01x 
formats\n");
+
return 0;
 }
 
-- 
2.21.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/tgl: Add Wa_1606054188:tgl

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Add Wa_1606054188:tgl
URL   : https://patchwork.freedesktop.org/series/72839/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16364


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/index.html

Known issues


  Here are the changes found in Patchwork_16364 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_gem_contexts:
- fi-hsw-peppy:   [PASS][1] -> [DMESG-FAIL][2] ([i915#722])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html

  * igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy:   [PASS][3] -> [DMESG-WARN][4] ([i915#44])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][5] ([fdo#103375]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][7] ([fdo#111550]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][9] ([fdo#108569]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-icl-y/igt@i915_selftest@live_execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][11] ([i915#579]) -> [SKIP][12] ([fdo#109271])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][13] ([i915#563]) -> [DMESG-FAIL][14] 
([i915#553] / [i915#725])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][15] ([fdo#103375]) -> [DMESG-WARN][16] 
([IGT#4] / [i915#263])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16364/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [i915#263]: https://gitlab.freedesktop.org/drm/intel/issues/263
  [i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#722]: https://gitlab.freedesktop.org/drm/intel/issues/722
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725


Participating hosts (47 -> 38)
--

  Additional (4): fi-gdg-551 fi-cfl-8109u fi-skl-6700k2 fi-snb-2600 
  Missing(13): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-bwr-2160 fi-snb-2520m fi-kbl-7500u fi-whl-u fi-ivb-3770 fi-byt-n2820 
fi-byt-clapper fi-bdw-samus fi-kbl-r 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7853 -> Patchwork_16364

  CI-20190529: 20190529
  CI_DRM_7853: 1df04205c16923e525efe9c26d6e98612d38c9b3 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5409: 93aefe6baa3fabf8c0cabe83e185f7b8f8d8753d @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16364: 53bdc3c76702c5244ff81472ccf855a836b956b9 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

53bdc3c76702 drm/i915/tgl: Add Wa_1606054188:tgl


[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [CI,1/3] drm/i915/gt: Skip rmw for masked registers (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [CI,1/3] drm/i915/gt: Skip rmw for masked 
registers (rev2)
URL   : https://patchwork.freedesktop.org/series/72804/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16362


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/index.html

Known issues


  Here are the changes found in Patchwork_16362 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_execlists:
- fi-apl-guc: [PASS][1] -> [TIMEOUT][2] ([i915#529])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-apl-guc/igt@i915_selftest@live_execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-apl-guc/igt@i915_selftest@live_execlists.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][3] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u2:  [FAIL][5] ([fdo#103375]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-icl-u2/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-icl-u2:  [FAIL][7] ([fdo#111550]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-icl-u2/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][9] ([fdo#108569]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-icl-y/igt@i915_selftest@live_execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][11] ([i915#579]) -> [SKIP][12] ([fdo#109271])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][13] ([i915#563]) -> [DMESG-FAIL][14] 
([i915#725])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-icl-u2:  [FAIL][15] ([fdo#103375]) -> [DMESG-WARN][16] 
([IGT#4] / [i915#263])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-icl-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][17] ([fdo#111096] / [i915#323]) -> [FAIL][18] 
([fdo#111407])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16362/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#263]: https://gitlab.freedesktop.org/drm/intel/issues/263
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#529]: https://gitlab.freedesktop.org/drm/intel/issues/529
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (47 -> 41)
--

  Additional (5): fi-cfl-8109u fi-skl-6600u fi-kbl-7560u fi-skl-6700k2 
fi-snb-2600 
  Missing  

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/tgl: Add Wa_1606054188:tgl

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Add Wa_1606054188:tgl
URL   : https://patchwork.freedesktop.org/series/72839/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
53bdc3c76702 drm/i915/tgl: Add Wa_1606054188:tgl
-:31: ERROR:SWITCH_CASE_INDENT_LEVEL: switch and case should be at the same 
indent
#31: FILE: drivers/gpu/drm/i915/display/intel_sprite.c:2075:
+   switch(format){
+   case DRM_FORMAT_P010:
+   case DRM_FORMAT_P012:
+   case DRM_FORMAT_P016:
[...]
+   default:

-:31: ERROR:SPACING: space required before the open brace '{'
#31: FILE: drivers/gpu/drm/i915/display/intel_sprite.c:2075:
+   switch(format){

-:31: ERROR:SPACING: space required before the open parenthesis '('
#31: FILE: drivers/gpu/drm/i915/display/intel_sprite.c:2075:
+   switch(format){

-:53: ERROR:SPACING: space required before the open parenthesis '('
#53: FILE: drivers/gpu/drm/i915/display/intel_sprite.c:2163:
+   if(IS_GEN(dev_priv, 12) &&

total: 4 errors, 0 warnings, 0 checks, 34 lines checked

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [1/3] drm/i915: Introduce encoder->compute_config_late()

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/3] drm/i915: Introduce 
encoder->compute_config_late()
URL   : https://patchwork.freedesktop.org/series/72836/
State : failure

== Summary ==

Applying: drm/i915: Introduce encoder->compute_config_late()
Applying: drm/i915/dp: Compute port sync crtc states post compute_config()
error: sha1 information is lacking or useless 
(drivers/gpu/drm/i915/display/intel_display.c).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0002 drm/i915/dp: Compute port sync crtc states post 
compute_config()
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] ✓ Fi.CI.BAT: success for drm/i915/guc: Introduce guc_is_ready (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/guc: Introduce guc_is_ready (rev2)
URL   : https://patchwork.freedesktop.org/series/72825/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16361


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/index.html

Known issues


  Here are the changes found in Patchwork_16361 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_pm_rpm@module-reload:
- fi-skl-6770hq:  [PASS][1] -> [FAIL][2] ([i915#178])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/fi-skl-6770hq/igt@i915_pm_...@module-reload.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][3] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][5] ([fdo#108569]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/fi-icl-y/igt@i915_selftest@live_execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][7] ([i915#579]) -> [SKIP][8] ([fdo#109271])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][9] ([i915#563]) -> [DMESG-FAIL][10] 
([i915#553] / [i915#725])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][11] ([fdo#111096] / [i915#323]) -> [FAIL][12] 
([fdo#111407])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#178]: https://gitlab.freedesktop.org/drm/intel/issues/178
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (47 -> 46)
--

  Additional (5): fi-gdg-551 fi-cfl-8109u fi-skl-6600u fi-skl-6700k2 
fi-snb-2600 
  Missing(6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7853 -> Patchwork_16361

  CI-20190529: 20190529
  CI_DRM_7853: 1df04205c16923e525efe9c26d6e98612d38c9b3 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5409: 93aefe6baa3fabf8c0cabe83e185f7b8f8d8753d @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16361: 3040bb3cc8623303df5214f499c34001807caa1c @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

3040bb3cc862 drm/i915/guc: Introduce guc_is_ready

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16361/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 11/18] drm/i915: Include DP VSC SDP in the crtc state dump

2020-01-31 Thread Gwan-gyeong Mun
Dump out the DP VSC SDP in the normal crtc state dump

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_display.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 593c63f51210..7d298f14799d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -12878,6 +12878,16 @@ intel_dump_infoframe(struct drm_i915_private *dev_priv,
hdmi_infoframe_log(KERN_DEBUG, dev_priv->drm.dev, frame);
 }
 
+static void
+intel_dump_dp_vsc_sdp(struct drm_i915_private *dev_priv,
+ const struct intel_dp_vsc_sdp *vsc)
+{
+   if (!drm_debug_enabled(DRM_UT_KMS))
+   return;
+
+   intel_dp_vsc_sdp_log(KERN_DEBUG, dev_priv->drm.dev, vsc);
+}
+
 #define OUTPUT_TYPE(x) [INTEL_OUTPUT_ ## x] = #x
 
 static const char * const output_type_str[] = {
@@ -13036,6 +13046,9 @@ static void intel_dump_pipe_config(const struct 
intel_crtc_state *pipe_config,
if (pipe_config->infoframes.enable &
intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA))
intel_dump_infoframe(dev_priv, _config->infoframes.drm);
+   if (pipe_config->infoframes.enable &
+   intel_hdmi_infoframe_enable(DP_SDP_VSC))
+   intel_dump_dp_vsc_sdp(dev_priv, _config->infoframes.vsc);
 
drm_dbg_kms(_priv->drm, "requested mode:\n");
drm_mode_debug_printmodeline(_config->hw.mode);
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 13/18] drm/i915: Add state readout for DP HDR Metadata Infoframe SDP

2020-01-31 Thread Gwan-gyeong Mun
Added state readout for DP HDR Metadata Infoframe SDP.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 374ab6a3757c..a9eaf7a6bc15 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4322,6 +4322,9 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
  pipe_config->fec_enable);
}
 
+   pipe_config->infoframes.enable |=
+   intel_hdmi_infoframes_enabled(encoder, pipe_config);
+
break;
case TRANS_DDI_MODE_SELECT_DP_MST:
pipe_config->output_types |= BIT(INTEL_OUTPUT_DP_MST);
@@ -4333,6 +4336,9 @@ void intel_ddi_get_config(struct intel_encoder *encoder,

REG_FIELD_GET(TRANS_DDI_MST_TRANSPORT_SELECT_MASK, temp);
 
intel_dp_get_m_n(intel_crtc, pipe_config);
+
+   pipe_config->infoframes.enable |=
+   intel_hdmi_infoframes_enabled(encoder, pipe_config);
break;
default:
break;
@@ -4383,6 +4389,8 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
intel_read_infoframe(encoder, pipe_config,
 HDMI_INFOFRAME_TYPE_DRM,
 _config->infoframes.drm);
+
+   intel_read_dp_sdp(encoder, pipe_config, 
HDMI_PACKET_TYPE_GAMUT_METADATA);
 }
 
 static enum intel_output_type
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 17/18] drm/i915/dp: Add compute routine for DP PSR VSC SDP

2020-01-31 Thread Gwan-gyeong Mun
In order to use a common VSC SDP Colorimetry calculating code on PSR,
it adds a compute routine for PSR VSC SDP.
As PSR routine can not use infoframes.vsc of crtc state, it also adds new
writing of DP SDPs (Secondary Data Packet) for PSR.
PSR routine has its own scenario and timings of writing a VSC SDP.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 53 +
 drivers/gpu/drm/i915/display/intel_dp.h |  7 
 2 files changed, 60 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index e8cf12d14dc3..3571e959cdcc 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2463,6 +2463,42 @@ static void intel_dp_compute_vsc_sdp(struct intel_dp 
*intel_dp,
 _state->infoframes.vsc);
 }
 
+void intel_dp_compute_psr_vsc_sdp(struct intel_dp *intel_dp,
+ const struct intel_crtc_state *crtc_state,
+ const struct drm_connector_state *conn_state,
+ struct intel_dp_vsc_sdp *vsc)
+{
+   struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
+
+   vsc->sdp_type = DP_SDP_VSC;
+
+   if (dev_priv->psr.psr2_enabled) {
+   if (dev_priv->psr.colorimetry_support &&
+   intel_dp_needs_vsc_sdp(crtc_state, conn_state)) {
+   /* [PSR2, +Colorimetry] */
+   intel_dp_compute_vsc_colorimetry(crtc_state, conn_state,
+vsc);
+   } else {
+   /*
+* [PSR2, -Colorimetry]
+* Prepare VSC Header for SU as per eDP 1.4 spec, Table 
6-11
+* 3D stereo + PSR/PSR2 + Y-coordinate.
+*/
+   vsc->revision = 0x4;
+   vsc->length = 0xe;
+   }
+   } else {
+   /*
+* [PSR1]
+* Prepare VSC Header for SU as per DP 1.4 spec, Table 2-118
+* VSC SDP supporting 3D stereo + PSR (applies to eDP v1.3 or
+* higher).
+*/
+   vsc->revision = 0x2;
+   vsc->length = 0x8;
+   }
+}
+
 static void
 intel_dp_compute_hdr_metadata_infoframe_sdp(struct intel_crtc_state 
*crtc_state,
const struct drm_connector_state 
*conn_state)
@@ -4888,6 +4924,23 @@ static void intel_write_dp_sdp(struct intel_encoder 
*encoder,
intel_dig_port->write_infoframe(encoder, crtc_state, type, , len);
 }
 
+void intel_write_dp_vsc_sdp(struct intel_encoder *encoder,
+   const struct intel_crtc_state *crtc_state,
+   struct intel_dp_vsc_sdp *vsc)
+{
+   struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
+   struct dp_sdp sdp = {};
+   ssize_t len;
+
+   len = intel_dp_vsc_sdp_pack(vsc, , sizeof(sdp));
+
+   if (WARN_ON(len < 0))
+   return;
+
+   intel_dig_port->write_infoframe(encoder, crtc_state, DP_SDP_VSC,
+   , len);
+}
+
 void intel_dp_set_infoframes(struct intel_encoder *encoder,
 bool enable,
 const struct intel_crtc_state *crtc_state,
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h 
b/drivers/gpu/drm/i915/display/intel_dp.h
index 6d8003eb59f6..fb63e9a2ee78 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -112,6 +112,13 @@ int intel_dp_link_required(int pixel_clock, int bpp);
 int intel_dp_max_data_rate(int max_link_clock, int max_lanes);
 bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state);
+void intel_dp_compute_psr_vsc_sdp(struct intel_dp *intel_dp,
+ const struct intel_crtc_state *crtc_state,
+ const struct drm_connector_state *conn_state,
+ struct intel_dp_vsc_sdp *vsc);
+void intel_write_dp_vsc_sdp(struct intel_encoder *encoder,
+   const struct intel_crtc_state *crtc_state,
+   struct intel_dp_vsc_sdp *vsc);
 void intel_dp_set_infoframes(struct intel_encoder *encoder, bool enable,
 const struct intel_crtc_state *crtc_state,
 const struct drm_connector_state *conn_state);
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 12/18] drm/i915: Program DP SDPs with computed configs

2020-01-31 Thread Gwan-gyeong Mun
In order to use computed config for DP SDPs (DP VSC SDP and DP HDR Metadata
Infoframe SDP), it replaces intel_dp_vsc_enable() function and
intel_dp_hdr_metadata_enable() function to intel_dp_set_infoframes()
function.

Before applying it, routines of program SDP always calculated configs when
they called. And it removes unused functions.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_ddi.c |   3 +-
 drivers/gpu/drm/i915/display/intel_dp.c  | 226 ---
 drivers/gpu/drm/i915/display/intel_dp.h  |   6 -
 3 files changed, 1 insertion(+), 234 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index c96f629cddc3..374ab6a3757c 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3900,8 +3900,7 @@ static void intel_enable_ddi_dp(struct intel_encoder 
*encoder,
 
intel_edp_backlight_on(crtc_state, conn_state);
intel_psr_enable(intel_dp, crtc_state);
-   intel_dp_vsc_enable(intel_dp, crtc_state, conn_state);
-   intel_dp_hdr_metadata_enable(intel_dp, crtc_state, conn_state);
+   intel_dp_set_infoframes(encoder, true, crtc_state, conn_state);
intel_edp_drrs_enable(intel_dp, crtc_state);
 
if (crtc_state->has_audio)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index e33488222ac5..e8cf12d14dc3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5263,232 +5263,6 @@ void intel_dp_vsc_sdp_log(const char *level, struct 
device *dev,
 }
 #undef dp_sdp_log
 
-static void
-intel_dp_setup_vsc_sdp(struct intel_dp *intel_dp,
-  const struct intel_crtc_state *crtc_state,
-  const struct drm_connector_state *conn_state)
-{
-   struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
-   struct dp_sdp vsc_sdp = {};
-
-   /* Prepare VSC Header for SU as per DP 1.4a spec, Table 2-119 */
-   vsc_sdp.sdp_header.HB0 = 0;
-   vsc_sdp.sdp_header.HB1 = 0x7;
-
-   /*
-* VSC SDP supporting 3D stereo, PSR2, and Pixel Encoding/
-* Colorimetry Format indication.
-*/
-   vsc_sdp.sdp_header.HB2 = 0x5;
-
-   /*
-* VSC SDP supporting 3D stereo, + PSR2, + Pixel Encoding/
-* Colorimetry Format indication (HB2 = 05h).
-*/
-   vsc_sdp.sdp_header.HB3 = 0x13;
-
-   /* DP 1.4a spec, Table 2-120 */
-   switch (crtc_state->output_format) {
-   case INTEL_OUTPUT_FORMAT_YCBCR444:
-   vsc_sdp.db[16] = 0x1 << 4; /* YCbCr 444 : DB16[7:4] = 1h */
-   break;
-   case INTEL_OUTPUT_FORMAT_YCBCR420:
-   vsc_sdp.db[16] = 0x3 << 4; /* YCbCr 420 : DB16[7:4] = 3h */
-   break;
-   case INTEL_OUTPUT_FORMAT_RGB:
-   default:
-   /* RGB: DB16[7:4] = 0h */
-   break;
-   }
-
-   switch (conn_state->colorspace) {
-   case DRM_MODE_COLORIMETRY_BT709_YCC:
-   vsc_sdp.db[16] |= 0x1;
-   break;
-   case DRM_MODE_COLORIMETRY_XVYCC_601:
-   vsc_sdp.db[16] |= 0x2;
-   break;
-   case DRM_MODE_COLORIMETRY_XVYCC_709:
-   vsc_sdp.db[16] |= 0x3;
-   break;
-   case DRM_MODE_COLORIMETRY_SYCC_601:
-   vsc_sdp.db[16] |= 0x4;
-   break;
-   case DRM_MODE_COLORIMETRY_OPYCC_601:
-   vsc_sdp.db[16] |= 0x5;
-   break;
-   case DRM_MODE_COLORIMETRY_BT2020_CYCC:
-   case DRM_MODE_COLORIMETRY_BT2020_RGB:
-   vsc_sdp.db[16] |= 0x6;
-   break;
-   case DRM_MODE_COLORIMETRY_BT2020_YCC:
-   vsc_sdp.db[16] |= 0x7;
-   break;
-   case DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65:
-   case DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER:
-   vsc_sdp.db[16] |= 0x4; /* DCI-P3 (SMPTE RP 431-2) */
-   break;
-   default:
-   /* sRGB (IEC 61966-2-1) / ITU-R BT.601: DB16[0:3] = 0h */
-
-   /* RGB->YCBCR color conversion uses the BT.709 color space. */
-   if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420)
-   vsc_sdp.db[16] |= 0x1; /* 0x1, ITU-R BT.709 */
-   break;
-   }
-
-   /*
-* For pixel encoding formats YCbCr444, YCbCr422, YCbCr420, and Y Only,
-* the following Component Bit Depth values are defined:
-* 001b = 8bpc.
-* 010b = 10bpc.
-* 011b = 12bpc.
-* 100b = 16bpc.
-*/
-   switch (crtc_state->pipe_bpp) {
-   case 24: /* 8bpc */
-   vsc_sdp.db[17] = 0x1;
-   break;
-   case 30: /* 10bpc */
-   vsc_sdp.db[17] = 0x2;
-   break;
-   case 36: /* 12bpc */
-   vsc_sdp.db[17] = 0x3;
-   break;
-   case 48: /* 16bpc */
-   

[Intel-gfx] [PATCH 16/18] drm/i915: Stop sending DP SDPs on intel_ddi_post_disable_dp()

2020-01-31 Thread Gwan-gyeong Mun
Call intel_dp_set_infoframes(false) function on intel_ddi_post_disable_dp()
to make sure not to send VSC SDP and HDR Metadata Infoframe SDP.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 69073a15edb8..8509cd33569e 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3713,6 +3713,8 @@ static void intel_ddi_post_disable_dp(struct 
intel_encoder *encoder,
  INTEL_OUTPUT_DP_MST);
enum phy phy = intel_port_to_phy(dev_priv, encoder->port);
 
+   intel_dp_set_infoframes(encoder, false, old_crtc_state, old_conn_state);
+
/*
 * Power down sink before disabling the port, otherwise we end
 * up getting interrupts from the sink on detecting link loss.
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 14/18] drm/i915: Add state readout for DP VSC SDP

2020-01-31 Thread Gwan-gyeong Mun
Added state readout for DP VSC SDP and enabled state validation
for DP VSC SDP.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_ddi.c |  1 +
 drivers/gpu/drm/i915/display/intel_display.c | 43 
 2 files changed, 44 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index a9eaf7a6bc15..64e4edefa998 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4391,6 +4391,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
 _config->infoframes.drm);
 
intel_read_dp_sdp(encoder, pipe_config, 
HDMI_PACKET_TYPE_GAMUT_METADATA);
+   intel_read_dp_sdp(encoder, pipe_config, DP_SDP_VSC);
 }
 
 static enum intel_output_type
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 7d298f14799d..d13f70596a84 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13503,6 +13503,13 @@ intel_compare_infoframe(const union hdmi_infoframe *a,
return memcmp(a, b, sizeof(*a)) == 0;
 }
 
+static bool
+intel_compare_dp_vsc_sdp(const struct intel_dp_vsc_sdp *a,
+const struct intel_dp_vsc_sdp *b)
+{
+   return memcmp(a, b, sizeof(*a)) == 0;
+}
+
 static void
 pipe_config_infoframe_mismatch(struct drm_i915_private *dev_priv,
   bool fastset, const char *name,
@@ -13528,6 +13535,30 @@ pipe_config_infoframe_mismatch(struct drm_i915_private 
*dev_priv,
}
 }
 
+static void
+pipe_config_dp_vsc_sdp_mismatch(struct drm_i915_private *dev_priv,
+   bool fastset, const char *name,
+   const struct intel_dp_vsc_sdp *a,
+   const struct intel_dp_vsc_sdp *b)
+{
+   if (fastset) {
+   if (!drm_debug_enabled(DRM_UT_KMS))
+   return;
+
+   DRM_DEBUG_KMS("fastset mismatch in %s dp sdp\n", name);
+   DRM_DEBUG_KMS("expected:\n");
+   intel_dp_vsc_sdp_log(KERN_DEBUG, dev_priv->drm.dev, a);
+   DRM_DEBUG_KMS("found:\n");
+   intel_dp_vsc_sdp_log(KERN_DEBUG, dev_priv->drm.dev, b);
+   } else {
+   DRM_ERROR("mismatch in %s dp sdp\n", name);
+   DRM_ERROR("expected:\n");
+   intel_dp_vsc_sdp_log(KERN_ERR, dev_priv->drm.dev, a);
+   DRM_ERROR("found:\n");
+   intel_dp_vsc_sdp_log(KERN_ERR, dev_priv->drm.dev, b);
+   }
+}
+
 static void __printf(4, 5)
 pipe_config_mismatch(bool fastset, const struct intel_crtc *crtc,
 const char *name, const char *format, ...)
@@ -13729,6 +13760,17 @@ intel_pipe_config_compare(const struct 
intel_crtc_state *current_config,
} \
 } while (0)
 
+#define PIPE_CONF_CHECK_DP_VSC_SDP(name) do { \
+   if (!intel_compare_dp_vsc_sdp(_config->infoframes.name, \
+ _config->infoframes.name)) { \
+   pipe_config_dp_vsc_sdp_mismatch(dev_priv, fastset, 
__stringify(name), \
+   
_config->infoframes.name, \
+   _config->infoframes.name); 
\
+   ret = false; \
+   } \
+} while (0)
+
+
 #define PIPE_CONF_CHECK_COLOR_LUT(name1, name2, bit_precision) do { \
if (current_config->name1 != pipe_config->name1) { \
pipe_config_mismatch(fastset, crtc, __stringify(name1), \
@@ -13902,6 +13944,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
PIPE_CONF_CHECK_INFOFRAME(spd);
PIPE_CONF_CHECK_INFOFRAME(hdmi);
PIPE_CONF_CHECK_INFOFRAME(drm);
+   PIPE_CONF_CHECK_DP_VSC_SDP(vsc);
 
PIPE_CONF_CHECK_X(sync_mode_slaves_mask);
PIPE_CONF_CHECK_I(master_transcoder);
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 10/18] drm/i915: Include DP HDR Metadata Infoframe SDP in the crtc state dump

2020-01-31 Thread Gwan-gyeong Mun
Dump out the DP HDR Metadata Infoframe SDP in the normal crtc state dump.

HDMI Dynamic Range and Mastering (DRM) infoframe and DP HDR Metadata
Infoframe SDP use the same member variable in infoframes of crtc state.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_display.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 239861bcedba..593c63f51210 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13033,6 +13033,9 @@ static void intel_dump_pipe_config(const struct 
intel_crtc_state *pipe_config,
if (pipe_config->infoframes.enable &
intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_DRM))
intel_dump_infoframe(dev_priv, _config->infoframes.drm);
+   if (pipe_config->infoframes.enable &
+   intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA))
+   intel_dump_infoframe(dev_priv, _config->infoframes.drm);
 
drm_dbg_kms(_priv->drm, "requested mode:\n");
drm_mode_debug_printmodeline(_config->hw.mode);
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 09/18] drm/i915: Include HDMI DRM infoframe in the crtc state dump

2020-01-31 Thread Gwan-gyeong Mun
Dump out the HDMI Dynamic Range and Mastering (DRM) infoframe in the
normal crtc state dump.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_display.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index c0e5002ce64c..239861bcedba 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13030,6 +13030,9 @@ static void intel_dump_pipe_config(const struct 
intel_crtc_state *pipe_config,
if (pipe_config->infoframes.enable &
intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_VENDOR))
intel_dump_infoframe(dev_priv, _config->infoframes.hdmi);
+   if (pipe_config->infoframes.enable &
+   intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_DRM))
+   intel_dump_infoframe(dev_priv, _config->infoframes.drm);
 
drm_dbg_kms(_priv->drm, "requested mode:\n");
drm_mode_debug_printmodeline(_config->hw.mode);
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 15/18] drm/i915: Program DP SDPs on pipe updates

2020-01-31 Thread Gwan-gyeong Mun
Call intel_dp_set_infoframes() function on pipe updates to make sure
that we send VSC SDP and HDR Metadata Infoframe SDP (when applicable)
on fastsets.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 64e4edefa998..69073a15edb8 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4062,6 +4062,7 @@ static void intel_ddi_update_pipe_dp(struct intel_encoder 
*encoder,
intel_ddi_set_dp_msa(crtc_state, conn_state);
 
intel_psr_update(intel_dp, crtc_state);
+   intel_dp_set_infoframes(encoder, true, crtc_state, conn_state);
intel_edp_drrs_enable(intel_dp, crtc_state);
 
intel_panel_update_backlight(encoder, crtc_state, conn_state);
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 18/18] drm/i915/psr: Use new DP VSC SDP compute routine on PSR

2020-01-31 Thread Gwan-gyeong Mun
In order to use a common VSC SDP Colorimetry calculating code on PSR,
it uses a new psr vsc sdp compute routine.
Because PSR routine has its own scenario and timings of writing a VSC SDP,
the current PSR routine needs to have its own intel_dp_vsc_sdp structure
member variable on struct i915_psr.

In order to include "struct intel_dp_vsc_sdp" to "struct i915_psr",
it moves defintion of "struct intel_dp_vsc_sdp" to i915_drv.h .
And in order to calculate colorimetry information, intel_psr_update()
function and intel_psr_enable() function extend a drm_connector_state
argument.

There are no changes to PSR mechanism.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_ddi.c  |  4 +-
 .../drm/i915/display/intel_display_types.h| 11 
 drivers/gpu/drm/i915/display/intel_psr.c  | 54 ++-
 drivers/gpu/drm/i915/display/intel_psr.h  |  6 ++-
 drivers/gpu/drm/i915/i915_drv.h   | 12 +
 5 files changed, 33 insertions(+), 54 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 8509cd33569e..00b46c45f6a8 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3901,7 +3901,7 @@ static void intel_enable_ddi_dp(struct intel_encoder 
*encoder,
intel_dp_stop_link_train(intel_dp);
 
intel_edp_backlight_on(crtc_state, conn_state);
-   intel_psr_enable(intel_dp, crtc_state);
+   intel_psr_enable(intel_dp, crtc_state, conn_state);
intel_dp_set_infoframes(encoder, true, crtc_state, conn_state);
intel_edp_drrs_enable(intel_dp, crtc_state);
 
@@ -4063,7 +4063,7 @@ static void intel_ddi_update_pipe_dp(struct intel_encoder 
*encoder,
 
intel_ddi_set_dp_msa(crtc_state, conn_state);
 
-   intel_psr_update(intel_dp, crtc_state);
+   intel_psr_update(intel_dp, crtc_state, conn_state);
intel_dp_set_infoframes(encoder, true, crtc_state, conn_state);
intel_edp_drrs_enable(intel_dp, crtc_state);
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 81112d63342c..09438a661a97 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -780,17 +780,6 @@ enum intel_output_format {
INTEL_OUTPUT_FORMAT_YCBCR444,
 };
 
-struct intel_dp_vsc_sdp {
-   unsigned char sdp_type; /* Secondary-data Packet Type */
-   unsigned char revision; /* Revision Number */
-   unsigned char length; /* Number of Valid Data Bytes */
-   enum dp_colorspace colorspace;
-   enum dp_colorimetry colorimetry;
-   int bpc;
-   enum dp_dynamic_range dynamic_range;
-   enum dp_content_type content_type;
-};
-
 struct intel_crtc_state {
/*
 * uapi (drm) state. This is the software state shown to userspace.
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index e41ed962aa80..a4564607b6c5 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -330,39 +330,6 @@ void intel_psr_init_dpcd(struct intel_dp *intel_dp)
}
 }
 
-static void intel_psr_setup_vsc(struct intel_dp *intel_dp,
-   const struct intel_crtc_state *crtc_state)
-{
-   struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
-   struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
-   struct dp_sdp psr_vsc;
-
-   if (dev_priv->psr.psr2_enabled) {
-   /* Prepare VSC Header for SU as per EDP 1.4 spec, Table 6.11 */
-   memset(_vsc, 0, sizeof(psr_vsc));
-   psr_vsc.sdp_header.HB0 = 0;
-   psr_vsc.sdp_header.HB1 = 0x7;
-   if (dev_priv->psr.colorimetry_support) {
-   psr_vsc.sdp_header.HB2 = 0x5;
-   psr_vsc.sdp_header.HB3 = 0x13;
-   } else {
-   psr_vsc.sdp_header.HB2 = 0x4;
-   psr_vsc.sdp_header.HB3 = 0xe;
-   }
-   } else {
-   /* Prepare VSC packet as per EDP 1.3 spec, Table 3.10 */
-   memset(_vsc, 0, sizeof(psr_vsc));
-   psr_vsc.sdp_header.HB0 = 0;
-   psr_vsc.sdp_header.HB1 = 0x7;
-   psr_vsc.sdp_header.HB2 = 0x2;
-   psr_vsc.sdp_header.HB3 = 0x8;
-   }
-
-   intel_dig_port->write_infoframe(_dig_port->base,
-   crtc_state,
-   DP_SDP_VSC, _vsc, sizeof(psr_vsc));
-}
-
 static void hsw_psr_setup_aux(struct intel_dp *intel_dp)
 {
struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
@@ -841,9 +808,12 @@ static void intel_psr_enable_source(struct intel_dp 
*intel_dp,
 }
 
 static void intel_psr_enable_locked(struct drm_i915_private *dev_priv,
-   

[Intel-gfx] [PATCH 08/18] drm/i915/dp: Add logging function for DP VSC SDP

2020-01-31 Thread Gwan-gyeong Mun
When receiving video it is very useful to be able to log DP VSC SDP.
This greatly simplifies debugging.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 173 
 drivers/gpu/drm/i915/display/intel_dp.h |   4 +
 2 files changed, 177 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 6756030692c8..e33488222ac5 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5090,6 +5090,179 @@ void intel_read_dp_sdp(struct intel_encoder *encoder,
}
 }
 
+static const char *dp_colorspace_get_name(enum dp_colorspace colorspace)
+{
+   if (colorspace < 0 || colorspace > DP_COLORSPACE_RESERVED)
+   return "Invalid";
+
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "RGB";
+   case DP_COLORSPACE_YUV444:
+   return "YUV444";
+   case DP_COLORSPACE_YUV422:
+   return "YUV422";
+   case DP_COLORSPACE_YUV420:
+   return "YUV420";
+   case DP_COLORSPACE_Y_ONLY:
+   return "Y_ONLY";
+   case DP_COLORSPACE_RAW:
+   return "RAW";
+   default:
+   return "Reserved";
+   }
+}
+
+static const char *dp_colorimetry_get_name(enum dp_colorspace colorspace,
+  enum dp_colorimetry colorimetry)
+{
+   if (colorspace < 0 || colorspace > DP_COLORSPACE_RESERVED)
+   return "Invalid";
+
+   switch (colorimetry) {
+   case DP_COLORIMETRY_DEFAULT:
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "sRGB";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "BT.601";
+   case DP_COLORSPACE_Y_ONLY:
+   return "DICOM PS3.14";
+   case DP_COLORSPACE_RAW:
+   return "Custom Color Profile";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_RGB_WIDE_FIXED: /* and DP_COLORIMETRY_BT709_YCC */
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "Wide Fixed";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "BT.709";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_RGB_WIDE_FLOAT: /* and DP_COLORIMETRY_XVYCC_601 */
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "Wide Float";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "xvYCC 601";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_OPRGB: /* and DP_COLORIMETRY_XVYCC_709 */
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "OpRGB";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "xvYCC 709";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_DCI_P3_RGB: /* and DP_COLORIMETRY_SYCC_601 */
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "DCI-P3";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "sYCC 601";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_RGB_CUSTOM: /* and DP_COLORIMETRY_OPYCC_601 */
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "Custom Profile";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "OpYCC 601";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_BT2020_RGB: /* and DP_COLORIMETRY_BT2020_CYCC */
+   switch (colorspace) {
+   case DP_COLORSPACE_RGB:
+   return "BT.2020 RGB";
+   case DP_COLORSPACE_YUV444:
+   case DP_COLORSPACE_YUV422:
+   case DP_COLORSPACE_YUV420:
+   return "BT.2020 CYCC";
+   default:
+   return "Reserved";
+   }
+   case DP_COLORIMETRY_BT2020_YCC:
+   switch (colorspace) {
+   

[Intel-gfx] [PATCH 07/18] drm/i915/dp: Read out DP SDPs (Secondary Data Packet)

2020-01-31 Thread Gwan-gyeong Mun
It adds code to read the DP SDPs from the video DIP and unpack them into
the crtc state.

It adds routines that read out DP VSC SDP and DP HDR Metadata Infoframe SDP
In order to unpack DP VSC SDP, it adds intel_dp_vsc_sdp_unpack() function.
It follows DP 1.4a spec. [Table 2-116: VSC SDP Header Bytes] and
[Table 2-117: VSC SDP Payload for DB16 through DB18]

In order to unpack DP HDR Metadata Infoframe SDP, it adds
intel_dp_hdr_metadata_infoframe_sdp_unpack(). And it follows DP 1.4a spec.
([Table 2-125: INFOFRAME SDP v1.2 Header Bytes] and
[Table 2-126: INFOFRAME SDP v1.2 Payload Data Bytes - DB0 through DB31])
and CTA-861-G spec. [Table-42 Dynamic Range and Mastering InfoFrame].

A nameing rule and style of intel_read_dp_sdp() function references
intel_read_infoframe() function of intel_hdmi.c

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 170 
 drivers/gpu/drm/i915/display/intel_dp.h |   3 +
 2 files changed, 173 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 609444cbb29f..6756030692c8 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4920,6 +4920,176 @@ void intel_dp_set_infoframes(struct intel_encoder 
*encoder,
intel_write_dp_sdp(encoder, crtc_state, 
HDMI_PACKET_TYPE_GAMUT_METADATA);
 }
 
+static int intel_dp_vsc_sdp_unpack(struct intel_dp_vsc_sdp *vsc,
+  const void *buffer, size_t size)
+{
+   const struct dp_sdp *sdp = buffer;
+
+   if (size < sizeof(struct dp_sdp))
+   return -EINVAL;
+
+   memset(vsc, 0, size);
+
+   if (sdp->sdp_header.HB0 != 0 )
+   return -EINVAL;
+
+   if (sdp->sdp_header.HB1 != DP_SDP_VSC)
+   return -EINVAL;
+   vsc->sdp_type = sdp->sdp_header.HB1;
+
+   if (sdp->sdp_header.HB2 == 0x2 && sdp->sdp_header.HB3 == 0x8) {
+   vsc->revision = sdp->sdp_header.HB2;
+   vsc->length = sdp->sdp_header.HB3;
+   } else if (sdp->sdp_header.HB2 == 0x4 && sdp->sdp_header.HB3 == 0xe) {
+   vsc->revision = sdp->sdp_header.HB2;
+   vsc->length = sdp->sdp_header.HB3;
+   } else if (sdp->sdp_header.HB2 == 0x5 && sdp->sdp_header.HB3 == 0x13) {
+   vsc->revision = sdp->sdp_header.HB2;
+   vsc->length = sdp->sdp_header.HB3;
+   vsc->colorspace = (sdp->db[16] >> 4) & 0xf;
+   vsc->colorimetry = sdp->db[16] & 0xf;
+   vsc->dynamic_range = (sdp->db[17] >> 7) & 0x1;
+
+   switch (sdp->db[17] & 0x7) {
+   case 0x1:
+   vsc->bpc = 8;
+   break;
+   case 0x2:
+   vsc->bpc = 10;
+   break;
+   case 0x3:
+   vsc->bpc = 12;
+   break;
+   case 0x4:
+   vsc->bpc = 16;
+   break;
+   default:
+   MISSING_CASE(sdp->db[17] & 0x7);
+   return -EINVAL;
+   }
+
+   vsc->content_type = sdp->db[18] & 0x7;
+   } else {
+   return -EINVAL;
+   }
+
+   return 0;
+}
+
+static int
+intel_dp_hdr_metadata_infoframe_sdp_unpack(struct hdmi_drm_infoframe 
*drm_infoframe,
+  const void *buffer, size_t size)
+{
+   int ret;
+
+   const struct dp_sdp *sdp = buffer;
+   if (size < sizeof(struct dp_sdp))
+   return -EINVAL;
+
+   if (sdp->sdp_header.HB0 != 0 )
+   return -EINVAL;
+
+   if (sdp->sdp_header.HB1 != HDMI_INFOFRAME_TYPE_DRM)
+   return -EINVAL;
+
+   /*
+* Least Significant Eight Bits of (Data Byte Count – 1)
+* 1Dh (i.e., Data Byte Count = 30 bytes).
+*/
+   if (sdp->sdp_header.HB2 != 0x1D)
+   return -EINVAL;
+
+   /* Most Significant Two Bits of (Data Byte Count – 1), Clear to 00b. */
+   if ((sdp->sdp_header.HB3 & 0x3) != 0)
+   return -EINVAL;
+
+   /* INFOFRAME SDP Version Number */
+   if (((sdp->sdp_header.HB3 >> 2) & 0x3f) != 0x13)
+   return -EINVAL;
+
+   /* CTA Header Byte 2 (INFOFRAME Version Number) */
+   if (sdp->db[0] != 1)
+   return -EINVAL;
+
+   /* CTA Header Byte 3 (Length of INFOFRAME): HDMI_DRM_INFOFRAME_SIZE */
+   if (sdp->db[1] != HDMI_DRM_INFOFRAME_SIZE)
+   return -EINVAL;
+
+   ret = hdmi_drm_infoframe_unpack_only(drm_infoframe, >db[2],
+HDMI_DRM_INFOFRAME_SIZE);
+
+   return ret;
+}
+
+static void intel_read_dp_vsc_sdp(struct intel_encoder *encoder,
+ struct intel_crtc_state *crtc_state,
+ struct intel_dp_vsc_sdp *vsc)
+{
+   struct 

[Intel-gfx] [PATCH 06/18] video/hdmi: Add Unpack only function for DRM infoframe

2020-01-31 Thread Gwan-gyeong Mun
It adds an unpack only function for DRM infoframe for dynamic range and
mastering infoframe readout.
It unpacks the information data block contained in the binary buffer into
a structured frame of the HDMI Dynamic Range and Mastering (DRM)
information frame.

In contrast to hdmi_drm_infoframe_unpack() function, it does not verify
a checksum.

It can be used for unpacking a DP HDR Metadata Infoframe SDP case.
DP HDR Metadata Infoframe SDP uses the same Dynamic Range and Mastering
(DRM) information (CTA-861-G spec.) such as HDMI DRM infoframe.
But DP SDP header and payload structure are different from HDMI DRM
Infoframe. Therefore unpacking DRM infoframe for DP requires skipping of
a verifying checksum.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/video/hdmi.c | 58 +++-
 include/linux/hdmi.h |  2 ++
 2 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
index 9c82e2a0a411..9818836d82b7 100644
--- a/drivers/video/hdmi.c
+++ b/drivers/video/hdmi.c
@@ -1775,20 +1775,18 @@ hdmi_vendor_any_infoframe_unpack(union 
hdmi_vendor_any_infoframe *frame,
 }
 
 /**
- * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM infoframe
+ * hdmi_drm_infoframe_unpack_only() - unpack binary buffer to a HDMI DRM 
infoframe
  * @frame: HDMI DRM infoframe
  * @buffer: source buffer
  * @size: size of buffer
  *
- * Unpacks the information contained in binary @buffer into a structured
+ * Unpacks the information data block contained in binary @buffer into a 
structured
  * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
- * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
- * specification.
  *
  * Returns 0 on success or a negative error code on failure.
  */
-static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
-const void *buffer, size_t size)
+int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame,
+  const void *buffer, size_t size)
 {
const u8 *ptr = buffer;
const u8 *temp;
@@ -1797,23 +1795,13 @@ static int hdmi_drm_infoframe_unpack(struct 
hdmi_drm_infoframe *frame,
int ret;
int i;
 
-   if (size < HDMI_INFOFRAME_SIZE(DRM))
-   return -EINVAL;
-
-   if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
-   ptr[1] != 1 ||
-   ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
-   return -EINVAL;
-
-   if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
+   if (size < HDMI_DRM_INFOFRAME_SIZE)
return -EINVAL;
 
ret = hdmi_drm_infoframe_init(frame);
if (ret)
return ret;
 
-   ptr += HDMI_INFOFRAME_HEADER_SIZE;
-
frame->eotf = ptr[0] & 0x7;
frame->metadata_type = ptr[1] & 0x7;
 
@@ -1837,6 +1825,42 @@ static int hdmi_drm_infoframe_unpack(struct 
hdmi_drm_infoframe *frame,
 
return 0;
 }
+EXPORT_SYMBOL(hdmi_drm_infoframe_unpack_only);
+
+/**
+ * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM infoframe
+ * @frame: HDMI DRM infoframe
+ * @buffer: source buffer
+ * @size: size of buffer
+ *
+ * Unpacks the information contained in binary @buffer into a structured
+ * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
+ * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
+ * specification.
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
+const void *buffer, size_t size)
+{
+   const u8 *ptr = buffer;
+   int ret;
+
+   if (size < HDMI_INFOFRAME_SIZE(DRM))
+   return -EINVAL;
+
+   if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
+   ptr[1] != 1 ||
+   ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
+   return -EINVAL;
+
+   if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
+   return -EINVAL;
+
+   ret = hdmi_drm_infoframe_unpack_only(frame, ptr + 
HDMI_INFOFRAME_HEADER_SIZE,
+size - HDMI_INFOFRAME_HEADER_SIZE);
+   return ret;
+}
 
 /**
  * hdmi_infoframe_unpack() - unpack binary buffer to a HDMI infoframe
diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h
index 9918a6c910c5..afb43efc03e0 100644
--- a/include/linux/hdmi.h
+++ b/include/linux/hdmi.h
@@ -219,6 +219,8 @@ ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe 
*frame, void *buffer,
 ssize_t hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *frame,
 void *buffer, size_t size);
 int hdmi_drm_infoframe_check(struct hdmi_drm_infoframe *frame);
+int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame,
+  const void *buffer, size_t size);
 
 enum hdmi_spd_sdi {

[Intel-gfx] [PATCH 04/18] drm/i915/dp: Add compute routine for DP HDR Metadata Infoframe SDP

2020-01-31 Thread Gwan-gyeong Mun
It stores computed dp hdr metadata infoframe sdp to infoframes.drm of
crtc state. It referenced intel_hdmi_compute_drm_infoframe().

While computing, we'll also fill out the inforames.enable bitmask
appropriately.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 21 +
 1 file changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 705d36b548b1..64e697445085 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2463,6 +2463,26 @@ static void intel_dp_compute_vsc_sdp(struct intel_dp 
*intel_dp,
 _state->infoframes.vsc);
 }
 
+static void
+intel_dp_compute_hdr_metadata_infoframe_sdp(struct intel_crtc_state 
*crtc_state,
+   const struct drm_connector_state 
*conn_state)
+{
+   int ret;
+   struct hdmi_drm_infoframe *drm_infoframe = 
_state->infoframes.drm.drm;
+
+   if (!conn_state->hdr_output_metadata)
+   return;
+
+   ret = drm_hdmi_infoframe_set_hdr_metadata(drm_infoframe, conn_state);
+
+   if (ret) {
+   DRM_DEBUG_KMS("couldn't set HDR metadata in infoframe\n");
+   return;
+   }
+
+   crtc_state->infoframes.enable |= 
intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA);
+}
+
 int
 intel_dp_compute_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config,
@@ -2569,6 +2589,7 @@ intel_dp_compute_config(struct intel_encoder *encoder,
 
intel_psr_compute_config(intel_dp, pipe_config);
intel_dp_compute_vsc_sdp(intel_dp, pipe_config, conn_state);
+   intel_dp_compute_hdr_metadata_infoframe_sdp(pipe_config, conn_state);
 
return 0;
 }
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 03/18] drm/i915/dp: Add compute routine for DP VSC SDP

2020-01-31 Thread Gwan-gyeong Mun
It stores computed dp vsc sdp to infoframes.vsc of crtc state.
While computing we'll also fill out the inforames.enable bitmask
appropriately.

The compute routine follows DP 1.4 spec [Table 2-117: VSC SDP Payload for
DB16 through DB18].

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 92 +
 1 file changed, 92 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index f4dede6253f8..705d36b548b1 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2372,6 +2372,97 @@ static bool intel_dp_port_has_audio(struct 
drm_i915_private *dev_priv,
return true;
 }
 
+static void intel_dp_compute_vsc_colorimetry(const struct intel_crtc_state 
*crtc_state,
+const struct drm_connector_state 
*conn_state,
+struct intel_dp_vsc_sdp *vsc)
+{
+   /*
+* Prepare VSC Header for SU as per DP 1.4 spec, Table 2-118
+* VSC SDP supporting 3D stereo, PSR2, and Pixel Encoding/
+* Colorimetry Format indication.
+*/
+   vsc->revision = 0x5;
+   vsc->length = 0x13;
+
+   /* DP 1.4a spec, Table 2-120 */
+   switch (crtc_state->output_format) {
+   case INTEL_OUTPUT_FORMAT_YCBCR444:
+   vsc->colorspace = DP_COLORSPACE_YUV444;
+   break;
+   case INTEL_OUTPUT_FORMAT_YCBCR420:
+   vsc->colorspace = DP_COLORSPACE_YUV420;
+   break;
+   case INTEL_OUTPUT_FORMAT_RGB:
+   default:
+   vsc->colorspace = DP_COLORSPACE_RGB;
+   }
+
+   switch (conn_state->colorspace) {
+   case DRM_MODE_COLORIMETRY_BT709_YCC:
+   vsc->colorimetry = DP_COLORIMETRY_BT709_YCC;
+   break;
+   case DRM_MODE_COLORIMETRY_XVYCC_601:
+   vsc->colorimetry = DP_COLORIMETRY_XVYCC_601;
+   break;
+   case DRM_MODE_COLORIMETRY_XVYCC_709:
+   vsc->colorimetry = DP_COLORIMETRY_XVYCC_709;
+   break;
+   case DRM_MODE_COLORIMETRY_SYCC_601:
+   vsc->colorimetry = DP_COLORIMETRY_SYCC_601;
+   break;
+   case DRM_MODE_COLORIMETRY_OPYCC_601:
+   vsc->colorimetry = DP_COLORIMETRY_OPYCC_601;
+   break;
+   case DRM_MODE_COLORIMETRY_BT2020_CYCC:
+   vsc->colorimetry = DP_COLORIMETRY_BT2020_CYCC;
+   break;
+   case DRM_MODE_COLORIMETRY_BT2020_RGB:
+   vsc->colorimetry = DP_COLORIMETRY_BT2020_RGB;
+   break;
+   case DRM_MODE_COLORIMETRY_BT2020_YCC:
+   vsc->colorimetry = DP_COLORIMETRY_BT2020_YCC;
+   break;
+   case DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65:
+   case DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER:
+   vsc->colorimetry = DP_COLORIMETRY_DCI_P3_RGB;
+   break;
+   default:
+   /*
+* RGB->YCBCR color conversion uses the BT.709
+* color space.
+*/
+   if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420)
+   vsc->colorimetry = DP_COLORIMETRY_BT709_YCC;
+   else
+   vsc->colorimetry = DP_COLORIMETRY_DEFAULT;
+   break;
+   }
+
+   vsc->bpc = crtc_state->pipe_bpp / 3;
+   /* all YCbCr are always limited range */
+   vsc->dynamic_range = DP_DYNAMIC_RANGE_CTA;
+   vsc->content_type = DP_CONTENT_TYPE_NOT_DEFINED;
+}
+
+static void intel_dp_compute_vsc_sdp(struct intel_dp *intel_dp,
+struct intel_crtc_state *crtc_state,
+const struct drm_connector_state 
*conn_state)
+{
+   struct intel_dp_vsc_sdp *vsc = _state->infoframes.vsc;
+
+   /* When PSR is enabled, VSC SDP is handled by PSR routine */
+   if (intel_psr_enabled(intel_dp))
+   return;
+
+   if (!intel_dp_needs_vsc_sdp(crtc_state, conn_state))
+   return;
+
+   crtc_state->infoframes.enable |= 
intel_hdmi_infoframe_enable(DP_SDP_VSC);
+   vsc->sdp_type = DP_SDP_VSC;
+   intel_dp_compute_vsc_colorimetry(crtc_state, conn_state,
+_state->infoframes.vsc);
+}
+
 int
 intel_dp_compute_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config,
@@ -2477,6 +2568,7 @@ intel_dp_compute_config(struct intel_encoder *encoder,
intel_dp_set_clock(encoder, pipe_config);
 
intel_psr_compute_config(intel_dp, pipe_config);
+   intel_dp_compute_vsc_sdp(intel_dp, pipe_config, conn_state);
 
return 0;
 }
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 01/18] drm: add DP 1.4 VSC SDP Payload related enums

2020-01-31 Thread Gwan-gyeong Mun
It adds new enumeration definitions for VSC SDP Payload for Pixel
Encoding/Colorimetry Format.

enum dp_colorspace and enum dp_colorimetry correspond "Pixel Encoding and
Colorimetry Formats". enum dp_dynamic_range corresponds "Dynamic Range".
And enum dp_content_type corresponds "Content Type"
All of them are based on DP 1.4 spec [Table 2-117: VSC SDP Payload for
DB16 through DB18].

Signed-off-by: Gwan-gyeong Mun 
---
 include/drm/drm_dp_helper.h | 45 +
 1 file changed, 45 insertions(+)

diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 262faf9e5e94..86b1be958a69 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1209,6 +1209,51 @@ struct dp_sdp {
 #define EDP_VSC_PSR_UPDATE_RFB (1<<1)
 #define EDP_VSC_PSR_CRC_VALUES_VALID   (1<<2)
 
+/* Based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18] */
+enum dp_colorspace {
+   DP_COLORSPACE_RGB = 0,
+   DP_COLORSPACE_YUV444 = 0x1,
+   DP_COLORSPACE_YUV422 = 0x2,
+   DP_COLORSPACE_YUV420 = 0x3,
+   DP_COLORSPACE_Y_ONLY = 0x4,
+   DP_COLORSPACE_RAW = 0x5,
+   DP_COLORSPACE_RESERVED = 0x6,
+};
+
+/**
+ * Based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18]
+ * and a name of enum member followes DRM_MODE_COLORIMETRY definition.
+ */
+enum dp_colorimetry {
+   DP_COLORIMETRY_DEFAULT = 0, /* sRGB (IEC 61966-2-1) / ITU-R BT.601 */
+   DP_COLORIMETRY_RGB_WIDE_FIXED = 0x1,
+   DP_COLORIMETRY_BT709_YCC = 0x1,
+   DP_COLORIMETRY_RGB_WIDE_FLOAT = 0x2,
+   DP_COLORIMETRY_XVYCC_601 = 0x2,
+   DP_COLORIMETRY_OPRGB = 0x3,
+   DP_COLORIMETRY_XVYCC_709 = 0x3,
+   DP_COLORIMETRY_DCI_P3_RGB = 0x4,
+   DP_COLORIMETRY_SYCC_601 = 0x4,
+   DP_COLORIMETRY_RGB_CUSTOM = 0x5,
+   DP_COLORIMETRY_OPYCC_601 = 0x5,
+   DP_COLORIMETRY_BT2020_RGB = 0x6,
+   DP_COLORIMETRY_BT2020_CYCC = 0x6,
+   DP_COLORIMETRY_BT2020_YCC = 0x7,
+};
+
+enum dp_dynamic_range {
+   DP_DYNAMIC_RANGE_VESA = 0,
+   DP_DYNAMIC_RANGE_CTA = 1,
+};
+
+enum dp_content_type {
+   DP_CONTENT_TYPE_NOT_DEFINED = 0x00,
+   DP_CONTENT_TYPE_GRAPHICS = 0x01,
+   DP_CONTENT_TYPE_PHOTO = 0x02,
+   DP_CONTENT_TYPE_VIDEO = 0x03,
+   DP_CONTENT_TYPE_GAME = 0x04,
+};
+
 int drm_dp_psr_setup_time(const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]);
 
 static inline int
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 05/18] drm/i915/dp: Add writing of DP SDPs (Secondary Data Packet)

2020-01-31 Thread Gwan-gyeong Mun
It adds routines that write DP VSC SDP and DP HDR Metadata Infoframe SDP.
In order to pack DP VSC SDP, it adds intel_dp_vsc_sdp_pack() function.
It follows DP 1.4a spec. [Table 2-116: VSC SDP Header Bytes] and
[Table 2-117: VSC SDP Payload for DB16 through DB18]

In order to pack DP HDR Metadata Infoframe SDP, it adds
intel_dp_hdr_metadata_infoframe_sdp_pack() function.
And it follows DP 1.4a spec.
([Table 2-125: INFOFRAME SDP v1.2 Header Bytes] and
[Table 2-126: INFOFRAME SDP v1.2 Payload Data Bytes - DB0 through DB31])
and CTA-861-G spec. [Table-42 Dynamic Range and Mastering InfoFrame].

A machanism and a naming rule of intel_dp_set_infoframes() function
references intel_encoder->set_infoframes() of intel_hdmi.c .
VSC SDP is used for PSR and Pixel Encoding and Colorimetry Formats cases.
Because PSR routine has its own routine of writing a VSC SDP, when the PSR
is enabled, intel_dp_set_infoframes() does not write a VSC SDP.

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 190 
 drivers/gpu/drm/i915/display/intel_dp.h |   3 +
 2 files changed, 193 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 64e697445085..609444cbb29f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4730,6 +4730,196 @@ intel_dp_needs_vsc_sdp(const struct intel_crtc_state 
*crtc_state,
return false;
 }
 
+static ssize_t intel_dp_vsc_sdp_pack(const struct intel_dp_vsc_sdp *vsc,
+struct dp_sdp *sdp, size_t size)
+{
+   size_t length = sizeof(struct dp_sdp);
+
+   if (size < length)
+   return -ENOSPC;
+
+   memset(sdp, 0, size);
+
+   /*
+* Prepare VSC Header for SU as per DP 1.4a spec, Table 2-119
+* VSC SDP Header Bytes
+*/
+   sdp->sdp_header.HB0 = 0; /* Secondary-Data Packet ID = 0 */
+   sdp->sdp_header.HB1 = vsc->sdp_type; /* Secondary-data Packet Type */
+   sdp->sdp_header.HB2 = vsc->revision; /* Revision Number */
+   sdp->sdp_header.HB3 = vsc->length; /* Number of Valid Data Bytes */
+
+   /* VSC SDP Payload for DB16 through DB18 */
+   /* Pixel Encoding and Colorimetry Formats  */
+   sdp->db[16] = (vsc->colorspace & 0xf) << 4; /* DB16[7:4] */
+   sdp->db[16] |= vsc->colorimetry & 0xf; /* DB16[3:0] */
+
+   switch (vsc->bpc) {
+   case 8:
+   sdp->db[17] = 0x1; /* DB17[3:0] */
+   break;
+   case 10:
+   sdp->db[17] = 0x2;
+   break;
+   case 12:
+   sdp->db[17] = 0x3;
+   break;
+   case 16:
+   sdp->db[17] = 0x4;
+   break;
+   default:
+   MISSING_CASE(vsc->bpc);
+   break;
+   }
+   /* Dynamic Range and Component Bit Depth */
+   if (vsc->dynamic_range == DP_DYNAMIC_RANGE_CTA)
+   sdp->db[17] |= 0x80;  /* DB17[7] */
+
+   /* Content Type */
+   sdp->db[18] = vsc->content_type & 0x7;
+
+   return length;
+}
+
+static ssize_t
+intel_dp_hdr_metadata_infoframe_sdp_pack(const struct hdmi_drm_infoframe 
*drm_infoframe,
+struct dp_sdp *sdp,
+size_t size)
+{
+   size_t length = sizeof(struct dp_sdp);
+   const int infoframe_size = HDMI_INFOFRAME_HEADER_SIZE + 
HDMI_DRM_INFOFRAME_SIZE;
+   unsigned char buf[HDMI_INFOFRAME_HEADER_SIZE + HDMI_DRM_INFOFRAME_SIZE];
+   ssize_t len;
+
+   if (size < length)
+   return -ENOSPC;
+
+   memset(sdp, 0, size);
+
+   len = hdmi_drm_infoframe_pack_only(drm_infoframe, buf, sizeof(buf));
+   if (len < 0) {
+   DRM_DEBUG_KMS("buffer size is smaller than hdr metadata 
infoframe\n");
+   return -ENOSPC;
+   }
+
+   if (len != infoframe_size) {
+   DRM_DEBUG_KMS("wrong static hdr metadata size\n");
+   return -ENOSPC;
+   }
+
+   /*
+* Set up the infoframe sdp packet for HDR static metadata.
+* Prepare VSC Header for SU as per DP 1.4a spec,
+* Table 2-100 and Table 2-101
+*/
+
+   /* Secondary-Data Packet ID, 00h for non-Audio INFOFRAME */
+   sdp->sdp_header.HB0 = 0;
+   /*
+* Packet Type 80h + Non-audio INFOFRAME Type value
+* HDMI_INFOFRAME_TYPE_DRM: 0x87
+* - 80h + Non-audio INFOFRAME Type value
+* - InfoFrame Type: 0x07
+*[CTA-861-G Table-42 Dynamic Range and Mastering InfoFrame]
+*/
+   sdp->sdp_header.HB1 = drm_infoframe->type;
+   /*
+* Least Significant Eight Bits of (Data Byte Count – 1)
+* infoframe_size - 1
+*/
+   sdp->sdp_header.HB2 = 0x1D;
+   /* INFOFRAME SDP Version Number */
+   sdp->sdp_header.HB3 = (0x13 << 2);
+   /* CTA Header Byte 2 (INFOFRAME Version Number) */
+   

[Intel-gfx] [PATCH 00/18] In order to readout DP SDPs, refactors the handling of DP SDPs

2020-01-31 Thread Gwan-gyeong Mun
In order to readout DP SDPs (Secondary Data Packet: DP HDR Metadata
Infoframe SDP, DP VSC SDP), it refactors handling DP SDPs codes.
It adds new compute routines for DP HDR Metadata Infoframe SDP
and DP VSC SDP. 
And new writing routines of DP SDPs (Secondary Data Packet) that uses
computed configs.
New reading routines of DP SDPs are added for readout.
It adds a logging function for DP VSC SDP.
When receiving video it is very useful to be able to log DP VSC SDP.
This greatly simplifies debugging.
In order to use a common VSC SDP Colorimetry calculating code on PSR,
it uses a new psr vsc sdp compute routine.

Gwan-gyeong Mun (18):
  drm: add DP 1.4 VSC SDP Payload related enums
  drm/i915: Add DP VSC SDP payload data to intel_crtc_state.infoframes
  drm/i915/dp: Add compute routine for DP VSC SDP
  drm/i915/dp: Add compute routine for DP HDR Metadata Infoframe SDP
  drm/i915/dp: Add writing of DP SDPs (Secondary Data Packet)
  video/hdmi: Add Unpack only function for DRM infoframe
  drm/i915/dp: Read out DP SDPs (Secondary Data Packet)
  drm/i915/dp: Add logging function for DP VSC SDP
  drm/i915: Include HDMI DRM infoframe in the crtc state dump
  drm/i915: Include DP HDR Metadata Infoframe SDP in the crtc state dump
  drm/i915: Include DP VSC SDP in the crtc state dump
  drm/i915: Program DP SDPs with computed configs
  drm/i915: Add state readout for DP HDR Metadata Infoframe SDP
  drm/i915: Add state readout for DP VSC SDP
  drm/i915: Program DP SDPs on pipe updates
  drm/i915: Stop sending DP SDPs on intel_ddi_post_disable_dp()
  drm/i915/dp: Add compute routine for DP PSR VSC SDP
  drm/i915/psr: Use new DP VSC SDP compute routine on PSR

 drivers/gpu/drm/i915/display/intel_ddi.c  |  19 +-
 drivers/gpu/drm/i915/display/intel_display.c  |  62 ++
 .../drm/i915/display/intel_display_types.h|   1 +
 drivers/gpu/drm/i915/display/intel_dp.c   | 775 ++
 drivers/gpu/drm/i915/display/intel_dp.h   |  21 +-
 drivers/gpu/drm/i915/display/intel_psr.c  |  54 +-
 drivers/gpu/drm/i915/display/intel_psr.h  |   6 +-
 drivers/gpu/drm/i915/i915_drv.h   |  12 +
 drivers/video/hdmi.c  |  58 +-
 include/drm/drm_dp_helper.h   |  45 +
 include/linux/hdmi.h  |   2 +
 11 files changed, 837 insertions(+), 218 deletions(-)

-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 02/18] drm/i915: Add DP VSC SDP payload data to intel_crtc_state.infoframes

2020-01-31 Thread Gwan-gyeong Mun
In order to support state readout for DP VSC SDP, we need to have a
structure which holds DP VSC SDP payload data such as
"union hdmi_infoframe drm" which is used for DRM infoframe.

And In order to support DP HDR10, we have to support VSC SDP and
HDR Metadata Infoframe SDP. As we will use drm member variable of
intel_crtc_state.infoframes, we only need to add vsc sdp member variable
to intel_crtc_state.infoframes.

Because DP SDP payload type does not have common structure like as
"union hdmi_infoframe", it adds "struct intel_dp_vsc_sdp"
to intel_display_types.h

Signed-off-by: Gwan-gyeong Mun 
---
 drivers/gpu/drm/i915/display/intel_display_types.h | 12 
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 33ba93863488..81112d63342c 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -780,6 +780,17 @@ enum intel_output_format {
INTEL_OUTPUT_FORMAT_YCBCR444,
 };
 
+struct intel_dp_vsc_sdp {
+   unsigned char sdp_type; /* Secondary-data Packet Type */
+   unsigned char revision; /* Revision Number */
+   unsigned char length; /* Number of Valid Data Bytes */
+   enum dp_colorspace colorspace;
+   enum dp_colorimetry colorimetry;
+   int bpc;
+   enum dp_dynamic_range dynamic_range;
+   enum dp_content_type content_type;
+};
+
 struct intel_crtc_state {
/*
 * uapi (drm) state. This is the software state shown to userspace.
@@ -1021,6 +1032,7 @@ struct intel_crtc_state {
union hdmi_infoframe spd;
union hdmi_infoframe hdmi;
union hdmi_infoframe drm;
+   struct intel_dp_vsc_sdp vsc;
} infoframes;
 
/* HDMI scrambling status */
-- 
2.24.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 1/2] drm/i915/tracepoints: Don't compile-out low-level tracepoints

2020-01-31 Thread Egor Suldin
Hi!
I use GPUVis and now Intel Vtune Profiler. These tools don't work
out-of-the-box on all Linux based systems for Intel integrated graphics.
It is needed to rebuild at least i915 module. And each time when the kernel
is updated it is needed to rebuild i915 module again.

> No numbers from (micro-)bechmarks showing how small the impact of doing
> this is? I thought John was compiling this data. It will be just a no-op
> on the fast path, but a bit more generated code.
Have you collected the results? If not, I've done it for you:
Benchmark for Metro 2033 Last Light Redux:
w/o events:
1st run aver. fps: 36.06
2nd run aver. fps: 35.87
w events:
1st run aver. fps: 36.05
2nd run aver. fps: 35.92

There is no difference. It was run on Intel Core i9-9900K CPU @ 3.60GHz on
integrated graphics.

> Assuming that will be fine, the only potentially problematic aspect that
> comes to mind is the fact meaning of these tracepoints is a bit
> different between execlists and guc. But maybe that is thinking to low
> level (!) - in fact they are in both cases at points where i915 is
>passing/receiving requests to/from hardware so not an issue?
In my view, it is not an issue. The real issue now that you cannot collect
performance results for Intel GPU
on Linux systems without rebuilding the i915 module. You cannot debug
performance problems
on the system even if you use tools from Intel. Do you have ETA for
accepting this patch?

Thanks,
Egor
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH V5] drm: Add support for DP 1.4 Compliance edid corruption test

2020-01-31 Thread Harry Wentland
On 2020-01-31 3:24 p.m., Jerry (Fangzhi) Zuo wrote:
> Unlike DP 1.2 edid corruption test, DP 1.4 requires to calculate
> real CRC value of the last edid data block, and write it back.
> Current edid CRC calculates routine adds the last CRC byte,
> and check if non-zero.
> 
> This behavior is not accurate; actually, we need to return
> the actual CRC value when corruption is detected.
> This commit changes this issue by returning the calculated CRC,
> and initiate the required sequence.
> 
> Change since v5
> - Obtain real CRC value before dumping bad edid
> 
> Change since v4
> - Fix for CI.CHECKPATCH
> 
> Change since v3
> - Fix a minor typo.
> 
> Change since v2
> - Rewrite checksum computation routine to avoid duplicated code.
> - Rename to avoid confusion.
> 
> Change since v1
> - Have separate routine for returning real CRC.
> 
> Signed-off-by: Jerry (Fangzhi) Zuo 

Reviewed-by: Harry Wentland 

Harry

> ---
>  drivers/gpu/drm/drm_dp_helper.c | 35 +
>  drivers/gpu/drm/drm_edid.c  | 23 ++
>  include/drm/drm_connector.h |  6 ++
>  include/drm/drm_dp_helper.h |  3 +++
>  4 files changed, 63 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> index f629fc5494a4..18b285fa1a42 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -351,6 +351,41 @@ int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux,
>  }
>  EXPORT_SYMBOL(drm_dp_dpcd_read_link_status);
>  
> +/**
> + * drm_dp_send_real_edid_checksum() - send back real edid checksum value
> + * @aux: DisplayPort AUX channel
> + * @real_edid_checksum: real edid checksum for the last block
> + *
> + * Returns true on success
> + */
> +bool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux,
> +u8 real_edid_checksum)
> +{
> + u8 link_edid_read = 0, auto_test_req = 0, test_resp = 0;
> +
> + drm_dp_dpcd_read(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, _test_req, 1);
> + auto_test_req &= DP_AUTOMATED_TEST_REQUEST;
> +
> + drm_dp_dpcd_read(aux, DP_TEST_REQUEST, _edid_read, 1);
> + link_edid_read &= DP_TEST_LINK_EDID_READ;
> +
> + if (!auto_test_req || !link_edid_read) {
> + DRM_DEBUG_KMS("Source DUT does not support TEST_EDID_READ\n");
> + return false;
> + }
> +
> + drm_dp_dpcd_write(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, _test_req, 1);
> +
> + /* send back checksum for the last edid extension block data */
> + drm_dp_dpcd_write(aux, DP_TEST_EDID_CHECKSUM, _edid_checksum, 1);
> +
> + test_resp |= DP_TEST_EDID_CHECKSUM_WRITE;
> + drm_dp_dpcd_write(aux, DP_TEST_RESPONSE, _resp, 1);
> +
> + return true;
> +}
> +EXPORT_SYMBOL(drm_dp_send_real_edid_checksum);
> +
>  /**
>   * drm_dp_downstream_max_clock() - extract branch device max
>   * pixel rate for legacy VGA
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 99769d6c9f84..f064e75fb4c5 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -1590,11 +1590,22 @@ static int validate_displayid(u8 *displayid, int 
> length, int idx);
>  static int drm_edid_block_checksum(const u8 *raw_edid)
>  {
>   int i;
> - u8 csum = 0;
> - for (i = 0; i < EDID_LENGTH; i++)
> + u8 csum = 0, crc = 0;
> +
> + for (i = 0; i < EDID_LENGTH - 1; i++)
>   csum += raw_edid[i];
>  
> - return csum;
> + crc = 0x100 - csum;
> +
> + return crc;
> +}
> +
> +static bool drm_edid_block_checksum_diff(const u8 *raw_edid, u8 
> real_checksum)
> +{
> + if (raw_edid[EDID_LENGTH - 1] != real_checksum)
> + return true;
> + else
> + return false;
>  }
>  
>  static bool drm_edid_is_zero(const u8 *in_edid, int length)
> @@ -1652,7 +1663,7 @@ bool drm_edid_block_valid(u8 *raw_edid, int block, bool 
> print_bad_edid,
>   }
>  
>   csum = drm_edid_block_checksum(raw_edid);
> - if (csum) {
> + if (drm_edid_block_checksum_diff(raw_edid, csum)) {
>   if (edid_corrupt)
>   *edid_corrupt = true;
>  
> @@ -1793,6 +1804,10 @@ static void connector_bad_edid(struct drm_connector 
> *connector,
>  u8 *edid, int num_blocks)
>  {
>   int i;
> + u8 num_of_ext = edid[0x7e];
> +
> + /* Calculate real checksum for the last edid extension block data */
> + connector->real_edid_checksum = drm_edid_block_checksum(edid + 
> num_of_ext * EDID_LENGTH);
>  
>   if (connector->bad_edid_counter++ && !drm_debug_enabled(DRM_UT_KMS))
>   return;
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index 2113500b4075..b3815371c271 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -1357,6 +1357,12 @@ struct drm_connector {
>* rev1.1 4.2.2.6
>*/
>   bool edid_corrupt;
> + 

Re: [Intel-gfx] [PATCH 1/2] drm/i915/tracepoints: Don't compile-out low-level tracepoints

2020-01-31 Thread Egor Suldin

Hi!
I use GPUVis and now Intel Vtune Profiler. These tools don't work 
out-of-the-box on all Linux based systems for Intel integrated graphics.
It is needed to rebuild at least i915 module. And each time when the 
kernel is updated it is needed to rebuild i915 module again.


> No numbers from (micro-)bechmarks showing how small the impact of doing
> this is? I thought John was compiling this data. It will be just a no-op
> on the fast path, but a bit more generated code.
Have you collected the results? If not, I've done it for you:
Benchmark for Metro 2033 Last Light Redux:
w/o events:
1st run aver. fps: 36.06
2nd run aver. fps: 35.87
w events:
1st run aver. fps: 36.05
2nd run aver. fps: 35.92

There is no difference. It was run on Intel Core i9-9900K CPU @ 3.60GHz 
on integrated graphics.


> Assuming that will be fine, the only potentially problematic aspect that
> comes to mind is the fact meaning of these tracepoints is a bit
> different between execlists and guc. But maybe that is thinking to low
> level (!) - in fact they are in both cases at points where i915 is
>passing/receiving requests to/from hardware so not an issue?
In my view, it is not an issue. The real issue now that you cannot 
collect performance results for Intel GPU
on Linux systems without rebuilding the i915 module. You cannot debug 
performance problems
on the system even if you use tools from Intel. Do you have ETA to 
accept this patch?


Thanks,
Egor
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH V5] drm: Add support for DP 1.4 Compliance edid corruption test

2020-01-31 Thread Jerry (Fangzhi) Zuo
Unlike DP 1.2 edid corruption test, DP 1.4 requires to calculate
real CRC value of the last edid data block, and write it back.
Current edid CRC calculates routine adds the last CRC byte,
and check if non-zero.

This behavior is not accurate; actually, we need to return
the actual CRC value when corruption is detected.
This commit changes this issue by returning the calculated CRC,
and initiate the required sequence.

Change since v5
- Obtain real CRC value before dumping bad edid

Change since v4
- Fix for CI.CHECKPATCH

Change since v3
- Fix a minor typo.

Change since v2
- Rewrite checksum computation routine to avoid duplicated code.
- Rename to avoid confusion.

Change since v1
- Have separate routine for returning real CRC.

Signed-off-by: Jerry (Fangzhi) Zuo 
---
 drivers/gpu/drm/drm_dp_helper.c | 35 +
 drivers/gpu/drm/drm_edid.c  | 23 ++
 include/drm/drm_connector.h |  6 ++
 include/drm/drm_dp_helper.h |  3 +++
 4 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index f629fc5494a4..18b285fa1a42 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -351,6 +351,41 @@ int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux,
 }
 EXPORT_SYMBOL(drm_dp_dpcd_read_link_status);
 
+/**
+ * drm_dp_send_real_edid_checksum() - send back real edid checksum value
+ * @aux: DisplayPort AUX channel
+ * @real_edid_checksum: real edid checksum for the last block
+ *
+ * Returns true on success
+ */
+bool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux,
+u8 real_edid_checksum)
+{
+   u8 link_edid_read = 0, auto_test_req = 0, test_resp = 0;
+
+   drm_dp_dpcd_read(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, _test_req, 1);
+   auto_test_req &= DP_AUTOMATED_TEST_REQUEST;
+
+   drm_dp_dpcd_read(aux, DP_TEST_REQUEST, _edid_read, 1);
+   link_edid_read &= DP_TEST_LINK_EDID_READ;
+
+   if (!auto_test_req || !link_edid_read) {
+   DRM_DEBUG_KMS("Source DUT does not support TEST_EDID_READ\n");
+   return false;
+   }
+
+   drm_dp_dpcd_write(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, _test_req, 1);
+
+   /* send back checksum for the last edid extension block data */
+   drm_dp_dpcd_write(aux, DP_TEST_EDID_CHECKSUM, _edid_checksum, 1);
+
+   test_resp |= DP_TEST_EDID_CHECKSUM_WRITE;
+   drm_dp_dpcd_write(aux, DP_TEST_RESPONSE, _resp, 1);
+
+   return true;
+}
+EXPORT_SYMBOL(drm_dp_send_real_edid_checksum);
+
 /**
  * drm_dp_downstream_max_clock() - extract branch device max
  * pixel rate for legacy VGA
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 99769d6c9f84..f064e75fb4c5 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1590,11 +1590,22 @@ static int validate_displayid(u8 *displayid, int 
length, int idx);
 static int drm_edid_block_checksum(const u8 *raw_edid)
 {
int i;
-   u8 csum = 0;
-   for (i = 0; i < EDID_LENGTH; i++)
+   u8 csum = 0, crc = 0;
+
+   for (i = 0; i < EDID_LENGTH - 1; i++)
csum += raw_edid[i];
 
-   return csum;
+   crc = 0x100 - csum;
+
+   return crc;
+}
+
+static bool drm_edid_block_checksum_diff(const u8 *raw_edid, u8 real_checksum)
+{
+   if (raw_edid[EDID_LENGTH - 1] != real_checksum)
+   return true;
+   else
+   return false;
 }
 
 static bool drm_edid_is_zero(const u8 *in_edid, int length)
@@ -1652,7 +1663,7 @@ bool drm_edid_block_valid(u8 *raw_edid, int block, bool 
print_bad_edid,
}
 
csum = drm_edid_block_checksum(raw_edid);
-   if (csum) {
+   if (drm_edid_block_checksum_diff(raw_edid, csum)) {
if (edid_corrupt)
*edid_corrupt = true;
 
@@ -1793,6 +1804,10 @@ static void connector_bad_edid(struct drm_connector 
*connector,
   u8 *edid, int num_blocks)
 {
int i;
+   u8 num_of_ext = edid[0x7e];
+
+   /* Calculate real checksum for the last edid extension block data */
+   connector->real_edid_checksum = drm_edid_block_checksum(edid + 
num_of_ext * EDID_LENGTH);
 
if (connector->bad_edid_counter++ && !drm_debug_enabled(DRM_UT_KMS))
return;
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 2113500b4075..b3815371c271 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1357,6 +1357,12 @@ struct drm_connector {
 * rev1.1 4.2.2.6
 */
bool edid_corrupt;
+   /**
+* @real_edid_checksum: real edid checksum for corrupted edid block.
+* Required in Displayport 1.4 compliance testing
+* rev1.1 4.2.2.6
+*/
+   u8 real_edid_checksum;
 
/** @debugfs_entry: debugfs directory for this connector */

Re: [Intel-gfx] [PATCH 1/2] drm/i915/tracepoints: Don't compile-out low-level tracepoints

2020-01-31 Thread ##### #####
Hi!I use GPUVis and now Intel Vtune Profiler. These tools don't work out-of-the-box on all Linux based systems for Intel integrated graphics.It is needed to rebuild at least i915 module. And each time when the kernel is updated it is needed to rebuild i915 module again. > No numbers from (micro-)bechmarks showing how small the impact of doing> this is? I thought John was compiling this data. It will be just a no-op> on the fast path, but a bit more generated code.Have you collected the results? If not, I've done it for you:Benchmark for Metro 2033 Last Light Redux:w/o events:1st run aver. fps: 36.062nd run aver. fps: 35.87w events:1st run aver. fps: 36.052nd run aver. fps: 35.92 There is no difference. It was run on Intel Core i9-9900K CPU @ 3.60GHz on integrated graphics. > Assuming that will be fine, the only potentially problematic aspect that> comes to mind is the fact meaning of these tracepoints is a bit> different between execlists and guc. But maybe that is thinking to low> level (!) - in fact they are in both cases at points where i915 is>passing/receiving requests to/from hardware so not an issue?In my view, it is not an issue. The real issue now that you cannot collect performance results for Intel GPUon Linux systems without rebuilding the i915 module. You cannot debug performance problemson the system even if you use tools from Intel. Do you have ETA to accept this patch? Thanks,Egor___
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/tracepoints: Don't compile-out low-level tracepoints

2020-01-31 Thread Egor Suldin
 Hi!
I use GPUVis and now Intel Vtune Profiler. These tools don't work
out-of-the-box on all Linux based systems for Intel integrated graphics.
It is needed to rebuild at least i915 module. And each time when the kernel
is updated it is needed to rebuild i915 module again.

> No numbers from (micro-)bechmarks showing how small the impact of doing
> this is? I thought John was compiling this data. It will be just a no-op
> on the fast path, but a bit more generated code.
Have you collected the results? If not, I've done it for you:
Benchmark for Metro 2033 Last Light Redux:
w/o events:
1st run aver. fps: 36.06
2nd run aver. fps: 35.87
w events:
1st run aver. fps: 36.05
2nd run aver. fps: 35.92

There is no difference. It was run on Intel Core i9-9900K CPU @ 3.60GHz on
integrated graphics.

> Assuming that will be fine, the only potentially problematic aspect that
> comes to mind is the fact meaning of these tracepoints is a bit
> different between execlists and guc. But maybe that is thinking to low
> level (!) - in fact they are in both cases at points where i915 is
>passing/receiving requests to/from hardware so not an issue?
In my view, it is not an issue. The real issue now that you cannot collect
performance results for Intel GPU
on Linux systems without rebuilding the i915 module. You cannot debug
performance problems
on the system even if you use tools from Intel. Do you have ETA to accept
this patch?

Thanks,
Egor
___
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/tracepoints: Don't compile-out low-level tracepoints

2020-01-31 Thread Egor Suldin

Hi!
I use GPUVis and now Intel Vtune Profiler. These tools don't work 
out-of-the-box on all Linux based systems for Intel integrated graphics.
It is needed to rebuild at least i915 module. And each time when the 
kernel is updated it is needed to rebuild i915 module again.


> No numbers from (micro-)bechmarks showing how small the impact of doing
> this is? I thought John was compiling this data. It will be just a no-op
> on the fast path, but a bit more generated code.
Have you collected the results? If not, I've done it for you:
Benchmark for Metro 2033 Last Light Redux:
w/o events:
1st run aver. fps: 36.06
2nd run aver. fps: 35.87
w events:
1st run aver. fps: 36.05
2nd run aver. fps: 35.92

There is no difference. It was run on Intel Core i9-9900K CPU @ 3.60GHz 
on integrated graphics.


> Assuming that will be fine, the only potentially problematic aspect that
> comes to mind is the fact meaning of these tracepoints is a bit
> different between execlists and guc. But maybe that is thinking to low
> level (!) - in fact they are in both cases at points where i915 is
>passing/receiving requests to/from hardware so not an issue?
In my view, it is not an issue. The real issue now that you cannot 
collect performance results for Intel GPU
on Linux systems without rebuilding the i915 module. You cannot debug 
performance problems
on the system even if you use tools from Intel. Do you have ETA to 
accept this patch?


Thanks,
Egor
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/perf: Fix OA context id overlap with idle context id

2020-01-31 Thread Umesh Nerlige Ramappa

On Fri, Jan 31, 2020 at 01:00:54PM +0200, Lionel Landwerlin wrote:

On 31/01/2020 01:54, Umesh Nerlige Ramappa wrote:

On Mon, Jan 27, 2020 at 11:16:32AM +0200, Lionel Landwerlin wrote:

[snip]


--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1323,7 +1323,12 @@ static int 
oa_get_render_ctx_id(struct i915_perf_stream *stream)

 case 12: {
 stream->specific_ctx_id_mask =
 ((1U << GEN11_SW_CTX_ID_WIDTH) - 1) << 
(GEN11_SW_CTX_ID_SHIFT - 32);

-    stream->specific_ctx_id = stream->specific_ctx_id_mask;
+    /* Pick an unused context id
+ * 0 - (NUM_CONTEXT_TAG - 1) are used by other contexts
+ * GEN12_MAX_CONTEXT_HW_ID (0x7ff) is used by idle context
+ */
+    stream->specific_ctx_id = (GEN12_MAX_CONTEXT_HW_ID 
- 1) << (GEN11_SW_CTX_ID_SHIFT - 32);
+    BUILD_BUG_ON((GEN12_MAX_CONTEXT_HW_ID - 1) < 
NUM_CONTEXT_TAG);



Arg yeah, we can't use an id that has all bits to 1 because 
that matches the idle value in the OA reports :/


This also affects gen8-10 cases (afaik).


For gen8-10, I did not see a specific definition for an idle 
context id.  The from/to idle context switches are indicated by 
dedicated bits in the CSB instead (from spec).



I meant that I remember the periodic OA reports when HW is idle to 
have the contex_id=0x.


For these gens we use 0x1f as the context id. Before we return 
reports to the user, we are setting context id to 0x for 
invalid and irrelevant contexts.


Thanks,
Umesh



Sorry, I've been a bit out of the loop on OA reports lately.

I just noticed that the context valid bit is not checked on gen12 anymore.

The documentation is really horrible, but BSpec 52198 seems to 
indicate the bit is still around.


I am looking at the first table describing the report ID in 52198 which 
has TGL next to it. I don't see a definition for this bit.


I will try to ask around to see if that's not the case.



Could it be the source of the issue?

You mean - seeing 0x during idle in periodic reports?

Thanks,
Umesh




Thanks for your help :)


-Lionel




I could remember wrong :/


-Lionel




Thanks,
Umesh




Thanks for spotting this!


-Lionel



 break;
 }
@@ -1331,7 +1336,7 @@ static int oa_get_render_ctx_id(struct 
i915_perf_stream *stream)

 MISSING_CASE(INTEL_GEN(ce->engine->i915));
 }
-    ce->tag = stream->specific_ctx_id_mask;
+    ce->tag = stream->specific_ctx_id;
 DRM_DEBUG_DRIVER("filtering on ctx_id=0x%x ctx_id_mask=0x%x\n",
  stream->specific_ctx_id,








___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 3/3] drm/i915/dp: Add all tiled and port sync conns to modeset

2020-01-31 Thread Manasi Navare
On Fri, Jan 31, 2020 at 10:05:03PM +0200, Ville Syrjälä wrote:
> On Fri, Jan 31, 2020 at 11:46:25AM -0800, Manasi Navare wrote:
> > On Fri, Jan 31, 2020 at 07:53:23PM +0200, Ville Syrjälä wrote:
> > > On Fri, Jan 31, 2020 at 09:15:47AM -0800, Manasi Navare wrote:
> > > > If one of the synced crtcs needs a full modeset, we need
> > > > to make sure all the synced crtcs are forced a full
> > > > modeset.
> > > > 
> > > > Suggested-by: Ville Syrjälä 
> > > > Cc: Ville Syrjälä 
> > > > Signed-off-by: Manasi Navare 
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_display.c |  88 +
> > > >  drivers/gpu/drm/i915/display/intel_dp.c  | 131 ++-
> > > >  2 files changed, 131 insertions(+), 88 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> > > > b/drivers/gpu/drm/i915/display/intel_display.c
> > > > index e638543f5f87..709a737638b6 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > > @@ -13123,8 +13123,7 @@ intel_modeset_pipe_config(struct 
> > > > intel_crtc_state *pipe_config)
> > > > struct drm_i915_private *i915 = 
> > > > to_i915(pipe_config->uapi.crtc->dev);
> > > > struct drm_connector *connector;
> > > > struct drm_connector_state *connector_state;
> > > > -   int base_bpp, ret;
> > > > -   int i, tile_group_id = -1, num_tiled_conns = 0;
> > > > +   int base_bpp, ret, i;
> > > > bool retry = true;
> > > >  
> > > > pipe_config->cpu_transcoder =
> > > > @@ -14559,76 +14558,6 @@ static bool 
> > > > intel_cpu_transcoders_need_modeset(struct intel_atomic_state *state,
> > > > return false;
> > > >  }
> > > >  
> > > > -static int
> > > > -intel_modeset_all_tiles(struct intel_atomic_state *state, int 
> > > > tile_grp_id)
> > > > -{
> > > > -   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > > > -   struct drm_connector *connector;
> > > > -   struct drm_connector_list_iter conn_iter;
> > > > -   int ret = 0;
> > > > -
> > > > -   drm_connector_list_iter_begin(_priv->drm, _iter);
> > > > -   drm_for_each_connector_iter(connector, _iter) {
> > > > -   struct drm_connector_state *conn_state;
> > > > -   struct drm_crtc_state *crtc_state;
> > > > -
> > > > -   if (!connector->has_tile ||
> > > > -   connector->tile_group->id != tile_grp_id)
> > > > -   continue;
> > > > -   conn_state = 
> > > > drm_atomic_get_connector_state(>base,
> > > > -   connector);
> > > > -   if (IS_ERR(conn_state)) {
> > > > -   ret =  PTR_ERR(conn_state);
> > > > -   break;
> > > > -   }
> > > > -
> > > > -   if (!conn_state->crtc)
> > > > -   continue;
> > > > -
> > > > -   crtc_state = drm_atomic_get_crtc_state(>base,
> > > > -  
> > > > conn_state->crtc);
> > > > -   if (IS_ERR(crtc_state)) {
> > > > -   ret = PTR_ERR(crtc_state);
> > > > -   break;
> > > > -   }
> > > > -   crtc_state->mode_changed = true;
> > > > -   ret = drm_atomic_add_affected_connectors(>base,
> > > > -
> > > > conn_state->crtc);
> > > > -   if (ret)
> > > > -   break;
> > > > -   }
> > > > -   drm_connector_list_iter_end(_iter);
> > > > -
> > > > -   return ret;
> > > > -}
> > > > -
> > > > -static int
> > > > -intel_atomic_check_tiled_conns(struct intel_atomic_state *state)
> > > > -{
> > > > -   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > > > -   struct drm_connector *connector;
> > > > -   struct drm_connector_state *old_conn_state, *new_conn_state;
> > > > -   int i, ret;
> > > > -
> > > > -   if (INTEL_GEN(dev_priv) < 11)
> > > > -   return 0;
> > > > -
> > > > -   /* Is tiled, mark all other tiled CRTCs as needing a modeset */
> > > > -   for_each_oldnew_connector_in_state(>base, connector,
> > > > -  old_conn_state, 
> > > > new_conn_state, i) {
> > > > -   if (!connector->has_tile)
> > > > -   continue;
> > > > -   if (!intel_connector_needs_modeset(state, connector))
> > > > -   continue;
> > > > -
> > > > -   ret = intel_modeset_all_tiles(state, 
> > > > connector->tile_group->id);
> > > > -   if (ret)
> > > > -   return ret;
> > > > -   }
> > > > -
> > > > -   return 0;
> > > > -}
> > > > -
> > > >  /**
> > > >   * intel_atomic_check - validate state object
> > > >   * @dev: drm device
> > > > @@ 

[Intel-gfx] [PATCH 2/4] drm/i915: Initialise basic fence before acquiring seqno

2020-01-31 Thread Chris Wilson
Inside the intel_timeline_get_seqno(), we currently track the retirement
of the old cachelines by listening to the new request. This requires
that the new request is ready to be used and so requires a minimum bit
of initialisation prior to getting the new seqno.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Matthew Auld 
---
 drivers/gpu/drm/i915/i915_request.c | 21 ++---
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_request.c 
b/drivers/gpu/drm/i915/i915_request.c
index 78a5f5d3c070..f56b046a32de 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -595,6 +595,8 @@ static void __i915_request_ctor(void *arg)
i915_sw_fence_init(>submit, submit_notify);
i915_sw_fence_init(>semaphore, semaphore_notify);
 
+   dma_fence_init(>fence, _fence_ops, >lock, 0, 0);
+
rq->file_priv = NULL;
rq->capture_list = NULL;
 
@@ -653,25 +655,30 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp)
}
}
 
-   ret = intel_timeline_get_seqno(tl, rq, );
-   if (ret)
-   goto err_free;
-
rq->i915 = ce->engine->i915;
rq->context = ce;
rq->engine = ce->engine;
rq->ring = ce->ring;
rq->execution_mask = ce->engine->mask;
 
+   kref_init(>fence.refcount);
+   rq->fence.flags = 0;
+   rq->fence.error = 0;
+   INIT_LIST_HEAD(>fence.cb_list);
+
+   ret = intel_timeline_get_seqno(tl, rq, );
+   if (ret)
+   goto err_free;
+
+   rq->fence.context = tl->fence_context;
+   rq->fence.seqno = seqno;
+
RCU_INIT_POINTER(rq->timeline, tl);
RCU_INIT_POINTER(rq->hwsp_cacheline, tl->hwsp_cacheline);
rq->hwsp_seqno = tl->hwsp_seqno;
 
rq->rcustate = get_state_synchronize_rcu(); /* acts as smp_mb() */
 
-   dma_fence_init(>fence, _fence_ops, >lock,
-  tl->fence_context, seqno);
-
/* We bump the ref for the fence chain */
i915_sw_fence_reinit(_request_get(rq)->submit);
i915_sw_fence_reinit(_request_get(rq)->semaphore);
-- 
2.25.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 1/4] drm/i915/display: Wake the power well during resume

2020-01-31 Thread Chris Wilson
Acquire the power well before writing the setup during resume so that
our mmio are not dropped. E.g. on Braswell we see,

<4> [135.959703] i915 :00:02.0: Unclaimed write to register 0x1e0100
<4> [135.959936] WARNING: CPU: 1 PID: 3085 at 
drivers/gpu/drm/i915/intel_uncore.c:1166 __unclaimed_reg_debug+0x69/0x80 [i915]
<4> [135.959944] Modules linked in: vgem snd_hda_codec_hdmi 
snd_hda_codec_realtek snd_hda_codec_generic i915 coretemp btusb 
crct10dif_pclmul btrtl crc32_pclmul btbcm btintel snd_hda_intel 
ghash_clmulni_intel snd_intel_dspcfg bluetooth snd_hda_codec snd_hwdep 
ecdh_generic ecc snd_hda_core r8169 realtek snd_pcm lpc_ich prime_numbers 
pinctrl_cherryview
<4> [135.960011] CPU: 1 PID: 3085 Comm: kworker/u4:5 Tainted: G U   
 5.5.0-CI-CI_DRM_7849+ #1
<4> [135.960019] Hardware name:  /NUC5CPYB, BIOS 
PYBSWCEL.86A.0058.2016.1102.1842 11/02/2016
<4> [135.960033] Workqueue: events_unbound async_run_entry_fn
<4> [135.960189] RIP: 0010:__unclaimed_reg_debug+0x69/0x80 [i915]
<4> [135.960199] Code: 48 8b 78 18 48 8b 5f 50 48 85 db 74 2d e8 0f d1 43 e1 45 
89 e8 48 89 e9 48 89 da 48 89 c6 48 c7 c7 58 4c 44 a0 e8 37 bd e3 e0 <0f> 0b 83 
2d 7e cd 2b 00 01 5b 5d 41 5c 41 5d c3 48 8b 1f eb ce 66
<4> [135.960207] RSP: 0018:c947bd08 EFLAGS: 00010082
<4> [135.960217] RAX:  RBX: 88817a0edb60 RCX: 
0003
<4> [135.960225] RDX: 8003 RSI:  RDI: 

<4> [135.960232] RBP: a0485e86 R08:  R09: 
0001
<4> [135.960240] R10: d3945727 R11: 9a92dbc6 R12: 

<4> [135.960248] R13: 001e0100 R14: 0286 R15: 
8234a213
<4> [135.960257] FS:  () GS:88817bd0() 
knlGS:
<4> [135.960264] CS:  0010 DS:  ES:  CR0: 80050033
<4> [135.960272] CR2: 7f2f0dab2778 CR3: 00016f78c000 CR4: 
001006e0
<4> [135.960279] Call Trace:
<4> [135.960448]  fwtable_write32+0x114/0x1d0 [i915]
<4> [135.960633]  intel_power_domains_init_hw+0x4ff/0x650 [i915]
<4> [135.960821]  intel_power_domains_resume+0x3d/0x70 [i915]
<4> [135.960974]  i915_drm_resume_early+0x97/0xd0 [i915]

Closes: https://gitlab.freedesktop.org/drm/intel/issues/1089
Signed-off-by: Chris Wilson 
Cc: Imre Deak 
---
 .../gpu/drm/i915/display/intel_display_power.c | 18 +-
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c 
b/drivers/gpu/drm/i915/display/intel_display_power.c
index 64943179c05e..99463356be03 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -5255,6 +5255,15 @@ void intel_power_domains_init_hw(struct drm_i915_private 
*i915, bool resume)
/* Must happen before power domain init on VLV/CHV */
intel_update_rawclk(i915);
 
+   /*
+* Keep all power wells enabled for any dependent HW access during
+* initialization and to make sure we keep BIOS enabled display HW
+* resources powered until display HW readout is complete. We drop
+* this reference in intel_power_domains_enable().
+*/
+   power_domains->wakeref =
+   intel_display_power_get(i915, POWER_DOMAIN_INIT);
+
if (INTEL_GEN(i915) >= 11) {
icl_display_core_init(i915, resume);
} else if (IS_CANNONLAKE(i915)) {
@@ -5281,15 +5290,6 @@ void intel_power_domains_init_hw(struct drm_i915_private 
*i915, bool resume)
intel_pch_reset_handshake(i915, !HAS_PCH_NOP(i915));
}
 
-   /*
-* Keep all power wells enabled for any dependent HW access during
-* initialization and to make sure we keep BIOS enabled display HW
-* resources powered until display HW readout is complete. We drop
-* this reference in intel_power_domains_enable().
-*/
-   power_domains->wakeref =
-   intel_display_power_get(i915, POWER_DOMAIN_INIT);
-
/* Disable power support if the user asked so. */
if (!i915_modparams.disable_power_well)
intel_display_power_get(i915, POWER_DOMAIN_INIT);
-- 
2.25.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 4/4] drm/i915/selftests: Add a simple rollover for the kernel context

2020-01-31 Thread Chris Wilson
Exercise the seqno wrap paths on the kernel context to provide a small
amount of sanity checking and ensure that they are visible to lockdep.

Signed-off-by: Chris Wilson 
Cc: Maarten Lankhorst 
---
 drivers/gpu/drm/i915/gt/selftest_timeline.c | 171 
 1 file changed, 171 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/selftest_timeline.c 
b/drivers/gpu/drm/i915/gt/selftest_timeline.c
index e2d78cc22fb4..ddbe029cbde8 100644
--- a/drivers/gpu/drm/i915/gt/selftest_timeline.c
+++ b/drivers/gpu/drm/i915/gt/selftest_timeline.c
@@ -6,6 +6,8 @@
 
 #include 
 
+#include "intel_context.h"
+#include "intel_engine_heartbeat.h"
 #include "intel_engine_pm.h"
 #include "intel_gt.h"
 #include "intel_gt_requests.h"
@@ -750,6 +752,173 @@ static int live_hwsp_wrap(void *arg)
return err;
 }
 
+static void engine_heartbeat_disable(struct intel_engine_cs *engine,
+unsigned long *saved)
+{
+   *saved = engine->props.heartbeat_interval_ms;
+   engine->props.heartbeat_interval_ms = 0;
+
+   intel_engine_pm_get(engine);
+   intel_engine_park_heartbeat(engine);
+}
+
+static void engine_heartbeat_enable(struct intel_engine_cs *engine,
+   unsigned long saved)
+{
+   intel_engine_pm_put(engine);
+
+   engine->props.heartbeat_interval_ms = saved;
+}
+
+static int live_hwsp_rollover_kernel(void *arg)
+{
+   struct intel_gt *gt = arg;
+   struct intel_engine_cs *engine;
+   enum intel_engine_id id;
+   int err = 0;
+
+   /*
+* Run the host for long enough, and even the kernel context will
+* see a seqno rollover.
+*/
+
+   for_each_engine(engine, gt, id) {
+   struct intel_context *ce = engine->kernel_context;
+   struct intel_timeline *tl = ce->timeline;
+   struct i915_request *rq[3] = {};
+   unsigned long heartbeat;
+   int i;
+
+   engine_heartbeat_disable(engine, );
+   if (intel_gt_wait_for_idle(gt, HZ / 2)) {
+   err = -EIO;
+   goto out;
+   }
+
+   GEM_BUG_ON(i915_active_fence_isset(>last_request));
+   tl->seqno = 0;
+   timeline_rollback(tl);
+   timeline_rollback(tl);
+   WRITE_ONCE(*(u32 *)tl->hwsp_seqno, tl->seqno);
+
+   for (i = 0; i < ARRAY_SIZE(rq); i++) {
+   rq[i] = i915_request_create(ce);
+   if (IS_ERR(rq[i])) {
+   err = PTR_ERR(rq[i]);
+   goto out;
+   }
+
+   pr_debug("%s: create fence.seqnp:%d\n",
+engine->name, 
lower_32_bits(rq[i]->fence.seqno));
+   i915_request_get(rq[i]);
+   i915_request_add(rq[i]);
+   }
+
+   /* We expected a wrap! */
+   GEM_BUG_ON(rq[2]->fence.seqno > rq[0]->fence.seqno);
+
+   if (i915_request_wait(rq[2], 0, HZ / 5) < 0) {
+   pr_err("Wait for timeline wrap timed out!\n");
+   err = -EIO;
+   goto out;
+   }
+
+   for (i = 0; i < ARRAY_SIZE(rq); i++) {
+   if (!i915_request_completed(rq[i])) {
+   pr_err("Pre-wrap request not completed!\n");
+   err = -EINVAL;
+   goto out;
+   }
+   }
+
+out:
+   for (i = 0; i < ARRAY_SIZE(rq); i++)
+   i915_request_put(rq[i]);
+   engine_heartbeat_enable(engine, heartbeat);
+   if (err)
+   break;
+   }
+
+   if (igt_flush_test(gt->i915))
+   err = -EIO;
+
+   return err;
+}
+
+static int live_hwsp_rollover_user(void *arg)
+{
+   struct intel_gt *gt = arg;
+   struct intel_engine_cs *engine;
+   enum intel_engine_id id;
+   int err = 0;
+
+   /*
+* Run the host for long enough, and even the kernel context will
+* see a seqno rollover.
+*/
+
+   for_each_engine(engine, gt, id) {
+   struct i915_request *rq[3] = {};
+   struct intel_context *ce;
+   int i;
+
+   ce = intel_context_create(engine);
+   if (IS_ERR(ce))
+   return PTR_ERR(ce);
+
+   err = intel_context_alloc_state(ce);
+   if (err)
+   goto out;
+
+   timeline_rollback(ce->timeline);
+   timeline_rollback(ce->timeline);
+   WRITE_ONCE(*(u32 *)ce->timeline->hwsp_seqno,
+  ce->timeline->seqno);
+
+   for (i = 0; i < ARRAY_SIZE(rq); i++) {
+   rq[i] = intel_context_create_request(ce);
+  

[Intel-gfx] [PATCH 3/4] drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno

2020-01-31 Thread Chris Wilson
On seqno rollover, we need to allocate ourselves a new cacheline. This
might incur grabbing a new page and pinning it into the GGTT, with some
rather unfortunate lockdep implications.

To avoid a mutex, and more specifically pinning in the GGTT from inside
the kernel context being used to flush the GGTT in emergencies, we will
likely need to lift the next-cacheline allocation to a pre-reservation.

Signed-off-by: Chris Wilson 
Cc: Maarten Lankhorst 
Reviewed-by: Maarten Lankhorst 
---
 drivers/gpu/drm/i915/gt/intel_timeline.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_timeline.c 
b/drivers/gpu/drm/i915/gt/intel_timeline.c
index 465f87b65901..54e1e55f3c81 100644
--- a/drivers/gpu/drm/i915/gt/intel_timeline.c
+++ b/drivers/gpu/drm/i915/gt/intel_timeline.c
@@ -406,6 +406,8 @@ __intel_timeline_get_seqno(struct intel_timeline *tl,
void *vaddr;
int err;
 
+   might_lock(>gt->ggtt->vm.mutex);
+
/*
 * If there is an outstanding GPU reference to this cacheline,
 * such as it being sampled by a HW semaphore on another timeline,
-- 
2.25.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 1/2] drm/i915: Initialise basic fence before acquiring seqno

2020-01-31 Thread Chris Wilson
Inside the intel_timeline_get_seqno(), we currently track the retirement
of the old cachelines by listening to the new request. This requires
that the new request is ready to be used and so requires a minimum bit
of initialisation prior to getting the new seqno.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Matthew Auld 
---
 drivers/gpu/drm/i915/i915_request.c | 21 ++---
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_request.c 
b/drivers/gpu/drm/i915/i915_request.c
index 78a5f5d3c070..f56b046a32de 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -595,6 +595,8 @@ static void __i915_request_ctor(void *arg)
i915_sw_fence_init(>submit, submit_notify);
i915_sw_fence_init(>semaphore, semaphore_notify);
 
+   dma_fence_init(>fence, _fence_ops, >lock, 0, 0);
+
rq->file_priv = NULL;
rq->capture_list = NULL;
 
@@ -653,25 +655,30 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp)
}
}
 
-   ret = intel_timeline_get_seqno(tl, rq, );
-   if (ret)
-   goto err_free;
-
rq->i915 = ce->engine->i915;
rq->context = ce;
rq->engine = ce->engine;
rq->ring = ce->ring;
rq->execution_mask = ce->engine->mask;
 
+   kref_init(>fence.refcount);
+   rq->fence.flags = 0;
+   rq->fence.error = 0;
+   INIT_LIST_HEAD(>fence.cb_list);
+
+   ret = intel_timeline_get_seqno(tl, rq, );
+   if (ret)
+   goto err_free;
+
+   rq->fence.context = tl->fence_context;
+   rq->fence.seqno = seqno;
+
RCU_INIT_POINTER(rq->timeline, tl);
RCU_INIT_POINTER(rq->hwsp_cacheline, tl->hwsp_cacheline);
rq->hwsp_seqno = tl->hwsp_seqno;
 
rq->rcustate = get_state_synchronize_rcu(); /* acts as smp_mb() */
 
-   dma_fence_init(>fence, _fence_ops, >lock,
-  tl->fence_context, seqno);
-
/* We bump the ref for the fence chain */
i915_sw_fence_reinit(_request_get(rq)->submit);
i915_sw_fence_reinit(_request_get(rq)->semaphore);
-- 
2.25.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/2] drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno

2020-01-31 Thread Chris Wilson
On seqno rollover, we need to allocate ourselves a new cacheline. This
might incur grabbing a new page and pinning it into the GGTT, with some
rather unfortunate lockdep implications.

To avoid a mutex, and more specifically pinning in the GGTT from inside
the kernel context being used to flush the GGTT in emergencies, we will
likely need to lift the next-cacheline allocation to a pre-reservation.

Signed-off-by: Chris Wilson 
Cc: Maarten Lankhorst 
Reviewed-by: Maarten Lankhorst 
---
 drivers/gpu/drm/i915/gt/intel_timeline.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_timeline.c 
b/drivers/gpu/drm/i915/gt/intel_timeline.c
index 465f87b65901..54e1e55f3c81 100644
--- a/drivers/gpu/drm/i915/gt/intel_timeline.c
+++ b/drivers/gpu/drm/i915/gt/intel_timeline.c
@@ -406,6 +406,8 @@ __intel_timeline_get_seqno(struct intel_timeline *tl,
void *vaddr;
int err;
 
+   might_lock(>gt->ggtt->vm.mutex);
+
/*
 * If there is an outstanding GPU reference to this cacheline,
 * such as it being sampled by a HW semaphore on another timeline,
-- 
2.25.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/guc: Stop using mutex while sending CTB messages

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/guc: Stop using mutex while sending CTB messages
URL   : https://patchwork.freedesktop.org/series/72827/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16359


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/index.html

Known issues


  Here are the changes found in Patchwork_16359 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_module_load@reload:
- fi-skl-6770hq:  [PASS][1] -> [DMESG-WARN][2] ([i915#92]) +2 similar 
issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@i915_module_l...@reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-skl-6770hq/igt@i915_module_l...@reload.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][3] -> [DMESG-FAIL][4] ([i915#563])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence:
- fi-skl-6770hq:  [PASS][5] -> [SKIP][6] ([fdo#109271]) +4 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@kms_pipe_crc_ba...@read-crc-pipe-a-frame-sequence.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-skl-6770hq/igt@kms_pipe_crc_ba...@read-crc-pipe-a-frame-sequence.html

  * igt@kms_pipe_crc_basic@read-crc-pipe-c:
- fi-skl-6770hq:  [PASS][7] -> [DMESG-WARN][8] ([i915#106] / [i915#188])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-skl-6770hq/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-skl-6770hq/igt@kms_pipe_crc_ba...@read-crc-pipe-c.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][9] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@i915_selftest@live_execlists:
- fi-icl-y:   [DMESG-FAIL][11] ([fdo#108569]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-icl-y/igt@i915_selftest@live_execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-icl-y/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][13] ([fdo#111096] / [i915#323]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][15] ([i915#579]) -> [SKIP][16] ([fdo#109271])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][17] ([i915#563]) -> [DMESG-FAIL][18] 
([i915#770])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16359/fi-hsw-4770/igt@i915_selftest@live_blt.html

  
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#106]: https://gitlab.freedesktop.org/drm/intel/issues/106
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#188]: https://gitlab.freedesktop.org/drm/intel/issues/188
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#770]: https://gitlab.freedesktop.org/drm/intel/issues/770
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92


Participating hosts (47 -> 41)
--

  Additional (4): fi-gdg-551 fi-cfl-8109u fi-skl-6600u fi-snb-2600 
  Missing(10): fi-ilk-m540 fi-bdw-5557u fi-hsw-4200u fi-hsw-peppy 
fi-byt-squawks fi-bsw-cyan fi-ivb-3770 fi-blb-e6850 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 

[Intel-gfx] ✓ Fi.CI.BAT: success for disable drm_global_mutex for most drivers (rev4)

2020-01-31 Thread Patchwork
== Series Details ==

Series: disable drm_global_mutex for most drivers (rev4)
URL   : https://patchwork.freedesktop.org/series/72711/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7853 -> Patchwork_16357


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/index.html

Known issues


  Here are the changes found in Patchwork_16357 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][1] -> [DMESG-FAIL][2] ([i915#725])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-j1900:   [TIMEOUT][3] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/fi-byt-j1900/igt@gem_close_r...@basic-threads.html
- fi-byt-n2820:   [TIMEOUT][5] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-cml-u2:  [DMESG-WARN][7] ([IGT#4]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-cml-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/fi-cml-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][9] ([fdo#111096] / [i915#323]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@i915_pm_rpm@basic-rte:
- fi-kbl-guc: [FAIL][11] ([i915#579]) -> [SKIP][12] ([fdo#109271])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7853/fi-kbl-guc/igt@i915_pm_...@basic-rte.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/fi-kbl-guc/igt@i915_pm_...@basic-rte.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (47 -> 45)
--

  Additional (4): fi-skl-6700k2 fi-cfl-8109u fi-skl-6600u fi-snb-2600 
  Missing(6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7853 -> Patchwork_16357

  CI-20190529: 20190529
  CI_DRM_7853: 1df04205c16923e525efe9c26d6e98612d38c9b3 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5409: 93aefe6baa3fabf8c0cabe83e185f7b8f8d8753d @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16357: 0aa851bfac6dd1e5818bab37e3a722e736d276ca @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

0aa851bfac6d drm: Nerf drm_global_mutex BKL for good drivers
850beb19ef64 drm: Push drm_global_mutex locking in drm_open
edabfe0698c0 drm/client: Rename _force to _locked
58509b1c6e52 drm/fbdev-helper: don't force restores
ec6b1085531d drm: Complain if drivers still use the ->load callback

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16357/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 3/3] drm/i915/dp: Add all tiled and port sync conns to modeset

2020-01-31 Thread Ville Syrjälä
On Fri, Jan 31, 2020 at 11:46:25AM -0800, Manasi Navare wrote:
> On Fri, Jan 31, 2020 at 07:53:23PM +0200, Ville Syrjälä wrote:
> > On Fri, Jan 31, 2020 at 09:15:47AM -0800, Manasi Navare wrote:
> > > If one of the synced crtcs needs a full modeset, we need
> > > to make sure all the synced crtcs are forced a full
> > > modeset.
> > > 
> > > Suggested-by: Ville Syrjälä 
> > > Cc: Ville Syrjälä 
> > > Signed-off-by: Manasi Navare 
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_display.c |  88 +
> > >  drivers/gpu/drm/i915/display/intel_dp.c  | 131 ++-
> > >  2 files changed, 131 insertions(+), 88 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> > > b/drivers/gpu/drm/i915/display/intel_display.c
> > > index e638543f5f87..709a737638b6 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > @@ -13123,8 +13123,7 @@ intel_modeset_pipe_config(struct intel_crtc_state 
> > > *pipe_config)
> > >   struct drm_i915_private *i915 = to_i915(pipe_config->uapi.crtc->dev);
> > >   struct drm_connector *connector;
> > >   struct drm_connector_state *connector_state;
> > > - int base_bpp, ret;
> > > - int i, tile_group_id = -1, num_tiled_conns = 0;
> > > + int base_bpp, ret, i;
> > >   bool retry = true;
> > >  
> > >   pipe_config->cpu_transcoder =
> > > @@ -14559,76 +14558,6 @@ static bool 
> > > intel_cpu_transcoders_need_modeset(struct intel_atomic_state *state,
> > >   return false;
> > >  }
> > >  
> > > -static int
> > > -intel_modeset_all_tiles(struct intel_atomic_state *state, int 
> > > tile_grp_id)
> > > -{
> > > - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > > - struct drm_connector *connector;
> > > - struct drm_connector_list_iter conn_iter;
> > > - int ret = 0;
> > > -
> > > - drm_connector_list_iter_begin(_priv->drm, _iter);
> > > - drm_for_each_connector_iter(connector, _iter) {
> > > - struct drm_connector_state *conn_state;
> > > - struct drm_crtc_state *crtc_state;
> > > -
> > > - if (!connector->has_tile ||
> > > - connector->tile_group->id != tile_grp_id)
> > > - continue;
> > > - conn_state = drm_atomic_get_connector_state(>base,
> > > - connector);
> > > - if (IS_ERR(conn_state)) {
> > > - ret =  PTR_ERR(conn_state);
> > > - break;
> > > - }
> > > -
> > > - if (!conn_state->crtc)
> > > - continue;
> > > -
> > > - crtc_state = drm_atomic_get_crtc_state(>base,
> > > -conn_state->crtc);
> > > - if (IS_ERR(crtc_state)) {
> > > - ret = PTR_ERR(crtc_state);
> > > - break;
> > > - }
> > > - crtc_state->mode_changed = true;
> > > - ret = drm_atomic_add_affected_connectors(>base,
> > > -  conn_state->crtc);
> > > - if (ret)
> > > - break;
> > > - }
> > > - drm_connector_list_iter_end(_iter);
> > > -
> > > - return ret;
> > > -}
> > > -
> > > -static int
> > > -intel_atomic_check_tiled_conns(struct intel_atomic_state *state)
> > > -{
> > > - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > > - struct drm_connector *connector;
> > > - struct drm_connector_state *old_conn_state, *new_conn_state;
> > > - int i, ret;
> > > -
> > > - if (INTEL_GEN(dev_priv) < 11)
> > > - return 0;
> > > -
> > > - /* Is tiled, mark all other tiled CRTCs as needing a modeset */
> > > - for_each_oldnew_connector_in_state(>base, connector,
> > > -old_conn_state, new_conn_state, i) {
> > > - if (!connector->has_tile)
> > > - continue;
> > > - if (!intel_connector_needs_modeset(state, connector))
> > > - continue;
> > > -
> > > - ret = intel_modeset_all_tiles(state, connector->tile_group->id);
> > > - if (ret)
> > > - return ret;
> > > - }
> > > -
> > > - return 0;
> > > -}
> > > -
> > >  /**
> > >   * intel_atomic_check - validate state object
> > >   * @dev: drm device
> > > @@ -14656,21 +14585,6 @@ static int intel_atomic_check(struct drm_device 
> > > *dev,
> > >   if (ret)
> > >   goto fail;
> > >  
> > > - /**
> > > -  * This check adds all the connectors in current state that belong to
> > > -  * the same tile group to a full modeset.
> > > -  * This function directly sets the mode_changed to true and we also call
> > > -  * drm_atomic_add_affected_connectors(). Hence we are not explicitly
> > > -  * calling drm_atomic_helper_check_modeset() after this.
> > > -  *
> > > -  * Fixme: Handle some corner cases where one of the
> > > -  * tiled connectors gets disconnected and tile info is lost but since it
> > > -  * was previously synced to other conn, we 

Re: [Intel-gfx] [PATCH 3/3] drm/i915/dp: Add all tiled and port sync conns to modeset

2020-01-31 Thread Manasi Navare
On Fri, Jan 31, 2020 at 07:53:23PM +0200, Ville Syrjälä wrote:
> On Fri, Jan 31, 2020 at 09:15:47AM -0800, Manasi Navare wrote:
> > If one of the synced crtcs needs a full modeset, we need
> > to make sure all the synced crtcs are forced a full
> > modeset.
> > 
> > Suggested-by: Ville Syrjälä 
> > Cc: Ville Syrjälä 
> > Signed-off-by: Manasi Navare 
> > ---
> >  drivers/gpu/drm/i915/display/intel_display.c |  88 +
> >  drivers/gpu/drm/i915/display/intel_dp.c  | 131 ++-
> >  2 files changed, 131 insertions(+), 88 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> > b/drivers/gpu/drm/i915/display/intel_display.c
> > index e638543f5f87..709a737638b6 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -13123,8 +13123,7 @@ intel_modeset_pipe_config(struct intel_crtc_state 
> > *pipe_config)
> > struct drm_i915_private *i915 = to_i915(pipe_config->uapi.crtc->dev);
> > struct drm_connector *connector;
> > struct drm_connector_state *connector_state;
> > -   int base_bpp, ret;
> > -   int i, tile_group_id = -1, num_tiled_conns = 0;
> > +   int base_bpp, ret, i;
> > bool retry = true;
> >  
> > pipe_config->cpu_transcoder =
> > @@ -14559,76 +14558,6 @@ static bool 
> > intel_cpu_transcoders_need_modeset(struct intel_atomic_state *state,
> > return false;
> >  }
> >  
> > -static int
> > -intel_modeset_all_tiles(struct intel_atomic_state *state, int tile_grp_id)
> > -{
> > -   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > -   struct drm_connector *connector;
> > -   struct drm_connector_list_iter conn_iter;
> > -   int ret = 0;
> > -
> > -   drm_connector_list_iter_begin(_priv->drm, _iter);
> > -   drm_for_each_connector_iter(connector, _iter) {
> > -   struct drm_connector_state *conn_state;
> > -   struct drm_crtc_state *crtc_state;
> > -
> > -   if (!connector->has_tile ||
> > -   connector->tile_group->id != tile_grp_id)
> > -   continue;
> > -   conn_state = drm_atomic_get_connector_state(>base,
> > -   connector);
> > -   if (IS_ERR(conn_state)) {
> > -   ret =  PTR_ERR(conn_state);
> > -   break;
> > -   }
> > -
> > -   if (!conn_state->crtc)
> > -   continue;
> > -
> > -   crtc_state = drm_atomic_get_crtc_state(>base,
> > -  conn_state->crtc);
> > -   if (IS_ERR(crtc_state)) {
> > -   ret = PTR_ERR(crtc_state);
> > -   break;
> > -   }
> > -   crtc_state->mode_changed = true;
> > -   ret = drm_atomic_add_affected_connectors(>base,
> > -conn_state->crtc);
> > -   if (ret)
> > -   break;
> > -   }
> > -   drm_connector_list_iter_end(_iter);
> > -
> > -   return ret;
> > -}
> > -
> > -static int
> > -intel_atomic_check_tiled_conns(struct intel_atomic_state *state)
> > -{
> > -   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > -   struct drm_connector *connector;
> > -   struct drm_connector_state *old_conn_state, *new_conn_state;
> > -   int i, ret;
> > -
> > -   if (INTEL_GEN(dev_priv) < 11)
> > -   return 0;
> > -
> > -   /* Is tiled, mark all other tiled CRTCs as needing a modeset */
> > -   for_each_oldnew_connector_in_state(>base, connector,
> > -  old_conn_state, new_conn_state, i) {
> > -   if (!connector->has_tile)
> > -   continue;
> > -   if (!intel_connector_needs_modeset(state, connector))
> > -   continue;
> > -
> > -   ret = intel_modeset_all_tiles(state, connector->tile_group->id);
> > -   if (ret)
> > -   return ret;
> > -   }
> > -
> > -   return 0;
> > -}
> > -
> >  /**
> >   * intel_atomic_check - validate state object
> >   * @dev: drm device
> > @@ -14656,21 +14585,6 @@ static int intel_atomic_check(struct drm_device 
> > *dev,
> > if (ret)
> > goto fail;
> >  
> > -   /**
> > -* This check adds all the connectors in current state that belong to
> > -* the same tile group to a full modeset.
> > -* This function directly sets the mode_changed to true and we also call
> > -* drm_atomic_add_affected_connectors(). Hence we are not explicitly
> > -* calling drm_atomic_helper_check_modeset() after this.
> > -*
> > -* Fixme: Handle some corner cases where one of the
> > -* tiled connectors gets disconnected and tile info is lost but since it
> > -* was previously synced to other conn, we need to add that to the 
> > modeset.
> > -*/
> > -   ret = intel_atomic_check_tiled_conns(state);
> > -   if (ret)
> > -   goto fail;
> > -
> > 

Re: [Intel-gfx] [v2] drm/i915/tgl: Add Wa_1606054188:tgl

2020-01-31 Thread Ville Syrjälä
On Fri, Jan 31, 2020 at 10:19:51PM -0500, Matt Atwood wrote:
> On Tiger Lake we do not support source keying in the pixel formats P010,
> P012, P016.
> 
> v2: Move WA to end of function. Create helper function for format
> check. Less verbose debugging messaging.
> 
> Bspec: 52890
> Cc: Matt Roper 
> Cc: Manasi Navare 
> CC: Ville Syrjälä 

Wrong address

> Signed-off-by: Matt Atwood 
> ---
>  drivers/gpu/drm/i915/display/intel_sprite.c | 22 +
>  1 file changed, 22 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c 
> b/drivers/gpu/drm/i915/display/intel_sprite.c
> index 2f277d1fc6f1..6e4d73588b48 100644
> --- a/drivers/gpu/drm/i915/display/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/display/intel_sprite.c
> @@ -2070,6 +2070,18 @@ vlv_sprite_check(struct intel_crtc_state *crtc_state,
>   return 0;
>  }
>  
> +static bool intel_format_is_p01x(int format)
^^^
u32

> +{
> + switch(format){

Missing spaces

> + case DRM_FORMAT_P010:
> + case DRM_FORMAT_P012:
> + case DRM_FORMAT_P016:
> + return true;
> + default:
> + return false;

Wrong indentantion

> + }
> +}
> +
>  static int skl_plane_check_fb(const struct intel_crtc_state *crtc_state,
> const struct intel_plane_state *plane_state)
>  {
> @@ -2143,6 +2155,16 @@ static int skl_plane_check_fb(const struct 
> intel_crtc_state *crtc_state,
>   return -EINVAL;
>   }
>  
> + /* Wa_1606054188:tgl
> +  *
> +  * TODO: Add format RGB64i when implemented.
> +  *
> +  */

Wrong comment format

> + if(IS_GEN(dev_priv, 12) &&

Missing space

> +plane_state->ckey.flags & I915_SET_COLORKEY_SOURCE &&
> +intel_format_is_p01x(fb->format->format))
> + DRM_DEBUG_KMS("Source color keying not supported with P01x 
> formats\n");

Missing error return.

Was also going to suggest you should use drm_dbg_kms() now, but
looks like this file hasn't been converted yet. Well, I guess
there'd be no harm in using drm_dbg_kms() anyway if you want.

As for the w/a itself, not sure it's any more broken than any other
planar format (don't have the hw to test it right now). But I just
tried my wip colorkey test on glk with nv12/p010 and while it
more or less seems to work the chroma upsampling is definitely
making it impossible to test with crcs. I guess we'll get to
testing out eventually to see if it is actually more broken than
that. Certainly wouldn't be the first time the hw has issues with
the >8bpc to 8bpc conversion for the key match. Just a bit
surprising that it would be limited to just the specific combo
of tgl and P01x formats.

> +
>   return 0;
>  }
>  
> -- 
> 2.21.1
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [1/2] drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt (rev3)

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915/gt: Also use async bind for 
PIN_USER into bsw/bxt ggtt (rev3)
URL   : https://patchwork.freedesktop.org/series/72809/
State : failure

== Summary ==

Applying: drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt
.git/rebase-apply/patch:15: space before tab in indent.
I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;
warning: 1 line adds whitespace errors.
Using index info to reconstruct a base tree...
M   drivers/gpu/drm/i915/gt/intel_ggtt.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/gpu/drm/i915/gt/intel_ggtt.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/gt/intel_ggtt.c
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0001 drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt 
ggtt
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] ✗ Fi.CI.CHECKPATCH: warning for disable drm_global_mutex for most drivers (rev4)

2020-01-31 Thread Patchwork
== Series Details ==

Series: disable drm_global_mutex for most drivers (rev4)
URL   : https://patchwork.freedesktop.org/series/72711/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
ec6b1085531d drm: Complain if drivers still use the ->load callback
-:48: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'Daniel Vetter '

total: 0 errors, 1 warnings, 0 checks, 21 lines checked
58509b1c6e52 drm/fbdev-helper: don't force restores
-:70: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'Daniel Vetter '

total: 0 errors, 1 warnings, 0 checks, 29 lines checked
edabfe0698c0 drm/client: Rename _force to _locked
-:97: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'Daniel Vetter '

total: 0 errors, 1 warnings, 0 checks, 60 lines checked
850beb19ef64 drm: Push drm_global_mutex locking in drm_open
-:95: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'Daniel Vetter '

total: 0 errors, 1 warnings, 0 checks, 54 lines checked
0aa851bfac6d drm: Nerf drm_global_mutex BKL for good drivers
-:19: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ 
chars of sha1> ("")' - ie: 'commit 7e13ad896484 ("drm: Avoid 
drm_global_mutex for simple inc/dec of dev->open_count")'
#19: 
commit 7e13ad896484a0165a68197a2e64091ea28c9602

-:162: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'Daniel Vetter '

total: 1 errors, 1 warnings, 0 checks, 109 lines checked

___
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/selftests: Disable heartbeat around hang tests

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Disable heartbeat around hang tests
URL   : https://patchwork.freedesktop.org/series/72821/
State : failure

== Summary ==

Applying: drm/i915/selftests: Disable heartbeat around hang tests
Using index info to reconstruct a base tree...
M   drivers/gpu/drm/i915/gt/selftest_lrc.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/gpu/drm/i915/gt/selftest_lrc.c
No changes -- Patch already applied.

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 08/12] drm/i915/gt: Rename lrc.c to execlists_submission.c

2020-01-31 Thread Daniele Ceraolo Spurio



On 1/31/20 2:45 AM, Chris Wilson wrote:

We want to separate the utility functions for controlling the logical
ring context from the execlists submission mechanism (which is an
overgrown scheduler).

This is similar to Daniele's work to split up the files, but being
selfish I wanted to base it after my own changes to intel_lrc.c petered
out.

Signed-off-by: Chris Wilson 
Cc: Daniele Ceraolo Spurio 
Cc: Tvrtko Ursulin 


Reviewed-by: Daniele Ceraolo Spurio 

Daniele


---
  drivers/gpu/drm/i915/Makefile |  2 +-
  drivers/gpu/drm/i915/gem/i915_gem_context.c   |  1 +
  drivers/gpu/drm/i915/gt/intel_context_sseu.c  |  2 +-
  drivers/gpu/drm/i915/gt/intel_engine_cs.c |  1 +
  drivers/gpu/drm/i915/gt/intel_engine_pool.c   |  1 +
  ...tel_lrc.c => intel_execlists_submission.c} | 30 ++
  ...tel_lrc.h => intel_execlists_submission.h} | 31 +++
  drivers/gpu/drm/i915/gt/intel_mocs.c  |  2 +-
  .../{selftest_lrc.c => selftest_execlists.c}  |  0
  drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c|  1 +
  .../gpu/drm/i915/gt/uc/intel_guc_submission.c |  1 +
  drivers/gpu/drm/i915/i915_drv.h   |  1 -
  drivers/gpu/drm/i915/i915_perf.c  |  1 +
  13 files changed, 16 insertions(+), 58 deletions(-)
  rename drivers/gpu/drm/i915/gt/{intel_lrc.c => intel_execlists_submission.c} 
(99%)
  rename drivers/gpu/drm/i915/gt/{intel_lrc.h => intel_execlists_submission.h} 
(56%)
  rename drivers/gpu/drm/i915/gt/{selftest_lrc.c => selftest_execlists.c} (100%)

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 7d04db92aae5..f2b5742218a0 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -87,6 +87,7 @@ gt-y += \
gt/intel_engine_pm.o \
gt/intel_engine_pool.o \
gt/intel_engine_user.o \
+   gt/intel_execlists_submission.o \
gt/intel_ggtt.o \
gt/intel_gt.o \
gt/intel_gt_irq.o \
@@ -95,7 +96,6 @@ gt-y += \
gt/intel_gt_requests.o \
gt/intel_gtt.o \
gt/intel_llc.o \
-   gt/intel_lrc.o \
gt/intel_mocs.o \
gt/intel_ppgtt.o \
gt/intel_rc6.o \
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c 
b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index 9130706417c0..cbc1cec9988d 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -73,6 +73,7 @@
  #include "gt/intel_context.h"
  #include "gt/intel_engine_heartbeat.h"
  #include "gt/intel_engine_user.h"
+#include "gt/intel_execlists_submission.h" /* virtual_engine */
  #include "gt/intel_ring.h"
  
  #include "i915_gem_context.h"

diff --git a/drivers/gpu/drm/i915/gt/intel_context_sseu.c 
b/drivers/gpu/drm/i915/gt/intel_context_sseu.c
index 57a30956c922..ee4ef2559914 100644
--- a/drivers/gpu/drm/i915/gt/intel_context_sseu.c
+++ b/drivers/gpu/drm/i915/gt/intel_context_sseu.c
@@ -8,7 +8,7 @@
  #include "intel_context.h"
  #include "intel_engine_pm.h"
  #include "intel_gpu_commands.h"
-#include "intel_lrc.h"
+#include "intel_execlists_submission.h"
  #include "intel_lrc_reg.h"
  #include "intel_ring.h"
  #include "intel_sseu.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 2aa3bb883cb3..2e8e178ce966 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -33,6 +33,7 @@
  #include "intel_engine_pm.h"
  #include "intel_engine_pool.h"
  #include "intel_engine_user.h"
+#include "intel_execlists_submission.h"
  #include "intel_gt.h"
  #include "intel_gt_requests.h"
  #include "intel_gt_pm.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pool.c 
b/drivers/gpu/drm/i915/gt/intel_engine_pool.c
index 397186818305..56abd7a068d3 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_pool.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_pool.c
@@ -9,6 +9,7 @@
  #include "i915_drv.h"
  #include "intel_engine_pm.h"
  #include "intel_engine_pool.h"
+#include "intel_execlists_submission.h" /* intel_virtual_engine*() */
  
  static struct intel_engine_cs *to_engine(struct intel_engine_pool *pool)

  {
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
similarity index 99%
rename from drivers/gpu/drm/i915/gt/intel_lrc.c
rename to drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index e1ea369bc62d..698276d3c074 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -1,31 +1,6 @@
+// SPDX-License-Identifier: MIT
  /*
   * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and 

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Add missing HDMI audio pixel clocks for gen12 (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915: Add missing HDMI audio pixel clocks for gen12 (rev2)
URL   : https://patchwork.freedesktop.org/series/72617/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7835_full -> Patchwork_16310_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_16310_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_16310_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_16310_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_exec_schedule@pi-shared-iova-blt:
- shard-skl:  [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-skl6/igt@gem_exec_sched...@pi-shared-iova-blt.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-skl5/igt@gem_exec_sched...@pi-shared-iova-blt.html

  
Known issues


  Here are the changes found in Patchwork_16310_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@vcs1-mixed-process:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276] / [fdo#112080]) 
+1 similar issue
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb4/igt@gem_ctx_persiste...@vcs1-mixed-process.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb8/igt@gem_ctx_persiste...@vcs1-mixed-process.html

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#110841])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb7/igt@gem_ctx_sha...@exec-single-timeline-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb2/igt@gem_ctx_sha...@exec-single-timeline-bsd.html

  * igt@gem_exec_parallel@vcs1-fds:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112080]) +17 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb4/igt@gem_exec_paral...@vcs1-fds.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb8/igt@gem_exec_paral...@vcs1-fds.html

  * igt@gem_exec_schedule@independent-bsd2:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#109276]) +15 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb4/igt@gem_exec_sched...@independent-bsd2.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb8/igt@gem_exec_sched...@independent-bsd2.html

  * igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][11] -> [SKIP][12] ([i915#677]) +1 similar issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb8/igt@gem_exec_sched...@pi-common-bsd.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb1/igt@gem_exec_sched...@pi-common-bsd.html

  * igt@gem_exec_schedule@preemptive-hang-bsd:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#112146]) +7 similar 
issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb7/igt@gem_exec_sched...@preemptive-hang-bsd.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb2/igt@gem_exec_sched...@preemptive-hang-bsd.html

  * igt@gem_exec_suspend@basic-s3:
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180]) +3 
similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-kbl1/igt@gem_exec_susp...@basic-s3.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-kbl1/igt@gem_exec_susp...@basic-s3.html

  * igt@gen7_exec_parse@basic-offset:
- shard-hsw:  [PASS][17] -> [FAIL][18] ([i915#694])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-hsw8/igt@gen7_exec_pa...@basic-offset.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-hsw5/igt@gen7_exec_pa...@basic-offset.html

  * igt@i915_pm_dc@dc6-dpms:
- shard-iclb: [PASS][19] -> [FAIL][20] ([i915#454])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-iclb1/igt@i915_pm...@dc6-dpms.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-iclb3/igt@i915_pm...@dc6-dpms.html

  * igt@i915_pm_rpm@system-suspend:
- shard-skl:  [PASS][21] -> [INCOMPLETE][22] ([i915#151] / 
[i915#69])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7835/shard-skl10/igt@i915_pm_...@system-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16310/shard-skl5/igt@i915_pm_...@system-suspend.html

  * igt@i915_pm_rps@reset:
- shard-tglb: [PASS][23] -> [FAIL][24] ([i915#413])
   

[Intel-gfx] [v2] drm/i915/tgl: Add Wa_1606054188:tgl

2020-01-31 Thread Matt Atwood
On Tiger Lake we do not support source keying in the pixel formats P010,
P012, P016.

v2: Move WA to end of function. Create helper function for format
check. Less verbose debugging messaging.

Bspec: 52890
Cc: Matt Roper 
Cc: Manasi Navare 
CC: Ville Syrjälä 
Signed-off-by: Matt Atwood 
---
 drivers/gpu/drm/i915/display/intel_sprite.c | 22 +
 1 file changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c 
b/drivers/gpu/drm/i915/display/intel_sprite.c
index 2f277d1fc6f1..6e4d73588b48 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -2070,6 +2070,18 @@ vlv_sprite_check(struct intel_crtc_state *crtc_state,
return 0;
 }
 
+static bool intel_format_is_p01x(int format)
+{
+   switch(format){
+   case DRM_FORMAT_P010:
+   case DRM_FORMAT_P012:
+   case DRM_FORMAT_P016:
+   return true;
+   default:
+   return false;
+   }
+}
+
 static int skl_plane_check_fb(const struct intel_crtc_state *crtc_state,
  const struct intel_plane_state *plane_state)
 {
@@ -2143,6 +2155,16 @@ static int skl_plane_check_fb(const struct 
intel_crtc_state *crtc_state,
return -EINVAL;
}
 
+   /* Wa_1606054188:tgl
+*
+* TODO: Add format RGB64i when implemented.
+*
+*/
+   if(IS_GEN(dev_priv, 12) &&
+  plane_state->ckey.flags & I915_SET_COLORKEY_SOURCE &&
+  intel_format_is_p01x(fb->format->format))
+   DRM_DEBUG_KMS("Source color keying not supported with P01x 
formats\n");
+
return 0;
 }
 
-- 
2.21.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 3/3] drm/i915/dp: Add all tiled and port sync conns to modeset

2020-01-31 Thread Ville Syrjälä
On Fri, Jan 31, 2020 at 09:15:47AM -0800, Manasi Navare wrote:
> If one of the synced crtcs needs a full modeset, we need
> to make sure all the synced crtcs are forced a full
> modeset.
> 
> Suggested-by: Ville Syrjälä 
> Cc: Ville Syrjälä 
> Signed-off-by: Manasi Navare 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c |  88 +
>  drivers/gpu/drm/i915/display/intel_dp.c  | 131 ++-
>  2 files changed, 131 insertions(+), 88 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index e638543f5f87..709a737638b6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -13123,8 +13123,7 @@ intel_modeset_pipe_config(struct intel_crtc_state 
> *pipe_config)
>   struct drm_i915_private *i915 = to_i915(pipe_config->uapi.crtc->dev);
>   struct drm_connector *connector;
>   struct drm_connector_state *connector_state;
> - int base_bpp, ret;
> - int i, tile_group_id = -1, num_tiled_conns = 0;
> + int base_bpp, ret, i;
>   bool retry = true;
>  
>   pipe_config->cpu_transcoder =
> @@ -14559,76 +14558,6 @@ static bool 
> intel_cpu_transcoders_need_modeset(struct intel_atomic_state *state,
>   return false;
>  }
>  
> -static int
> -intel_modeset_all_tiles(struct intel_atomic_state *state, int tile_grp_id)
> -{
> - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - struct drm_connector *connector;
> - struct drm_connector_list_iter conn_iter;
> - int ret = 0;
> -
> - drm_connector_list_iter_begin(_priv->drm, _iter);
> - drm_for_each_connector_iter(connector, _iter) {
> - struct drm_connector_state *conn_state;
> - struct drm_crtc_state *crtc_state;
> -
> - if (!connector->has_tile ||
> - connector->tile_group->id != tile_grp_id)
> - continue;
> - conn_state = drm_atomic_get_connector_state(>base,
> - connector);
> - if (IS_ERR(conn_state)) {
> - ret =  PTR_ERR(conn_state);
> - break;
> - }
> -
> - if (!conn_state->crtc)
> - continue;
> -
> - crtc_state = drm_atomic_get_crtc_state(>base,
> -conn_state->crtc);
> - if (IS_ERR(crtc_state)) {
> - ret = PTR_ERR(crtc_state);
> - break;
> - }
> - crtc_state->mode_changed = true;
> - ret = drm_atomic_add_affected_connectors(>base,
> -  conn_state->crtc);
> - if (ret)
> - break;
> - }
> - drm_connector_list_iter_end(_iter);
> -
> - return ret;
> -}
> -
> -static int
> -intel_atomic_check_tiled_conns(struct intel_atomic_state *state)
> -{
> - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - struct drm_connector *connector;
> - struct drm_connector_state *old_conn_state, *new_conn_state;
> - int i, ret;
> -
> - if (INTEL_GEN(dev_priv) < 11)
> - return 0;
> -
> - /* Is tiled, mark all other tiled CRTCs as needing a modeset */
> - for_each_oldnew_connector_in_state(>base, connector,
> -old_conn_state, new_conn_state, i) {
> - if (!connector->has_tile)
> - continue;
> - if (!intel_connector_needs_modeset(state, connector))
> - continue;
> -
> - ret = intel_modeset_all_tiles(state, connector->tile_group->id);
> - if (ret)
> - return ret;
> - }
> -
> - return 0;
> -}
> -
>  /**
>   * intel_atomic_check - validate state object
>   * @dev: drm device
> @@ -14656,21 +14585,6 @@ static int intel_atomic_check(struct drm_device *dev,
>   if (ret)
>   goto fail;
>  
> - /**
> -  * This check adds all the connectors in current state that belong to
> -  * the same tile group to a full modeset.
> -  * This function directly sets the mode_changed to true and we also call
> -  * drm_atomic_add_affected_connectors(). Hence we are not explicitly
> -  * calling drm_atomic_helper_check_modeset() after this.
> -  *
> -  * Fixme: Handle some corner cases where one of the
> -  * tiled connectors gets disconnected and tile info is lost but since it
> -  * was previously synced to other conn, we need to add that to the 
> modeset.
> -  */
> - ret = intel_atomic_check_tiled_conns(state);
> - if (ret)
> - goto fail;
> -
>   for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
>   new_crtc_state, i) {
>   if 

Re: [Intel-gfx] [PATCH 2/3] drm/i915/dp: Compute port sync crtc states post compute_config()

2020-01-31 Thread Ville Syrjälä
On Fri, Jan 31, 2020 at 09:15:46AM -0800, Manasi Navare wrote:
> This patch pushes out the computation of master and slave
> transcoders in crtc states after encoder's compute_config hook.
> This ensures that the assigned master slave crtcs have exact same
> mode and timings which is a requirement for Port sync mode
> to be enabled.
> 
> Suggested-by: Ville Syrjälä 
> Cc: Ville Syrjälä 
> Signed-off-by: Manasi Navare 
> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c | 125 +++
>  drivers/gpu/drm/i915/display/intel_display.c | 156 ---
>  2 files changed, 125 insertions(+), 156 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index c96f629cddc3..4ec36eb5ce28 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -4440,6 +4440,130 @@ static int intel_ddi_compute_config(struct 
> intel_encoder *encoder,
>   return 0;
>  }
>  
> +static bool mode_equal(const struct drm_display_mode *mode1,
> +const struct drm_display_mode *mode2)
> +{
> + return drm_mode_match(mode1, mode2,
> +   DRM_MODE_MATCH_TIMINGS |
> +   DRM_MODE_MATCH_FLAGS |
> +   DRM_MODE_MATCH_3D_FLAGS) &&
> + mode1->clock == mode2->clock; /* we want an exact match */

Trying to remember why we chose .clock rather than .crtc_clock... Ah,
because drm_mode_match() anyway looks at the non-crtc timings. Yeah,
should work fine since we make sure the 3D flags match so the crtc
timings vs non-crtc timings should be consistent for each one.

> +}
> +
> +static bool m_n_equal(const struct intel_link_m_n *m_n_1,
> +   const struct intel_link_m_n *m_n_2)
> +{
> + return m_n_1->tu == m_n_2->tu &&
> + m_n_1->gmch_m == m_n_2->gmch_m &&
> + m_n_1->gmch_n == m_n_2->gmch_n &&
> + m_n_1->link_m == m_n_2->link_m &&
> + m_n_1->link_n == m_n_2->link_n;
> +}
> +
> +static bool crtcs_port_sync_compatible(struct intel_crtc_state *crtc_state1,
> +struct intel_crtc_state *crtc_state2)
> +{
> + return crtc_state1->hw.active && crtc_state2->hw.active &&
> + crtc_state1->output_types == crtc_state2->output_types &&
> + crtc_state1->output_format == crtc_state2->output_format &&
> + crtc_state1->lane_count == crtc_state2->lane_count &&
> + crtc_state1->port_clock == crtc_state2->port_clock &&
> + mode_equal(_state1->hw.adjusted_mode,
> +_state2->hw.adjusted_mode) &&
> + m_n_equal(_state1->dp_m_n, _state2->dp_m_n);
> +}
> +
> +static u8
> +intel_ddi_compute_port_sync_crtc_state

The name is misleading. something_port_sync_transcoders() etc. to
better describe what it returns.

>(struct drm_connector *ref_connector,

You don't need the whole connector. The tile group id will suffice.

> +struct intel_crtc_state *ref_crtc_state)

const

> +{
> + struct drm_connector *connector;
> + struct drm_connector_state *conn_state;
> + struct drm_i915_private *dev_priv = 
> to_i915(ref_crtc_state->uapi.crtc->dev);
> + struct intel_atomic_state *state =
> + to_intel_atomic_state(ref_crtc_state->uapi.state);
> + struct intel_crtc *ref_crtc = to_intel_crtc(ref_crtc_state->uapi.crtc);
> + u8 transcoders = 0;
> + int i;
> +
> + DRM_DEBUG_KMS("for [CRTC:%d:%s]\n",
> +   ref_crtc_state->uapi.crtc->base.id,
> +   ref_crtc_state->uapi.crtc->name);

More noise than signal. Pls remove.

> +
> + if (INTEL_GEN(dev_priv) < 11)
> + return 0;
> +
> + if (!intel_crtc_has_type(ref_crtc_state, INTEL_OUTPUT_DP))
> + return 0;
> +
> + for_each_new_connector_in_state(>base, connector, conn_state, i) 
> {
> + struct intel_crtc *crtc = to_intel_crtc(conn_state->crtc);
> + struct intel_crtc_state *crtc_state = NULL;
> +
> + if (!crtc)
> + continue;
> +
> + if (!(connector->has_tile &&
> +   connector->tile_group->id ==
> +   ref_connector->tile_group->id))
> + continue;
> +
> + crtc_state = intel_atomic_get_new_crtc_state(state,
> +  crtc);
> + if (!crtcs_port_sync_compatible(ref_crtc_state,
> + crtc_state)) {
> + DRM_DEBUG_KMS("[CRTC:%d:%s] and [CRTC:%d:%s] not Port 
> Sync Compatible\n",
> +   ref_crtc->base.base.id,
> +   ref_crtc->base.name,
> +   crtc->base.base.id, crtc->base.name);

Another noisy debug. The 

Re: [Intel-gfx] [PATCH] drm/i915/dsb: Enable lmem for dsb

2020-01-31 Thread Manna, Animesh


On 31-01-2020 17:33, Ville Syrjälä wrote:

On Fri, Jan 31, 2020 at 05:12:58PM +0530, Animesh Manna wrote:

If lmem is supported DSB should use local memeory instead
of system memory. Using local memory surely bring performance
improvement as local memory is close to gpu. Also want to avoid
multiple gpu using system memory.

Used LMEM api to create gem object needed for DSB command buffer.

The whole point of the dsb is to avoid doing mmio.a Now you're
replacing the nice dma with mmio again. Granted lmem is probably
wc so maybe not as slow as direct mmio register access, and also
we can do this ahead of time so not as time critical as direct
mmio during the the vblank.


As per sas documentation Lmem (HBM) memory is preferable for command/batch 
buffer, planning to do some profiling. Will update the result.

Regards,
Animesh




v1: Initial patch.

Cc: Jani Nikula 
Cc: Matthew Auld 
Cc: Ramalingam C 
Signed-off-by: Animesh Manna 
---
  drivers/gpu/drm/i915/display/intel_dsb.c | 7 ++-
  1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c 
b/drivers/gpu/drm/i915/display/intel_dsb.c
index 9dd18144a664..d67b6a764ba0 100644
--- a/drivers/gpu/drm/i915/display/intel_dsb.c
+++ b/drivers/gpu/drm/i915/display/intel_dsb.c
@@ -6,6 +6,7 @@
  
  #include "i915_drv.h"

  #include "intel_display_types.h"
+#include "gem/i915_gem_lmem.h"
  
  #define DSB_BUF_SIZE(2 * PAGE_SIZE)
  
@@ -113,7 +114,11 @@ intel_dsb_get(struct intel_crtc *crtc)
  
  	wakeref = intel_runtime_pm_get(>runtime_pm);
  
-	obj = i915_gem_object_create_internal(i915, DSB_BUF_SIZE);

+   if (HAS_LMEM(i915))
+   obj = i915_gem_object_create_lmem(i915, DSB_BUF_SIZE, 0);
+   else
+   obj = i915_gem_object_create_internal(i915, DSB_BUF_SIZE);
+
if (IS_ERR(obj)) {
DRM_ERROR("Gem object creation failed\n");
goto out;
--
2.24.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 1/3] drm/i915: Introduce encoder->compute_config_late()

2020-01-31 Thread Manasi Navare
From: Ville Syrjälä 

Add an optional secondary encoder state compute hook. This gets
called after the normak .compute_config() has been called for
all the encoders in the state. Thus in the new hook we can rely
on all derived state populated by .compute_config() to be already
set up. Should be useful for MST and port sync master/slave
transcoder selection.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_display.c  | 39 +++
 .../drm/i915/display/intel_display_types.h|  3 ++
 2 files changed, 42 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index c0e5002ce64c..de4ab51216f6 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13416,6 +13416,35 @@ intel_modeset_pipe_config(struct intel_crtc_state 
*pipe_config)
return 0;
 }
 
+static int
+intel_modeset_pipe_config_late(struct intel_crtc_state *crtc_state)
+{
+   struct intel_atomic_state *state =
+   to_intel_atomic_state(crtc_state->uapi.state);
+   struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+   struct drm_connector_state *conn_state;
+   struct drm_connector *connector;
+   int i;
+
+   for_each_new_connector_in_state(>base, connector,
+   conn_state, i) {
+   struct intel_encoder *encoder =
+   to_intel_encoder(conn_state->best_encoder);
+   int ret;
+
+   if (conn_state->crtc != >base ||
+   !encoder->compute_config_late)
+   continue;
+
+   ret = encoder->compute_config_late(encoder, crtc_state,
+  conn_state);
+   if (ret)
+   return ret;
+   }
+
+   return 0;
+}
+
 bool intel_fuzzy_clock_check(int clock1, int clock2)
 {
int diff;
@@ -14817,6 +14846,16 @@ static int intel_atomic_check(struct drm_device *dev,
ret = intel_modeset_pipe_config(new_crtc_state);
if (ret)
goto fail;
+   }
+
+   for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
+   new_crtc_state, i) {
+   if (!needs_modeset(new_crtc_state))
+   continue;
+
+   ret = intel_modeset_pipe_config_late(new_crtc_state);
+   if (ret)
+   goto fail;
 
intel_crtc_check_fastset(old_crtc_state, new_crtc_state);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 33ba93863488..51f0108a6e09 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -140,6 +140,9 @@ struct intel_encoder {
int (*compute_config)(struct intel_encoder *,
  struct intel_crtc_state *,
  struct drm_connector_state *);
+   int (*compute_config_late)(struct intel_encoder *,
+  struct intel_crtc_state *,
+  struct drm_connector_state *);
void (*update_prepare)(struct intel_atomic_state *,
   struct intel_encoder *,
   struct intel_crtc *);
-- 
2.19.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 3/3] drm/i915/dp: Add all tiled and port sync conns to modeset

2020-01-31 Thread Manasi Navare
If one of the synced crtcs needs a full modeset, we need
to make sure all the synced crtcs are forced a full
modeset.

Suggested-by: Ville Syrjälä 
Cc: Ville Syrjälä 
Signed-off-by: Manasi Navare 
---
 drivers/gpu/drm/i915/display/intel_display.c |  88 +
 drivers/gpu/drm/i915/display/intel_dp.c  | 131 ++-
 2 files changed, 131 insertions(+), 88 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index e638543f5f87..709a737638b6 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13123,8 +13123,7 @@ intel_modeset_pipe_config(struct intel_crtc_state 
*pipe_config)
struct drm_i915_private *i915 = to_i915(pipe_config->uapi.crtc->dev);
struct drm_connector *connector;
struct drm_connector_state *connector_state;
-   int base_bpp, ret;
-   int i, tile_group_id = -1, num_tiled_conns = 0;
+   int base_bpp, ret, i;
bool retry = true;
 
pipe_config->cpu_transcoder =
@@ -14559,76 +14558,6 @@ static bool intel_cpu_transcoders_need_modeset(struct 
intel_atomic_state *state,
return false;
 }
 
-static int
-intel_modeset_all_tiles(struct intel_atomic_state *state, int tile_grp_id)
-{
-   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
-   struct drm_connector *connector;
-   struct drm_connector_list_iter conn_iter;
-   int ret = 0;
-
-   drm_connector_list_iter_begin(_priv->drm, _iter);
-   drm_for_each_connector_iter(connector, _iter) {
-   struct drm_connector_state *conn_state;
-   struct drm_crtc_state *crtc_state;
-
-   if (!connector->has_tile ||
-   connector->tile_group->id != tile_grp_id)
-   continue;
-   conn_state = drm_atomic_get_connector_state(>base,
-   connector);
-   if (IS_ERR(conn_state)) {
-   ret =  PTR_ERR(conn_state);
-   break;
-   }
-
-   if (!conn_state->crtc)
-   continue;
-
-   crtc_state = drm_atomic_get_crtc_state(>base,
-  conn_state->crtc);
-   if (IS_ERR(crtc_state)) {
-   ret = PTR_ERR(crtc_state);
-   break;
-   }
-   crtc_state->mode_changed = true;
-   ret = drm_atomic_add_affected_connectors(>base,
-conn_state->crtc);
-   if (ret)
-   break;
-   }
-   drm_connector_list_iter_end(_iter);
-
-   return ret;
-}
-
-static int
-intel_atomic_check_tiled_conns(struct intel_atomic_state *state)
-{
-   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
-   struct drm_connector *connector;
-   struct drm_connector_state *old_conn_state, *new_conn_state;
-   int i, ret;
-
-   if (INTEL_GEN(dev_priv) < 11)
-   return 0;
-
-   /* Is tiled, mark all other tiled CRTCs as needing a modeset */
-   for_each_oldnew_connector_in_state(>base, connector,
-  old_conn_state, new_conn_state, i) {
-   if (!connector->has_tile)
-   continue;
-   if (!intel_connector_needs_modeset(state, connector))
-   continue;
-
-   ret = intel_modeset_all_tiles(state, connector->tile_group->id);
-   if (ret)
-   return ret;
-   }
-
-   return 0;
-}
-
 /**
  * intel_atomic_check - validate state object
  * @dev: drm device
@@ -14656,21 +14585,6 @@ static int intel_atomic_check(struct drm_device *dev,
if (ret)
goto fail;
 
-   /**
-* This check adds all the connectors in current state that belong to
-* the same tile group to a full modeset.
-* This function directly sets the mode_changed to true and we also call
-* drm_atomic_add_affected_connectors(). Hence we are not explicitly
-* calling drm_atomic_helper_check_modeset() after this.
-*
-* Fixme: Handle some corner cases where one of the
-* tiled connectors gets disconnected and tile info is lost but since it
-* was previously synced to other conn, we need to add that to the 
modeset.
-*/
-   ret = intel_atomic_check_tiled_conns(state);
-   if (ret)
-   goto fail;
-
for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
new_crtc_state, i) {
if (!needs_modeset(new_crtc_state)) {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index f4dede6253f8..7eb4b3dbbcb3 100644
--- 

[Intel-gfx] [PATCH 2/3] drm/i915/dp: Compute port sync crtc states post compute_config()

2020-01-31 Thread Manasi Navare
This patch pushes out the computation of master and slave
transcoders in crtc states after encoder's compute_config hook.
This ensures that the assigned master slave crtcs have exact same
mode and timings which is a requirement for Port sync mode
to be enabled.

Suggested-by: Ville Syrjälä 
Cc: Ville Syrjälä 
Signed-off-by: Manasi Navare 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 125 +++
 drivers/gpu/drm/i915/display/intel_display.c | 156 ---
 2 files changed, 125 insertions(+), 156 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index c96f629cddc3..4ec36eb5ce28 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4440,6 +4440,130 @@ static int intel_ddi_compute_config(struct 
intel_encoder *encoder,
return 0;
 }
 
+static bool mode_equal(const struct drm_display_mode *mode1,
+  const struct drm_display_mode *mode2)
+{
+   return drm_mode_match(mode1, mode2,
+ DRM_MODE_MATCH_TIMINGS |
+ DRM_MODE_MATCH_FLAGS |
+ DRM_MODE_MATCH_3D_FLAGS) &&
+   mode1->clock == mode2->clock; /* we want an exact match */
+}
+
+static bool m_n_equal(const struct intel_link_m_n *m_n_1,
+ const struct intel_link_m_n *m_n_2)
+{
+   return m_n_1->tu == m_n_2->tu &&
+   m_n_1->gmch_m == m_n_2->gmch_m &&
+   m_n_1->gmch_n == m_n_2->gmch_n &&
+   m_n_1->link_m == m_n_2->link_m &&
+   m_n_1->link_n == m_n_2->link_n;
+}
+
+static bool crtcs_port_sync_compatible(struct intel_crtc_state *crtc_state1,
+  struct intel_crtc_state *crtc_state2)
+{
+   return crtc_state1->hw.active && crtc_state2->hw.active &&
+   crtc_state1->output_types == crtc_state2->output_types &&
+   crtc_state1->output_format == crtc_state2->output_format &&
+   crtc_state1->lane_count == crtc_state2->lane_count &&
+   crtc_state1->port_clock == crtc_state2->port_clock &&
+   mode_equal(_state1->hw.adjusted_mode,
+  _state2->hw.adjusted_mode) &&
+   m_n_equal(_state1->dp_m_n, _state2->dp_m_n);
+}
+
+static u8
+intel_ddi_compute_port_sync_crtc_state(struct drm_connector *ref_connector,
+  struct intel_crtc_state *ref_crtc_state)
+{
+   struct drm_connector *connector;
+   struct drm_connector_state *conn_state;
+   struct drm_i915_private *dev_priv = 
to_i915(ref_crtc_state->uapi.crtc->dev);
+   struct intel_atomic_state *state =
+   to_intel_atomic_state(ref_crtc_state->uapi.state);
+   struct intel_crtc *ref_crtc = to_intel_crtc(ref_crtc_state->uapi.crtc);
+   u8 transcoders = 0;
+   int i;
+
+   DRM_DEBUG_KMS("for [CRTC:%d:%s]\n",
+ ref_crtc_state->uapi.crtc->base.id,
+ ref_crtc_state->uapi.crtc->name);
+
+   if (INTEL_GEN(dev_priv) < 11)
+   return 0;
+
+   if (!intel_crtc_has_type(ref_crtc_state, INTEL_OUTPUT_DP))
+   return 0;
+
+   for_each_new_connector_in_state(>base, connector, conn_state, i) 
{
+   struct intel_crtc *crtc = to_intel_crtc(conn_state->crtc);
+   struct intel_crtc_state *crtc_state = NULL;
+
+   if (!crtc)
+   continue;
+
+   if (!(connector->has_tile &&
+ connector->tile_group->id ==
+ ref_connector->tile_group->id))
+   continue;
+
+   crtc_state = intel_atomic_get_new_crtc_state(state,
+crtc);
+   if (!crtcs_port_sync_compatible(ref_crtc_state,
+   crtc_state)) {
+   DRM_DEBUG_KMS("[CRTC:%d:%s] and [CRTC:%d:%s] not Port 
Sync Compatible\n",
+ ref_crtc->base.base.id,
+ ref_crtc->base.name,
+ crtc->base.base.id, crtc->base.name);
+   continue;
+   }
+
+   transcoders |= BIT(crtc_state->cpu_transcoder);
+   }
+
+   return transcoders;
+}
+
+static int intel_ddi_compute_config_late(struct intel_encoder *encoder,
+struct intel_crtc_state *crtc_state,
+struct drm_connector_state *conn_state)
+{
+   struct drm_connector *connector = conn_state->connector;
+   struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev);
+   u8 port_sync_transcoders = 0;
+
+   DRM_DEBUG_KMS("[ENCODER:%d:%s] [CRTC:%d:%s]",
+ encoder->base.base.id, encoder->base.name,
+ 

Re: [Intel-gfx] [PATCH] drm/i915/guc: Stop using mutex while sending CTB messages

2020-01-31 Thread Michal Wajdeczko
On Fri, 31 Jan 2020 17:40:12 +0100, Matthew Brost  
 wrote:



On Fri, Jan 31, 2020 at 03:33:55PM +, Chris Wilson wrote:

Quoting Michal Wajdeczko (2020-01-31 14:58:34)

While we are always using CT "send" buffer to send request messages
to GuC, we usually don't ask GuC to use CT "receive" buffer to send
back response messages, since almost all returned data can fit into
reserved bits in status dword inside CT descriptor. However, relying
on data modifications inside CT descriptor requires use of mutex to
allow only single CT request in flight, until we read back that status
dword from the CT descriptor.


Q. do we need the same lock for ct_read() and ct_write()?

Could ct_read() use a lock-free ringbuffer, and then if I've read it
right, you wouldn't have any overlapping spinlock between the interrupt
handler and the rest (thus avoiding the interrupt-off).
-Chris


Agree with Chris, it would nice if ct_read() didn't need a lock. At a  
minimum I

think it needs a different lock than the write path.


two options:
1) reuse gt->irq_lock for ct_read() and use ct->lock for ct_write()
2) define lock as part of ct->ctbs[] for dedicated use by ct_read()/write()

I guess 2 is clearer
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/guc: Stop using mutex while sending CTB messages

2020-01-31 Thread Michal Wajdeczko
On Fri, 31 Jan 2020 16:33:55 +0100, Chris Wilson  
 wrote:



Quoting Michal Wajdeczko (2020-01-31 14:58:34)

While we are always using CT "send" buffer to send request messages
to GuC, we usually don't ask GuC to use CT "receive" buffer to send
back response messages, since almost all returned data can fit into
reserved bits in status dword inside CT descriptor. However, relying
on data modifications inside CT descriptor requires use of mutex to
allow only single CT request in flight, until we read back that status
dword from the CT descriptor.


Q. do we need the same lock for ct_read() and ct_write()?


No. And additionally I missed that ct_read() was already implicitly locked
with gt->irq_lock by gen11_gt_irq_handler and with i915->irq_lock by
guc_enable_communication() - need to fix that too ;(



Could ct_read() use a lock-free ringbuffer, and then if I've read it
right, you wouldn't have any overlapping spinlock between the interrupt
handler and the rest (thus avoiding the interrupt-off).


Not sure if can go lock-free with two callers, will look for gt->irq_lock
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/guc: Stop using mutex while sending CTB messages

2020-01-31 Thread Matthew Brost

On Fri, Jan 31, 2020 at 03:33:55PM +, Chris Wilson wrote:

Quoting Michal Wajdeczko (2020-01-31 14:58:34)

While we are always using CT "send" buffer to send request messages
to GuC, we usually don't ask GuC to use CT "receive" buffer to send
back response messages, since almost all returned data can fit into
reserved bits in status dword inside CT descriptor. However, relying
on data modifications inside CT descriptor requires use of mutex to
allow only single CT request in flight, until we read back that status
dword from the CT descriptor.


Q. do we need the same lock for ct_read() and ct_write()?

Could ct_read() use a lock-free ringbuffer, and then if I've read it
right, you wouldn't have any overlapping spinlock between the interrupt
handler and the rest (thus avoiding the interrupt-off).
-Chris


Agree with Chris, it would nice if ct_read() didn't need a lock. At a minimum I
think it needs a different lock than the write path.

Matt 
___

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/gen7: Clear all EU/L3 residual contexts

2020-01-31 Thread Bloomfield, Jon
Reducing audience as this series is of high interest externally.

I fully agree with Joonas' suggestion here, and we have been looking at doing 
just that. But can we iterate as a follow up patch series? Putting in the infra 
to support igt assembly from source will take a little time (igt assembler 
doesn't like the source right now, so it looks like it will need updating), and 
we are under pressure to get this security fix out.

Jon

> -Original Message-
> From: Joonas Lahtinen 
> Sent: Friday, January 31, 2020 1:52 AM
> To: Abodunrin, Akeem G ; Wilson, Chris P
> ; Phillips, D Scott ;
> Vetter, Daniel ; Stewart, David C
> ; dri-de...@lists.freedesktop.org; Balestrieri,
> Francesco ; intel-gfx@lists.freedesktop.org;
> Nikula, Jani ; Bloomfield, Jon
> ; Kuoppala, Mika ;
> Aran, Omer ; Pathi, Pragyansri
> ; Kumar Valsan, Prathap
> ; Dutt, Sudeep ;
> Luck, Tony 
> Subject: Re: [PATCH 2/2] drm/i915/gen7: Clear all EU/L3 residual contexts
> 
> Quoting Akeem G Abodunrin (2020-01-30 18:57:21)
> > From: Prathap Kumar Valsan 
> >
> > On gen7 and gen7.5 devices, there could be leftover data residuals in
> > EU/L3 from the retiring context. This patch introduces workaround to clear
> > that residual contexts, by submitting a batch buffer with dedicated HW
> > context to the GPU with ring allocation for each context switching.
> >
> > This security mitigation change does not trigger any performance
> > regression. Performance is on par with current mainline/drm-tip.
> >
> > Signed-off-by: Mika Kuoppala 
> > Signed-off-by: Prathap Kumar Valsan 
> > Signed-off-by: Akeem G Abodunrin 
> > Cc: Chris Wilson 
> > Cc: Balestrieri Francesco 
> > Cc: Bloomfield Jon 
> > Cc: Dutt Sudeep 
> > ---
> >  drivers/gpu/drm/i915/Makefile |   1 +
> >  drivers/gpu/drm/i915/gt/gen7_renderclear.c| 535 ++
> >  drivers/gpu/drm/i915/gt/gen7_renderclear.h|  15 +
> >  drivers/gpu/drm/i915/gt/intel_gpu_commands.h  |  17 +-
> >  .../gpu/drm/i915/gt/intel_ring_submission.c   |   3 +-
> >  drivers/gpu/drm/i915/i915_utils.h |   5 +
> >  6 files changed, 572 insertions(+), 4 deletions(-)
> >  create mode 100644 drivers/gpu/drm/i915/gt/gen7_renderclear.c
> >  create mode 100644 drivers/gpu/drm/i915/gt/gen7_renderclear.h
> >
> > diff --git a/drivers/gpu/drm/i915/Makefile
> b/drivers/gpu/drm/i915/Makefile
> > index 3c88d7d8c764..f96bae664a03 100644
> > --- a/drivers/gpu/drm/i915/Makefile
> > +++ b/drivers/gpu/drm/i915/Makefile
> > @@ -78,6 +78,7 @@ gt-y += \
> > gt/debugfs_gt.o \
> > gt/debugfs_gt_pm.o \
> > gt/gen6_ppgtt.o \
> > +   gt/gen7_renderclear.o \
> > gt/gen8_ppgtt.o \
> > gt/intel_breadcrumbs.o \
> > gt/intel_context.o \
> > diff --git a/drivers/gpu/drm/i915/gt/gen7_renderclear.c
> b/drivers/gpu/drm/i915/gt/gen7_renderclear.c
> > new file mode 100644
> > index ..a6f5f1602e33
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/gt/gen7_renderclear.c
> > @@ -0,0 +1,535 @@
> > +// SPDX-License-Identifier: MIT
> > +/*
> > + * Copyright © 2019 Intel Corporation
> > + */
> > +
> > +#include "gen7_renderclear.h"
> > +#include "i915_drv.h"
> > +#include "i915_utils.h"
> > +#include "intel_gpu_commands.h"
> > +
> > +#define MAX_URB_ENTRIES 64
> > +#define STATE_SIZE (4 * 1024)
> > +#define GT3_INLINE_DATA_DELAYS 0x1E00
> > +#define batch_advance(Y, CS) GEM_BUG_ON((Y)->end != (CS))
> > +
> > +/*
> > + * Media CB Kernel for gen7 devices
> > + * TODO: Add comments to kernel, indicating what each array of hex does
> or
> > + * include header file, which has assembly source and support in igt to be
> > + * able to generate kernel in this same format
> > + */
> 
> Having the original source code for the kernels in IGT is the
> best way to proceed. The kernels should also be split into
> separate files which can be generated from IGT and copied
> over as-is for easy verification.
> 
> Regards, Joonas
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/guc: Introduce guc_is_ready

2020-01-31 Thread Chris Wilson
Quoting Michal Wajdeczko (2020-01-31 15:37:06)
> We already have guc_is_running function, but it only reflects
> firmware status, while to fully use GuC we need to know if we've
> already established communication with it.
> 
> v2: also s/intel_guc_is_running/intel_guc_is_fw_running (Chris)
> 
> Signed-off-by: Michal Wajdeczko 
> Cc: Daniele Ceraolo Spurio 
> Cc: Chris Wilson 

It's a small change, but it does read much better.
Reviewed-by: Chris Wilson 

(I hope the crux of the change is ok :)
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH v2] drm/i915/guc: Introduce guc_is_ready

2020-01-31 Thread Michal Wajdeczko
We already have guc_is_running function, but it only reflects
firmware status, while to fully use GuC we need to know if we've
already established communication with it.

v2: also s/intel_guc_is_running/intel_guc_is_fw_running (Chris)

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/uc/intel_guc.h|  7 ++-
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c |  2 +-
 drivers/gpu/drm/i915/gt/uc/intel_uc.c | 10 +-
 drivers/gpu/drm/i915/i915_debugfs.c   |  2 +-
 drivers/gpu/drm/i915/i915_drv.h   |  2 +-
 5 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.h 
b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
index 910d49590068..7ca9e5159f05 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
@@ -148,11 +148,16 @@ static inline bool intel_guc_is_enabled(struct intel_guc 
*guc)
return intel_uc_fw_is_enabled(>fw);
 }
 
-static inline bool intel_guc_is_running(struct intel_guc *guc)
+static inline bool intel_guc_is_fw_running(struct intel_guc *guc)
 {
return intel_uc_fw_is_running(>fw);
 }
 
+static inline bool intel_guc_is_ready(struct intel_guc *guc)
+{
+   return intel_guc_is_fw_running(guc) && intel_guc_ct_enabled(>ct);
+}
+
 static inline int intel_guc_sanitize(struct intel_guc *guc)
 {
intel_uc_fw_sanitize(>fw);
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
index d84812683364..11742fca0e9e 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
@@ -279,7 +279,7 @@ void intel_guc_ct_disable(struct intel_guc_ct *ct)
 
ct->enabled = false;
 
-   if (intel_guc_is_running(guc)) {
+   if (intel_guc_is_fw_running(guc)) {
ct_deregister_buffer(ct, INTEL_GUC_CT_BUFFER_TYPE_SEND);
ct_deregister_buffer(ct, INTEL_GUC_CT_BUFFER_TYPE_RECV);
}
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c 
b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
index 64934a876a50..affc4d6f9ead 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
@@ -505,7 +505,7 @@ static void __uc_fini_hw(struct intel_uc *uc)
 {
struct intel_guc *guc = >guc;
 
-   if (!intel_guc_is_running(guc))
+   if (!intel_guc_is_fw_running(guc))
return;
 
if (intel_uc_supports_guc_submission(uc))
@@ -527,7 +527,7 @@ void intel_uc_reset_prepare(struct intel_uc *uc)
 {
struct intel_guc *guc = >guc;
 
-   if (!intel_guc_is_running(guc))
+   if (!intel_guc_is_ready(guc))
return;
 
guc_disable_communication(guc);
@@ -539,7 +539,7 @@ void intel_uc_runtime_suspend(struct intel_uc *uc)
struct intel_guc *guc = >guc;
int err;
 
-   if (!intel_guc_is_running(guc))
+   if (!intel_guc_is_ready(guc))
return;
 
err = intel_guc_suspend(guc);
@@ -554,7 +554,7 @@ void intel_uc_suspend(struct intel_uc *uc)
struct intel_guc *guc = >guc;
intel_wakeref_t wakeref;
 
-   if (!intel_guc_is_running(guc))
+   if (!intel_guc_is_ready(guc))
return;
 
with_intel_runtime_pm(uc_to_gt(uc)->uncore->rpm, wakeref)
@@ -566,7 +566,7 @@ static int __uc_resume(struct intel_uc *uc, bool 
enable_communication)
struct intel_guc *guc = >guc;
int err;
 
-   if (!intel_guc_is_running(guc))
+   if (!intel_guc_is_fw_running(guc))
return 0;
 
/* Make sure we enable communication if and only if it's disabled */
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index 2d76138c349f..e329503b68c2 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1914,7 +1914,7 @@ static int i915_guc_log_relay_open(struct inode *inode, 
struct file *file)
struct intel_guc *guc = >gt.uc.guc;
struct intel_guc_log *log = >log;
 
-   if (!intel_guc_is_running(guc))
+   if (!intel_guc_is_ready(guc))
return -ENODEV;
 
file->private_data = log;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a8a08c63278e..404699382ac6 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2033,7 +2033,7 @@ i915_coherent_map_type(struct drm_i915_private *i915)
 static inline bool intel_guc_submission_is_enabled(struct intel_guc *guc)
 {
return intel_guc_is_submission_supported(guc) &&
-   intel_guc_is_running(guc);
+  intel_guc_is_ready(guc);
 }
 
 #endif
-- 
2.19.2

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/guc: Stop using mutex while sending CTB messages

2020-01-31 Thread Chris Wilson
Quoting Michal Wajdeczko (2020-01-31 14:58:34)
> While we are always using CT "send" buffer to send request messages
> to GuC, we usually don't ask GuC to use CT "receive" buffer to send
> back response messages, since almost all returned data can fit into
> reserved bits in status dword inside CT descriptor. However, relying
> on data modifications inside CT descriptor requires use of mutex to
> allow only single CT request in flight, until we read back that status
> dword from the CT descriptor.

Q. do we need the same lock for ct_read() and ct_write()?

Could ct_read() use a lock-free ringbuffer, and then if I've read it
right, you wouldn't have any overlapping spinlock between the interrupt
handler and the rest (thus avoiding the interrupt-off).
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [RFC PATCH v2] drm/i915: Never allow userptr into the new mapping types

2020-01-31 Thread Janusz Krzysztofik
Commit 4f2a572eda67 ("drm/i915/userptr: Never allow userptr into the
mappable GGTT") made I915_GEM_MMAP_GTT IOCTLs to fail when attempted
on a userptr object in order to protect from a lockdep splat.  Later
on, new mapping types were introduced by commit cc662126b413
("drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET").  Those new mapping
types suffer from the same lockdep splat issue but they now succeed
when tried on top of a userptr object.  Fix it.

v2: Don't play with the -ENODEV driver response (Chris)

Signed-off-by: Janusz Krzysztofik 
Cc: Abdiel Janulgue 
Cc: Chris Wilson 
---
 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 3 +--
 drivers/gpu/drm/i915/gem/i915_gem_object.h   | 4 ++--
 drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 2 +-
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c  | 2 +-
 drivers/gpu/drm/i915/i915_gem.c  | 2 +-
 5 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c 
b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index 879fff8adc48..2a3b428a103e 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -553,8 +553,7 @@ __assign_mmap_offset(struct drm_file *file,
if (!obj)
return -ENOENT;
 
-   if (mmap_type == I915_MMAP_TYPE_GTT &&
-   i915_gem_object_never_bind_ggtt(obj)) {
+   if (i915_gem_object_never_mmap(obj)) {
err = -ENODEV;
goto out;
}
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h 
b/drivers/gpu/drm/i915/gem/i915_gem_object.h
index 858f8bf49a04..3fd0d6e9eec8 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h
@@ -185,9 +185,9 @@ i915_gem_object_is_proxy(const struct drm_i915_gem_object 
*obj)
 }
 
 static inline bool
-i915_gem_object_never_bind_ggtt(const struct drm_i915_gem_object *obj)
+i915_gem_object_never_mmap(const struct drm_i915_gem_object *obj)
 {
-   return i915_gem_object_type_has(obj, I915_GEM_OBJECT_NO_GGTT);
+   return i915_gem_object_type_has(obj, I915_GEM_OBJECT_NO_MMAP);
 }
 
 static inline bool
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h 
b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
index 88e268633fdc..bb66d44fc1c4 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
@@ -34,7 +34,7 @@ struct drm_i915_gem_object_ops {
 #define I915_GEM_OBJECT_HAS_IOMEM  BIT(1)
 #define I915_GEM_OBJECT_IS_SHRINKABLE  BIT(2)
 #define I915_GEM_OBJECT_IS_PROXY   BIT(3)
-#define I915_GEM_OBJECT_NO_GGTTBIT(4)
+#define I915_GEM_OBJECT_NO_MMAPBIT(4)
 #define I915_GEM_OBJECT_ASYNC_CANCEL   BIT(5)
 
/* Interface between the GEM object and its backing storage.
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c 
b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index e5558af111e2..da79cc9e57bf 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -703,7 +703,7 @@ i915_gem_userptr_dmabuf_export(struct drm_i915_gem_object 
*obj)
 static const struct drm_i915_gem_object_ops i915_gem_userptr_ops = {
.flags = I915_GEM_OBJECT_HAS_STRUCT_PAGE |
 I915_GEM_OBJECT_IS_SHRINKABLE |
-I915_GEM_OBJECT_NO_GGTT |
+I915_GEM_OBJECT_NO_MMAP |
 I915_GEM_OBJECT_ASYNC_CANCEL,
.get_pages = i915_gem_userptr_get_pages,
.put_pages = i915_gem_userptr_put_pages,
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 9ddcf17230e6..334a578ce85f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -923,7 +923,7 @@ i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
struct i915_vma *vma;
int ret;
 
-   if (i915_gem_object_never_bind_ggtt(obj))
+   if (i915_gem_object_never_mmap(obj))
return ERR_PTR(-ENODEV);
 
if (flags & PIN_MAPPABLE &&
-- 
2.21.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v16 6/7] drm/i915: Protect intel_dbuf_slices_update with mutex

2020-01-31 Thread Ville Syrjälä
On Tue, Jan 28, 2020 at 03:33:11PM -0800, Matt Roper wrote:
> On Fri, Jan 24, 2020 at 10:44:55AM +0200, Stanislav Lisovskiy wrote:
> > Now using power_domain mutex to protect from race condition, which
> > can occur because intel_dbuf_slices_update might be running in
> > parallel to gen9_dc_off_power_well_enable being called from
> > intel_dp_detect for instance, which causes assertion triggered by
> > race condition, as gen9_assert_dbuf_enabled might preempt this
> > when registers were already updated, while dev_priv was not.
> 
> I may be overlooking something, but I think your next patch already
> takes care of this by ensuring we only do dbuf updates during modesets.
> We already had POWER_DOMAIN_MODESET in our various DC_OFF_POWER_DOMAINS
> definitions which would ensure that the "DC off" power well is enabled
> (and DC states themselves are disabled) for the entire duration of the
> modeset process.

Hmm. That's assuming we only do the dbuf assert from the dc off
power well hook. Can't remember if that's the case. If that's not
the only place then we probably miss the lock somewhere else too.

> 
> If we need this, I'm not sure whether it's a good idea to use
> power_domains->lock rather than a new, dedicated lock.  Anything that
> touches power domains in any manner grabs this lock, even though we only
> really care about it for stopping races with the specific "DC off" power
> well.

Separate lock feels a bit overkill to me for something small
like this.

> 
> Also, if we bisect to the point right before these last two patches,
> don't we have a problem since there's a point in the git history where
> we potentially face a race?

Yeah should be earlier in the series I guess. If we need it at all,
which as you point out maybe we don't with the state->modeset checks.
Though maybe we want to get rid of that state->modeset dependency.
I *think* we should start using the global state stuff for dbuf
management, but haven't really looked at the details to figure out
how to organize it in the end. So at that point we may not anymore
be holding the dc off reference (although one might argue that we
should always hold that for dbuf programming so the "wait for it
to enable" thing can't be perturbed by dc transitions).

Anyways for now this seems fine by me
Reviewed-by: Ville Syrjälä 

> 
> 
> Matt
> 
> > 
> > Signed-off-by: Stanislav Lisovskiy 
> > ---
> >  drivers/gpu/drm/i915/display/intel_display_power.c | 12 
> >  1 file changed, 12 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c 
> > b/drivers/gpu/drm/i915/display/intel_display_power.c
> > index 96b38252578b..99ddc21e004c 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > @@ -4404,12 +4404,22 @@ void icl_dbuf_slices_update(struct drm_i915_private 
> > *dev_priv,
> >  {
> > int i;
> > int max_slices = INTEL_INFO(dev_priv)->num_supported_dbuf_slices;
> > +   struct i915_power_domains *power_domains = _priv->power_domains;
> >  
> > WARN(hweight8(req_slices) > max_slices,
> >  "Invalid number of dbuf slices requested\n");
> >  
> > DRM_DEBUG_KMS("Updating dbuf slices to 0x%x\n", req_slices);
> >  
> > +   /*
> > +* Might be running this in parallel to gen9_dc_off_power_well_enable
> > +* being called from intel_dp_detect for instance,
> > +* which causes assertion triggered by race condition,
> > +* as gen9_assert_dbuf_enabled might preempt this when registers
> > +* were already updated, while dev_priv was not.
> > +*/
> > +   mutex_lock(_domains->lock);
> > +
> > for (i = 0; i < max_slices; i++) {
> > intel_dbuf_slice_set(dev_priv,
> >  _DBUF_CTL_S(i),
> > @@ -4417,6 +4427,8 @@ void icl_dbuf_slices_update(struct drm_i915_private 
> > *dev_priv,
> > }
> >  
> > dev_priv->enabled_dbuf_slices_mask = req_slices;
> > +
> > +   mutex_unlock(_domains->lock);
> >  }
> >  
> >  static void icl_dbuf_enable(struct drm_i915_private *dev_priv)
> > -- 
> > 2.24.1.485.gad05a3d8e5
> > 
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> VTT-OSGC Platform Enablement
> Intel Corporation
> (916) 356-2795

-- 
Ville Syrjälä
Intel
___
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/dsb: Enable lmem for dsb

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/dsb: Enable lmem for dsb
URL   : https://patchwork.freedesktop.org/series/72818/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7850 -> Patchwork_16355


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_16355:

### IGT changes ###

 Suppressed 

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_selftest@live_execlists:
- {fi-tgl-u}: [PASS][1] -> [DMESG-FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-tgl-u/igt@i915_selftest@live_execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-tgl-u/igt@i915_selftest@live_execlists.html

  
Known issues


  Here are the changes found in Patchwork_16355 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_close_race@basic-threads:
- fi-hsw-peppy:   [PASS][3] -> [TIMEOUT][4] ([fdo#112271] / [i915#1084])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-hsw-peppy/igt@gem_close_r...@basic-threads.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-hsw-peppy/igt@gem_close_r...@basic-threads.html

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][5] -> [DMESG-FAIL][6] ([i915#563])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][7] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_store@basic-all:
- fi-apl-guc: [TIMEOUT][9] ([fdo#112271]) -> [PASS][10] +8 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-apl-guc/igt@gem_exec_st...@basic-all.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-apl-guc/igt@gem_exec_st...@basic-all.html

  * igt@gem_tiled_fence_blits@basic:
- fi-apl-guc: [SKIP][11] ([fdo#109271]) -> [PASS][12] +47 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-apl-guc/igt@gem_tiled_fence_bl...@basic.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-apl-guc/igt@gem_tiled_fence_bl...@basic.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][13] ([fdo#111407]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
  {name}: This element is suppressed. This means it is ignored when computing
  the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (43 -> 44)
--

  Additional (10): fi-bdw-5557u fi-bsw-n3050 fi-byt-j1900 fi-skl-6770hq 
fi-whl-u fi-gdg-551 fi-ivb-3770 fi-elk-e7500 fi-kbl-r fi-snb-2600 
  Missing(9): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ilk-650 fi-kbl-7560u fi-tgl-y fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7850 -> Patchwork_16355

  CI-20190529: 20190529
  CI_DRM_7850: ae66f2257648ce52c51298506977baa32873c9d5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5407: a9d69f51dadbcbc53527671f87572d05c3370cba @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16355: 1dd958225f8bd0be5aec69f0ff5bc3c942607f26 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

1dd958225f8b drm/i915/dsb: Enable lmem for dsb

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16355/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v16 7/7] drm/i915: Update dbuf slices only with full modeset

2020-01-31 Thread Ville Syrjälä
On Tue, Jan 28, 2020 at 03:37:06PM -0800, Matt Roper wrote:
> On Fri, Jan 24, 2020 at 10:44:56AM +0200, Stanislav Lisovskiy wrote:
> > During full modeset, global state(i.e dev_priv) is protected
> > by locking the crtcs in state, otherwise global state is not
> > serialized. Also if it is not a full modeset, we anyway
> > don't need to change DBuf slice configuration as Pipe configuration
> > doesn't change.
> 
> Looks correct, but don't we need this earlier so that we don't have a
> bad bisection point in the git history (assuming we rely on this rather
> than the extra locking from the previous patch to cover the DC off
> race)?

Could perhaps just squash into the patch that moves these calls here.
Or move just after that patch in the series.

Reviewed-by: Ville Syrjälä 

> 
> 
> Matt
> 
> > 
> > Signed-off-by: Stanislav Lisovskiy 
> > ---
> >  drivers/gpu/drm/i915/display/intel_display.c | 6 --
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> > b/drivers/gpu/drm/i915/display/intel_display.c
> > index 1c957df5c28c..888a9e94032e 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -15373,7 +15373,8 @@ static void intel_atomic_commit_tail(struct 
> > intel_atomic_state *state)
> > intel_encoders_update_prepare(state);
> >  
> > /* Enable all new slices, we might need */
> > -   icl_dbuf_slice_pre_update(state);
> > +   if (state->modeset)
> > +   icl_dbuf_slice_pre_update(state);
> >  
> > /* Now enable the clocks, plane, pipe, and connectors that we set up. */
> > dev_priv->display.commit_modeset_enables(state);
> > @@ -15432,7 +15433,8 @@ static void intel_atomic_commit_tail(struct 
> > intel_atomic_state *state)
> > }
> >  
> > /* Disable all slices, we don't need */
> > -   icl_dbuf_slice_post_update(state);
> > +   if (state->modeset)
> > +   icl_dbuf_slice_post_update(state);
> >  
> > for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state, 
> > new_crtc_state, i) {
> > intel_post_plane_update(state, crtc);
> > -- 
> > 2.24.1.485.gad05a3d8e5
> > 
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> VTT-OSGC Platform Enablement
> Intel Corporation
> (916) 356-2795

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [RFC PATCH 1/1] drm/i915: Never allow userptr into the new mapping types

2020-01-31 Thread Janusz Krzysztofik
On Friday, January 31, 2020 3:32:21 PM CET Chris Wilson wrote:
> Quoting Janusz Krzysztofik (2020-01-31 13:20:37)
> > Commit 4f2a572eda67 ("drm/i915/userptr: Never allow userptr into the
> > mappable GGTT") made I915_GEM_MMAP_GTT IOCTLs to fail when atepmted
> > on a userptr object in order to protect from a lockdep splat.  Later
> > on, new mapping types were introduced by commit cc662126b413
> > ("drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET").  Those new mapping
> > types suffer from the same lockdep splat issue but they now succeed
> > when tried on top of a userptr object.  Fix it.
> > 
> > While being at it, return -EINVAL which seems to better reflect the
> > reason for the failure than -ENODEV.
> 
> No. It is not a user error, it's a failure to implement support for it,
> so we parcel it off as an incompatible device.

How about -ENOTSUP?

Thanks,
Janusz

> -Chris
> 




___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 02/17] drm/i915: Move linetime wms into the crtc state

2020-01-31 Thread Ville Syrjälä
On Mon, Jan 20, 2020 at 07:47:12PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> The linetime watermarks really have very little in common with the
> plane watermarks. It looks to be cleaner to simply track them in
> the crtc_state and program them from the normal modeset/fastset
> paths.
> 
> The only dark cloud comes from the fact that the register is
> still supposedly single buffered. So in theory it might still
> need some form of two stage programming. Note that even though
> HSW/BDWhave two stage programming we never computed any special
> intermediate values for the linetime watermarks, and on SKL+
> we don't even have the two stage stuff plugged in since everything
> else is double buffered. So let's assume it's all fine and
> continue doing what we've been doing.
> 
> Actually on HSW/BDW the value should not even change without
> a full modeset since it doesn't account for pfit downscaling.
> Thus only fastboot might be affected. But on SKL+ the pfit
> scaling factor is take into consideration so the value may
> change during any fastset.
> 
> As a bonus we'll plug this thing into the state
> checker/dump now.
> 
> v2: Rebase due to bigjoiner prep
> v2: Only compute ips linetime for IPS capable pipes.
> Bspec says the register values is ignored for other
> pipes, but in fact it can't even be written so the
> state checker becomes unhappy if we don't compute
> it as zero.
> 
> Cc: Stanislav Lisovskiy 
> Signed-off-by: Ville Syrjälä 

Extracted Stan's r-b from the trybot list (whoops) and pushed the lot:
https://lists.freedesktop.org/archives/intel-gfx-trybot/2020-January/086561.html

Thanks for the reviews.

As Imre pointed out there some further docs/function naming improvements
should probably be done to make the thing a bit less confusing. I'll
look at that as a followup.

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/selftests: Also wait for the scratch buffer to be bound

2020-01-31 Thread Mika Kuoppala
Chris Wilson  writes:

> Since PIN_GLOBAL is no longer guaranteed to be synchronous, we must no
> forget to include a wait-for-vma prior to execution.

Dunno if we got em all, we soon know.

Cried for helper but lets move first,

Reviewed-by: Mika Kuoppala 

>
> Signed-off-by: Chris Wilson 
> ---
>  drivers/gpu/drm/i915/gt/intel_workarounds.c   | 10 ++
>  drivers/gpu/drm/i915/gt/selftest_lrc.c| 33 +++
>  .../gpu/drm/i915/gt/selftest_workarounds.c|  9 +
>  3 files changed, 52 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
> b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 5a7db279f702..8d7c3191137c 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -1612,6 +1612,16 @@ static int engine_wa_list_verify(struct intel_context 
> *ce,
>   goto err_vma;
>   }
>  
> + i915_vma_lock(vma);
> + err = i915_request_await_object(rq, vma->obj, true);
> + if (err == 0)
> + err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE);
> + i915_vma_unlock(vma);
> + if (err) {
> + i915_request_add(rq);
> + goto err_vma;
> + }
> +
>   err = wa_list_srm(rq, wal, vma);
>   if (err)
>   goto err_vma;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
> b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> index f5214a374fb7..0efb46665667 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> @@ -734,6 +734,10 @@ static int live_timeslice_preempt(void *arg)
>   if (err)
>   goto err_map;
>  
> + err = i915_vma_sync(vma);
> + if (err)
> + goto err_pin;
> +
>   for_each_prime_number_from(count, 1, 16) {
>   struct intel_engine_cs *engine;
>   enum intel_engine_id id;
> @@ -827,6 +831,10 @@ static int live_timeslice_queue(void *arg)
>   if (err)
>   goto err_map;
>  
> + err = i915_vma_sync(vma);
> + if (err)
> + goto err_unpin;
> +
>   for_each_engine(engine, gt, id) {
>   struct i915_sched_attr attr = {
>   .priority = I915_USER_PRIORITY(I915_PRIORITY_MAX),
> @@ -913,6 +921,7 @@ static int live_timeslice_queue(void *arg)
>   break;
>   }
>  
> +err_unpin:
>   i915_vma_unpin(vma);
>  err_map:
>   i915_gem_object_unpin_map(obj);
> @@ -971,6 +980,10 @@ static int live_busywait_preempt(void *arg)
>   if (err)
>   goto err_map;
>  
> + err = i915_vma_sync(vma);
> + if (err)
> + goto err_vma;
> +
>   for_each_engine(engine, gt, id) {
>   struct i915_request *lo, *hi;
>   struct igt_live_test t;
> @@ -3204,6 +3217,10 @@ static int preserved_virtual_engine(struct intel_gt 
> *gt,
>   if (IS_ERR(scratch))
>   return PTR_ERR(scratch);
>  
> + err = i915_vma_sync(scratch);
> + if (err)
> + goto out_scratch;
> +
>   ve = intel_execlists_create_virtual(siblings, nsibling);
>   if (IS_ERR(ve)) {
>   err = PTR_ERR(ve);
> @@ -4030,8 +4047,16 @@ static int __live_lrc_state(struct intel_engine_cs 
> *engine,
>   *cs++ = i915_ggtt_offset(scratch) + RING_TAIL_IDX * sizeof(u32);
>   *cs++ = 0;
>  
> + i915_vma_lock(scratch);
> + err = i915_request_await_object(rq, scratch->obj, true);
> + if (!err)
> + err = i915_vma_move_to_active(scratch, rq, EXEC_OBJECT_WRITE);
> + i915_vma_unlock(scratch);
> +
>   i915_request_get(rq);
>   i915_request_add(rq);
> + if (err)
> + goto err_rq;
>  
>   intel_engine_flush_submission(engine);
>   expected[RING_TAIL_IDX] = ce->ring->tail;
> @@ -4166,8 +4191,16 @@ static int __live_gpr_clear(struct intel_engine_cs 
> *engine,
>   *cs++ = 0;
>   }
>  
> + i915_vma_lock(scratch);
> + err = i915_request_await_object(rq, scratch->obj, true);
> + if (!err)
> + err = i915_vma_move_to_active(scratch, rq, EXEC_OBJECT_WRITE);
> + i915_vma_unlock(scratch);
> +
>   i915_request_get(rq);
>   i915_request_add(rq);
> + if (err)
> + goto err_rq;
>  
>   if (i915_request_wait(rq, 0, HZ / 5) < 0) {
>   err = -ETIME;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c 
> b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> index ac1921854cbf..5ed323254ee1 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> @@ -583,6 +583,15 @@ static int check_dirty_whitelist(struct intel_context 
> *ce)
>   if (err)
>   goto err_request;
>  
> + i915_vma_lock(scratch);
> + err = i915_request_await_object(rq, scratch->obj, true);
> + if (err == 0)
> + err = i915_vma_move_to_active(scratch, rq,
> + 

[Intel-gfx] [PATCH] drm/i915/guc: Stop using mutex while sending CTB messages

2020-01-31 Thread Michal Wajdeczko
While we are always using CT "send" buffer to send request messages
to GuC, we usually don't ask GuC to use CT "receive" buffer to send
back response messages, since almost all returned data can fit into
reserved bits in status dword inside CT descriptor. However, relying
on data modifications inside CT descriptor requires use of mutex to
allow only single CT request in flight, until we read back that status
dword from the CT descriptor.

But some H2G actions (like AUTHENTICATE_HUC, and more to come) are
like one-way requests for which we don't care about immediate status,
since we will use a different way to confirm that given action was
completed (ie. HUC_STATUS reg is used to verify HuC authentication).

If we ask GuC to always send response messages over "receive" buffer
for all requests for which we care about their status, then we can
use CT descriptor option only for our new one-way requests, for which
status can be temporary ignored.

Since we only need to protect CT descriptor during reading/writing
from the command buffer, we can drop mutex and switch to spinlock.

Signed-off-by: Michal Wajdeczko 
Cc: Chris Wilson 
Cc: Daniele Ceraolo Spurio 
Cc: John Harrison 
Cc: Matthew Brost 
---
 drivers/gpu/drm/i915/gt/uc/intel_guc.c|   2 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 147 --
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h |   3 +
 3 files changed, 57 insertions(+), 95 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc.c
index c4c1523da7a6..d5938c1d44a2 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.c
@@ -519,7 +519,7 @@ int intel_guc_sample_forcewake(struct intel_guc *guc)
 int intel_guc_auth_huc(struct intel_guc *guc, u32 rsa_offset)
 {
u32 action[] = {
-   INTEL_GUC_ACTION_AUTHENTICATE_HUC,
+   INTEL_GUC_ACTION_AUTHENTICATE_HUC | GUC_SEND_FLAG_NO_RESPONSE,
rsa_offset
};
 
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
index d84812683364..760e03cc2bad 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
@@ -41,6 +41,7 @@ static void ct_incoming_request_worker_func(struct 
work_struct *w);
  */
 void intel_guc_ct_init_early(struct intel_guc_ct *ct)
 {
+   spin_lock_init(>lock);
spin_lock_init(>requests.lock);
INIT_LIST_HEAD(>requests.pending);
INIT_LIST_HEAD(>requests.incoming);
@@ -88,13 +89,6 @@ static void guc_ct_buffer_desc_init(struct 
guc_ct_buffer_desc *desc,
desc->owner = CTB_OWNER_HOST;
 }
 
-static void guc_ct_buffer_desc_reset(struct guc_ct_buffer_desc *desc)
-{
-   desc->head = 0;
-   desc->tail = 0;
-   desc->is_in_error = 0;
-}
-
 static int guc_action_register_ct_buffer(struct intel_guc *guc,
 u32 desc_addr,
 u32 type)
@@ -317,6 +311,7 @@ static int ct_write(struct intel_guc_ct *ct,
 {
struct intel_guc_ct_buffer *ctb = >ctbs[CTB_SEND];
struct guc_ct_buffer_desc *desc = ctb->desc;
+   u32 action_code = action[0] & GUC_CT_MSG_ACTION_MASK;
u32 head = desc->head;
u32 tail = desc->tail;
u32 size = desc->size;
@@ -325,6 +320,8 @@ static int ct_write(struct intel_guc_ct *ct,
u32 *cmds = ctb->cmds;
unsigned int i;
 
+   lockdep_assert_held(>lock);
+
if (unlikely(desc->is_in_error))
return -EPIPE;
 
@@ -359,7 +356,7 @@ static int ct_write(struct intel_guc_ct *ct,
header = (len << GUC_CT_MSG_LEN_SHIFT) |
 (GUC_CT_MSG_WRITE_FENCE_TO_DESC) |
 (want_response ? GUC_CT_MSG_SEND_STATUS : 0) |
-(action[0] << GUC_CT_MSG_ACTION_SHIFT);
+(action_code << GUC_CT_MSG_ACTION_SHIFT);
 
CT_DEBUG(ct, "writing %*ph %*ph %*ph\n",
 4, , 4, , 4 * (len - 1), [1]);
@@ -387,62 +384,11 @@ static int ct_write(struct intel_guc_ct *ct,
return -EPIPE;
 }
 
-/**
- * wait_for_ctb_desc_update - Wait for the CT buffer descriptor update.
- * @desc:  buffer descriptor
- * @fence: response fence
- * @status:placeholder for status
- *
- * Guc will update CT buffer descriptor with new fence and status
- * after processing the command identified by the fence. Wait for
- * specified fence and then read from the descriptor status of the
- * command.
- *
- * Return:
- * *   0 response received (status is valid)
- * *   -ETIMEDOUT no response within hardcoded timeout
- * *   -EPROTO no response, CT buffer is in error
- */
-static int wait_for_ctb_desc_update(struct guc_ct_buffer_desc *desc,
-   u32 fence,
-   u32 *status)
-{
-   int err;
-
-   /*
-* Fast commands should complete in less than 10us, so sample quickly
-* up to that length of 

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsb: Enable lmem for dsb

2020-01-31 Thread Patchwork
== Series Details ==

Series: drm/i915/dsb: Enable lmem for dsb
URL   : https://patchwork.freedesktop.org/series/72818/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
1dd958225f8b drm/i915/dsb: Enable lmem for dsb
-:6: WARNING:TYPO_SPELLING: 'memeory' may be misspelled - perhaps 'memory'?
#6: 
If lmem is supported DSB should use local memeory instead

total: 0 errors, 1 warnings, 0 checks, 19 lines checked

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [RFC PATCH i-g-t 1/1] tests/gem_mmap_offset: Exercise mapping to userptr

2020-01-31 Thread Janusz Krzysztofik
On Friday, January 31, 2020 3:37:05 PM CET Chris Wilson wrote:
> Quoting Janusz Krzysztofik (2020-01-31 13:12:34)
> > Creating a mapping to a userptr backed GEM object may cause a currently
> > unavoidable lockdep splat inside the i915 driver.  Then, such operation
> > is expected to fail to prevent from that badness to happen.
> > 
> > Add a respective subtest for each mapping type.
> > 
> > Signed-off-by: Janusz Krzysztofik 
> > Cc: Matthew Auld 
> > Cc: Chris Wilson 
> > ---
> >  tests/i915/gem_mmap_offset.c | 55 
> >  1 file changed, 55 insertions(+)
> > 
> > diff --git a/tests/i915/gem_mmap_offset.c b/tests/i915/gem_mmap_offset.c
> > index 7c4088cdf..a5f28328b 100644
> > --- a/tests/i915/gem_mmap_offset.c
> > +++ b/tests/i915/gem_mmap_offset.c
> > @@ -141,6 +141,36 @@ static void bad_extensions(int i915)
> > gem_close(i915, arg.handle);
> >  }
> >  
> > +static bool has_userptr(int i915)
> > +{
> > +   uint32_t handle = 0;
> > +   void *ptr;
> > +
> > +   igt_assert_eq(posix_memalign(, 4096, 4096), 0);
> > +   if (__gem_userptr(i915, ptr, 4096, 0, 0, ) == 0)
> > +   gem_close(i915, handle);
> > +   free(ptr);
> > +
> > +   return handle;
> > +}
> > +
> > +static void userptr(int i915, uint64_t flags)
> > +{
> > +   struct drm_i915_gem_mmap_offset arg = {
> > +   .flags = flags,
> > +   };
> > +   void *ptr;
> > +
> > +   igt_assert_eq(posix_memalign(, 4096, 4096), 0);
> > +
> > +   gem_userptr(i915, ptr, 4096, 0, 0, );
> > +
> > +   igt_assert_eq(mmap_offset_ioctl(i915, ), -EINVAL);
> 
> Not quite. The only reason it doesn't work is because the implementation
> ties itself into knots, not that it is meant to not work. :|

Are you suggesting the test should fail if the IOCTL fails?  That would be 
fair, but how are we going to have that accepted by CI then, and merged?

Skipping also doesn't seem a good option to me.

I can add some more exhaustive examination should the IOCTL succeed, but that 
won't help to make CI happy.

>From your long experience, what approach should we take?

Thanks,
Janusz


> -Chris
> 




___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915/gt: Also use async bind for 
PIN_USER into bsw/bxt ggtt (rev2)
URL   : https://patchwork.freedesktop.org/series/72809/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7850 -> Patchwork_16354


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/index.html

Known issues


  Here are the changes found in Patchwork_16354 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_blt:
- fi-hsw-4770r:   [PASS][1] -> [DMESG-FAIL][2] ([i915#725])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
- fi-cfl-8700k:   [PASS][3] -> [INCOMPLETE][4] ([i915#424])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-cfl-8700k/igt@i915_selftest@live_gem_contexts.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-cfl-8700k/igt@i915_selftest@live_gem_contexts.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][5] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_store@basic-all:
- fi-apl-guc: [TIMEOUT][7] ([fdo#112271]) -> [PASS][8] +8 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-apl-guc/igt@gem_exec_st...@basic-all.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-apl-guc/igt@gem_exec_st...@basic-all.html

  * igt@gem_tiled_fence_blits@basic:
- fi-apl-guc: [SKIP][9] ([fdo#109271]) -> [PASS][10] +47 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-apl-guc/igt@gem_tiled_fence_bl...@basic.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-apl-guc/igt@gem_tiled_fence_bl...@basic.html

  * igt@kms_addfb_basic@bad-pitch-32:
- fi-tgl-y:   [DMESG-WARN][11] ([CI#94] / [i915#402]) -> [PASS][12] 
+1 similar issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-tgl-y/igt@kms_addfb_ba...@bad-pitch-32.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-tgl-y/igt@kms_addfb_ba...@bad-pitch-32.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][13] ([fdo#111407]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#424]: https://gitlab.freedesktop.org/drm/intel/issues/424
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (43 -> 39)
--

  Additional (7): fi-bsw-n3050 fi-byt-j1900 fi-skl-6770hq fi-snb-2520m fi-whl-u 
fi-elk-e7500 fi-kbl-r 
  Missing(11): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-hsw-peppy 
fi-glk-dsi fi-byt-squawks fi-bsw-cyan fi-cfl-8109u fi-kbl-7560u fi-byt-clapper 
fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7850 -> Patchwork_16354

  CI-20190529: 20190529
  CI_DRM_7850: ae66f2257648ce52c51298506977baa32873c9d5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5407: a9d69f51dadbcbc53527671f87572d05c3370cba @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16354: 0221737f059279a78c56ee70b14fe8747947f100 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

0221737f0592 drm/i915/selftests: Also wait for the scratch buffer to be bound
bb9f5c3f2305 drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16354/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [RFC PATCH 1/1] drm/i915: Never allow userptr into the new mapping types

2020-01-31 Thread Janusz Krzysztofik
On Friday, January 31, 2020 3:32:21 PM CET Chris Wilson wrote:
> Quoting Janusz Krzysztofik (2020-01-31 13:20:37)
> > Commit 4f2a572eda67 ("drm/i915/userptr: Never allow userptr into the
> > mappable GGTT") made I915_GEM_MMAP_GTT IOCTLs to fail when atepmted
> > on a userptr object in order to protect from a lockdep splat.  Later
> > on, new mapping types were introduced by commit cc662126b413
> > ("drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET").  Those new mapping
> > types suffer from the same lockdep splat issue but they now succeed
> > when tried on top of a userptr object.  Fix it.
> > 
> > While being at it, return -EINVAL which seems to better reflect the
> > reason for the failure than -ENODEV.
> 
> No. It is not a user error, it's a failure to implement support for it,
> so we parcel it off as an incompatible device.

OK, if there is no better option I'll revert that to -ENODEV and resubmit.

Thanks,
Janusz


> -Chris
> 




___
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/gt: Also use async bind for PIN_USER into bsw/bxt ggtt

2020-01-31 Thread Mika Kuoppala
Chris Wilson  writes:

> In the rare cases where we are using the global GGTT for execution in
> the selftests, we have marked them with PIN_USER knowing that they will
> be bound as PIN_GLOBAL as well. However, we need to catch the extra flag
> in deciding to use the async worker for such binds as well.
>
> Signed-off-by: Chris Wilson 

Reviewed-by: Mika Kuoppala 

> ---
>  drivers/gpu/drm/i915/gt/intel_ggtt.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c 
> b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> index 3b23b431bd56..9e8c2e189aef 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> @@ -846,7 +846,8 @@ static int gen8_gmch_probe(struct i915_ggtt *ggtt)
>   IS_CHERRYVIEW(i915) /* fails with concurrent use/update */) {
>   ggtt->vm.insert_entries = bxt_vtd_ggtt_insert_entries__BKL;
>   ggtt->vm.insert_page= bxt_vtd_ggtt_insert_page__BKL;
> - ggtt->vm.bind_async_flags = I915_VMA_GLOBAL_BIND;
> + ggtt->vm.bind_async_flags =
> + I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;
>   }
>  
>   ggtt->invalidate = gen8_ggtt_invalidate;
> -- 
> 2.25.0
>
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [RFC PATCH i-g-t 1/1] tests/gem_mmap_offset: Exercise mapping to userptr

2020-01-31 Thread Chris Wilson
Quoting Janusz Krzysztofik (2020-01-31 13:12:34)
> Creating a mapping to a userptr backed GEM object may cause a currently
> unavoidable lockdep splat inside the i915 driver.  Then, such operation
> is expected to fail to prevent from that badness to happen.
> 
> Add a respective subtest for each mapping type.
> 
> Signed-off-by: Janusz Krzysztofik 
> Cc: Matthew Auld 
> Cc: Chris Wilson 
> ---
>  tests/i915/gem_mmap_offset.c | 55 
>  1 file changed, 55 insertions(+)
> 
> diff --git a/tests/i915/gem_mmap_offset.c b/tests/i915/gem_mmap_offset.c
> index 7c4088cdf..a5f28328b 100644
> --- a/tests/i915/gem_mmap_offset.c
> +++ b/tests/i915/gem_mmap_offset.c
> @@ -141,6 +141,36 @@ static void bad_extensions(int i915)
> gem_close(i915, arg.handle);
>  }
>  
> +static bool has_userptr(int i915)
> +{
> +   uint32_t handle = 0;
> +   void *ptr;
> +
> +   igt_assert_eq(posix_memalign(, 4096, 4096), 0);
> +   if (__gem_userptr(i915, ptr, 4096, 0, 0, ) == 0)
> +   gem_close(i915, handle);
> +   free(ptr);
> +
> +   return handle;
> +}
> +
> +static void userptr(int i915, uint64_t flags)
> +{
> +   struct drm_i915_gem_mmap_offset arg = {
> +   .flags = flags,
> +   };
> +   void *ptr;
> +
> +   igt_assert_eq(posix_memalign(, 4096, 4096), 0);
> +
> +   gem_userptr(i915, ptr, 4096, 0, 0, );
> +
> +   igt_assert_eq(mmap_offset_ioctl(i915, ), -EINVAL);

Not quite. The only reason it doesn't work is because the implementation
ties itself into knots, not that it is meant to not work. :|
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [01/12] drm/i915/gem: Require per-engine reset support for non-persistent contexts

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [01/12] drm/i915/gem: Require per-engine reset 
support for non-persistent contexts
URL   : https://patchwork.freedesktop.org/series/72813/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7850 -> Patchwork_16353


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/index.html

Known issues


  Here are the changes found in Patchwork_16353 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_active:
- fi-icl-y:   [PASS][1] -> [DMESG-FAIL][2] ([i915#765])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-icl-y/igt@i915_selftest@live_active.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-icl-y/igt@i915_selftest@live_active.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-icl-u2:  [PASS][3] -> [FAIL][4] ([i915#217])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-icl-u2/igt@kms_chamel...@hdmi-hpd-fast.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-icl-u2/igt@kms_chamel...@hdmi-hpd-fast.html

  * igt@prime_self_import@basic-llseek-bad:
- fi-tgl-y:   [PASS][5] -> [DMESG-WARN][6] ([CI#94] / [i915#402]) 
+1 similar issue
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-tgl-y/igt@prime_self_imp...@basic-llseek-bad.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-tgl-y/igt@prime_self_imp...@basic-llseek-bad.html

  
 Possible fixes 

  * igt@gem_close_race@basic-threads:
- fi-byt-n2820:   [TIMEOUT][7] ([fdo#112271] / [i915#1084] / 
[i915#816]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-byt-n2820/igt@gem_close_r...@basic-threads.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-byt-n2820/igt@gem_close_r...@basic-threads.html

  * igt@gem_exec_store@basic-all:
- fi-apl-guc: [TIMEOUT][9] ([fdo#112271]) -> [PASS][10] +8 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-apl-guc/igt@gem_exec_st...@basic-all.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-apl-guc/igt@gem_exec_st...@basic-all.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-tgl-y:   [FAIL][11] ([CI#94]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@gem_tiled_fence_blits@basic:
- fi-apl-guc: [SKIP][13] ([fdo#109271]) -> [PASS][14] +47 similar 
issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-apl-guc/igt@gem_tiled_fence_bl...@basic.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-apl-guc/igt@gem_tiled_fence_bl...@basic.html

  * igt@kms_addfb_basic@bad-pitch-32:
- fi-tgl-y:   [DMESG-WARN][15] ([CI#94] / [i915#402]) -> [PASS][16] 
+1 similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-tgl-y/igt@kms_addfb_ba...@bad-pitch-32.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-tgl-y/igt@kms_addfb_ba...@bad-pitch-32.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][17] ([fdo#111407]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@i915_selftest@live_blt:
- fi-hsw-4770:[DMESG-FAIL][19] ([i915#553] / [i915#725]) -> 
[DMESG-FAIL][20] ([i915#770])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7850/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16353/fi-hsw-4770/igt@i915_selftest@live_blt.html

  
  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#765]: https://gitlab.freedesktop.org/drm/intel/issues/765
  [i915#770]: https://gitlab.freedesktop.org/drm/intel/issues/770
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816


Participating hosts (43 -> 45)

Re: [Intel-gfx] [RFC PATCH 1/1] drm/i915: Never allow userptr into the new mapping types

2020-01-31 Thread Chris Wilson
Quoting Janusz Krzysztofik (2020-01-31 13:20:37)
> Commit 4f2a572eda67 ("drm/i915/userptr: Never allow userptr into the
> mappable GGTT") made I915_GEM_MMAP_GTT IOCTLs to fail when atepmted
> on a userptr object in order to protect from a lockdep splat.  Later
> on, new mapping types were introduced by commit cc662126b413
> ("drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET").  Those new mapping
> types suffer from the same lockdep splat issue but they now succeed
> when tried on top of a userptr object.  Fix it.
> 
> While being at it, return -EINVAL which seems to better reflect the
> reason for the failure than -ENODEV.

No. It is not a user error, it's a failure to implement support for it,
so we parcel it off as an incompatible device.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/selftests: Also wait for the scratch buffer to be bound

2020-01-31 Thread Chris Wilson
Since PIN_GLOBAL is no longer guaranteed to be synchronous, we must no
forget to include a wait-for-vma prior to execution.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/intel_workarounds.c   | 10 ++
 drivers/gpu/drm/i915/gt/selftest_lrc.c| 33 +++
 .../gpu/drm/i915/gt/selftest_workarounds.c|  9 +
 3 files changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 5a7db279f702..8d7c3191137c 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -1612,6 +1612,16 @@ static int engine_wa_list_verify(struct intel_context 
*ce,
goto err_vma;
}
 
+   i915_vma_lock(vma);
+   err = i915_request_await_object(rq, vma->obj, true);
+   if (err == 0)
+   err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE);
+   i915_vma_unlock(vma);
+   if (err) {
+   i915_request_add(rq);
+   goto err_vma;
+   }
+
err = wa_list_srm(rq, wal, vma);
if (err)
goto err_vma;
diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index f5214a374fb7..0efb46665667 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -734,6 +734,10 @@ static int live_timeslice_preempt(void *arg)
if (err)
goto err_map;
 
+   err = i915_vma_sync(vma);
+   if (err)
+   goto err_pin;
+
for_each_prime_number_from(count, 1, 16) {
struct intel_engine_cs *engine;
enum intel_engine_id id;
@@ -827,6 +831,10 @@ static int live_timeslice_queue(void *arg)
if (err)
goto err_map;
 
+   err = i915_vma_sync(vma);
+   if (err)
+   goto err_unpin;
+
for_each_engine(engine, gt, id) {
struct i915_sched_attr attr = {
.priority = I915_USER_PRIORITY(I915_PRIORITY_MAX),
@@ -913,6 +921,7 @@ static int live_timeslice_queue(void *arg)
break;
}
 
+err_unpin:
i915_vma_unpin(vma);
 err_map:
i915_gem_object_unpin_map(obj);
@@ -971,6 +980,10 @@ static int live_busywait_preempt(void *arg)
if (err)
goto err_map;
 
+   err = i915_vma_sync(vma);
+   if (err)
+   goto err_vma;
+
for_each_engine(engine, gt, id) {
struct i915_request *lo, *hi;
struct igt_live_test t;
@@ -3204,6 +3217,10 @@ static int preserved_virtual_engine(struct intel_gt *gt,
if (IS_ERR(scratch))
return PTR_ERR(scratch);
 
+   err = i915_vma_sync(scratch);
+   if (err)
+   goto out_scratch;
+
ve = intel_execlists_create_virtual(siblings, nsibling);
if (IS_ERR(ve)) {
err = PTR_ERR(ve);
@@ -4030,8 +4047,16 @@ static int __live_lrc_state(struct intel_engine_cs 
*engine,
*cs++ = i915_ggtt_offset(scratch) + RING_TAIL_IDX * sizeof(u32);
*cs++ = 0;
 
+   i915_vma_lock(scratch);
+   err = i915_request_await_object(rq, scratch->obj, true);
+   if (!err)
+   err = i915_vma_move_to_active(scratch, rq, EXEC_OBJECT_WRITE);
+   i915_vma_unlock(scratch);
+
i915_request_get(rq);
i915_request_add(rq);
+   if (err)
+   goto err_rq;
 
intel_engine_flush_submission(engine);
expected[RING_TAIL_IDX] = ce->ring->tail;
@@ -4166,8 +4191,16 @@ static int __live_gpr_clear(struct intel_engine_cs 
*engine,
*cs++ = 0;
}
 
+   i915_vma_lock(scratch);
+   err = i915_request_await_object(rq, scratch->obj, true);
+   if (!err)
+   err = i915_vma_move_to_active(scratch, rq, EXEC_OBJECT_WRITE);
+   i915_vma_unlock(scratch);
+
i915_request_get(rq);
i915_request_add(rq);
+   if (err)
+   goto err_rq;
 
if (i915_request_wait(rq, 0, HZ / 5) < 0) {
err = -ETIME;
diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c 
b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
index ac1921854cbf..5ed323254ee1 100644
--- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
@@ -583,6 +583,15 @@ static int check_dirty_whitelist(struct intel_context *ce)
if (err)
goto err_request;
 
+   i915_vma_lock(scratch);
+   err = i915_request_await_object(rq, scratch->obj, true);
+   if (err == 0)
+   err = i915_vma_move_to_active(scratch, rq,
+ EXEC_OBJECT_WRITE);
+   i915_vma_unlock(scratch);
+   if (err)
+   goto err_request;
+
err = engine->emit_bb_start(rq,

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt (rev2)

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915/gt: Also use async bind for 
PIN_USER into bsw/bxt ggtt (rev2)
URL   : https://patchwork.freedesktop.org/series/72809/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
bb9f5c3f2305 drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt
-:24: ERROR:CODE_INDENT: code indent should use tabs where possible
#24: FILE: drivers/gpu/drm/i915/gt/intel_ggtt.c:850:
+^I^I   ^II915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;$

-:24: WARNING:SPACE_BEFORE_TAB: please, no space before tabs
#24: FILE: drivers/gpu/drm/i915/gt/intel_ggtt.c:850:
+^I^I   ^II915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;$

total: 1 errors, 1 warnings, 0 checks, 9 lines checked
0221737f0592 drm/i915/selftests: Also wait for the scratch buffer to be bound

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/12] drm/i915/gem: Require per-engine reset support for non-persistent contexts

2020-01-31 Thread Patchwork
== Series Details ==

Series: series starting with [01/12] drm/i915/gem: Require per-engine reset 
support for non-persistent contexts
URL   : https://patchwork.freedesktop.org/series/72813/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
d94430028946 drm/i915/gem: Require per-engine reset support for non-persistent 
contexts
3f22ad1cf14f drm/i915/gt: Also use async bind for PIN_USER into bsw/bxt ggtt
-:24: ERROR:CODE_INDENT: code indent should use tabs where possible
#24: FILE: drivers/gpu/drm/i915/gt/intel_ggtt.c:850:
+^I^I   ^II915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;$

-:24: WARNING:SPACE_BEFORE_TAB: please, no space before tabs
#24: FILE: drivers/gpu/drm/i915/gt/intel_ggtt.c:850:
+^I^I   ^II915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND;$

total: 1 errors, 1 warnings, 0 checks, 9 lines checked
edaa3f3922af drm/i915/selftests: Also wait for the scratch buffer to be bound
1178f728bc7d drm/i915/gt: Yield the timeslice if caught waiting on a user 
semaphore
e88c6333db37 drm/i915/gvt: Use the pinned ce->lrc_reg_state
-:44: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#44: FILE: drivers/gpu/drm/i915/gvt/scheduler.c:70:
+   set_context_pdp_root_pointer((struct execlist_ring_context *)regs,
(void *)workload->shadow_mm->ppgtt_mm.shadow_pdps);

total: 0 errors, 0 warnings, 1 checks, 88 lines checked
f572562b1f0b drm/i915/gt: Pull sseu context updates under gt
-:142: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does 
MAINTAINERS need updating?
#142: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 212 lines checked
bc6a62afb01e drm/i915/gt: Move move context layout registers and offsets to 
lrc_reg.h
37da77f319f6 drm/i915/gt: Rename lrc.c to execlists_submission.c
-:89: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does 
MAINTAINERS need updating?
#89: 
rename from drivers/gpu/drm/i915/gt/intel_lrc.c

total: 0 errors, 1 warnings, 0 checks, 175 lines checked
fec4d13402ab drm/i915/gt: Split logical ring context manipulation into 
intel_lrc.c
-:47: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does 
MAINTAINERS need updating?
#47: 
new file mode 100644

-:749: CHECK:MULTIPLE_ASSIGNMENTS: multiple assignments should be avoided
#749: FILE: drivers/gpu/drm/i915/gt/intel_engine_workaround_bb.c:306:
+   batch = batch_ptr = kmap_atomic(page);

-:2668: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'count' - possible 
side-effects?
#2668: FILE: drivers/gpu/drm/i915/gt/intel_lrc.c:132:
+#define LRI(count, flags) ((flags) << 6 | (count) | BUILD_BUG_ON_ZERO(count >= 
BIT(6)))

-:2670: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'x' - possible side-effects?
#2670: FILE: drivers/gpu/drm/i915/gt/intel_lrc.c:134:
+#define REG(x) (((x) >> 2) | BUILD_BUG_ON_ZERO(x >= 0x200))

-:2671: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in 
parentheses
#2671: FILE: drivers/gpu/drm/i915/gt/intel_lrc.c:135:
+#define REG16(x) \
+   (((x) >> 9) | BIT(7) | BUILD_BUG_ON_ZERO(x >= 0x1)), \
+   (((x) >> 2) & 0x7f)

-:2671: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'x' - possible side-effects?
#2671: FILE: drivers/gpu/drm/i915/gt/intel_lrc.c:135:
+#define REG16(x) \
+   (((x) >> 9) | BIT(7) | BUILD_BUG_ON_ZERO(x >= 0x1)), \
+   (((x) >> 2) & 0x7f)

-:2674: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in 
parentheses
#2674: FILE: drivers/gpu/drm/i915/gt/intel_lrc.c:138:
+#define END(x) 0, (x)

total: 2 errors, 1 warnings, 4 checks, 3977 lines checked
14152045734c drm/i915: Flush idle barriers when waiting
04486f9552c2 drm/i915: Allow userspace to specify ringsize on construction
-:227: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does 
MAINTAINERS need updating?
#227: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 305 lines checked
5b086f11a8fe drm/i915/gem: Honour O_NONBLOCK before throttling execbuf 
submissions

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/guc: Introduce guc_is_ready

2020-01-31 Thread Chris Wilson
Quoting Michal Wajdeczko (2020-01-31 13:26:10)
> We already have guc_is_running function, but it only reflects
> firmware status, while to fully use GuC we need to know if we've
> already established communication with it.

"Ready, set, go!"

ready has connotations of being before running, whereas for
intel_guc_is_ready(), we are already running.

Just a quibble, rationale is fine.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/selftests: Disable heartbeat around hang tests

2020-01-31 Thread Chris Wilson
Quoting Mika Kuoppala (2020-01-31 13:22:38)
> Chris Wilson  writes:
> 
> > If the heartbeat fires in the middle of the preempt-hang test, it
> > consumes our forced hang disrupting the test.
> >
> > Reported-by: Daniel Vetter 
> > Signed-off-by: Chris Wilson 
> > ---
> >  drivers/gpu/drm/i915/gt/selftest_lrc.c | 10 ++
> >  1 file changed, 10 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
> > b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> > index 5e04ecb61dcc..f5214a374fb7 100644
> > --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
> > +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> > @@ -2452,15 +2452,19 @@ static int live_preempt_hang(void *arg)
> >   I915_USER_PRIORITY(I915_CONTEXT_MIN_USER_PRIORITY);
> >  
> >   for_each_engine(engine, gt, id) {
> > + unsigned long heartbeat;
> >   struct i915_request *rq;
> >  
> >   if (!intel_engine_has_preemption(engine))
> >   continue;
> >  
> > + engine_heartbeat_disable(engine, );
> > +
> >   rq = spinner_create_request(_lo, ctx_lo, engine,
> >   MI_ARB_CHECK);
> >   if (IS_ERR(rq)) {
> >   err = PTR_ERR(rq);
> > + engine_heartbeat_enable(engine, heartbeat);
> 
> Was thinking that you could grab the engine and abuse then the error
> path to enable.
> 
> But too hairy.

Yeah, we've done staggered error paths, but both look ugly, So I took
the easy approach. Move the inner loop to its own test function usually
helps though.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


  1   2   >