[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/mst: filter out the display mode exceed sink's capability (rev3)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/mst: filter out the display mode exceed sink's capability 
(rev3)
URL   : https://patchwork.freedesktop.org/series/76095/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17706_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Possible new issues
---

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

### IGT changes ###

 Suppressed 

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

  * {igt@sysfs_preempt_timeout@timeout@vecs0}:
- shard-glk:  [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-glk1/igt@sysfs_preempt_timeout@time...@vecs0.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-glk9/igt@sysfs_preempt_timeout@time...@vecs0.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-skl:  [PASS][3] -> [INCOMPLETE][4] ([i915#300])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-skl10/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-kbl:  [PASS][5] -> [DMESG-WARN][6] ([i915#180]) +1 similar 
issue
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl6/igt@kms_cursor_...@pipe-c-cursor-suspend.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-kbl4/igt@kms_cursor_...@pipe-c-cursor-suspend.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][7] -> [FAIL][8] ([i915#95])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-apl2/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_hdr@bpc-switch-suspend:
- shard-skl:  [PASS][9] -> [FAIL][10] ([i915#1188])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_...@bpc-switch-suspend.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-skl10/igt@kms_...@bpc-switch-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
- shard-apl:  [PASS][11] -> [DMESG-WARN][12] ([i915#180]) +1 
similar issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl4/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-apl1/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
- shard-skl:  [PASS][13] -> [FAIL][14] ([fdo#108145] / [i915#265]) 
+1 similar issue
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl3/igt@kms_plane_alpha_bl...@pipe-c-constant-alpha-min.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-skl7/igt@kms_plane_alpha_bl...@pipe-c-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109441]) +2 similar 
issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-iclb3/igt@kms_psr@psr2_sprite_render.html

  
 Possible fixes 

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [DMESG-WARN][17] ([i915#1436] / [i915#716]) -> 
[PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl1/igt@gen9_exec_pa...@allowed-all.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-apl7/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_selftest@live@execlists:
- shard-skl:  [INCOMPLETE][19] ([i915#1795] / [i915#1874]) -> 
[PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@i915_selftest@l...@execlists.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-skl8/igt@i915_selftest@l...@execlists.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [DMESG-WARN][21] ([i915#180]) -> [PASS][22] +3 
similar issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl2/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a1}:
- shard-glk:  [FAIL][23] 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/ehl: Extend w/a 14010685332 to JSP/MCC

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/ehl: Extend w/a 14010685332 to JSP/MCC
URL   : https://patchwork.freedesktop.org/series/77382/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17705_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_workarounds@suspend-resume-fd:
- shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180]) +2 similar 
issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl3/igt@gem_workarou...@suspend-resume-fd.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-kbl4/igt@gem_workarou...@suspend-resume-fd.html

  * igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
- shard-skl:  [PASS][3] -> [FAIL][4] ([IGT#5] / [i915#697])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@kms_cursor_leg...@flip-vs-cursor-varying-size.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-skl4/igt@kms_cursor_leg...@flip-vs-cursor-varying-size.html

  * igt@kms_cursor_legacy@pipe-c-torture-move:
- shard-iclb: [PASS][5] -> [DMESG-WARN][6] ([i915#128])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb6/igt@kms_cursor_leg...@pipe-c-torture-move.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-iclb2/igt@kms_cursor_leg...@pipe-c-torture-move.html

  * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-untiled:
- shard-skl:  [PASS][7] -> [FAIL][8] ([i915#177] / [i915#52] / 
[i915#54])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_draw_...@draw-method-xrgb-mmap-cpu-untiled.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-skl8/igt@kms_draw_...@draw-method-xrgb-mmap-cpu-untiled.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][9] -> [FAIL][10] ([i915#95])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-apl7/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_hdr@bpc-switch-suspend:
- shard-skl:  [PASS][11] -> [FAIL][12] ([i915#1188])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_...@bpc-switch-suspend.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-skl7/igt@kms_...@bpc-switch-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
- shard-apl:  [PASS][13] -> [DMESG-WARN][14] ([i915#180])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl4/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-apl1/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl:  [PASS][15] -> [FAIL][16] ([fdo#108145] / [i915#265]) 
+1 similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-skl8/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441]) +2 similar 
issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-iclb4/igt@kms_psr@psr2_sprite_render.html

  
 Possible fixes 

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [DMESG-WARN][19] ([i915#1436] / [i915#716]) -> 
[PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl1/igt@gen9_exec_pa...@allowed-all.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-apl4/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_selftest@live@execlists:
- shard-skl:  [INCOMPLETE][21] ([i915#1795] / [i915#1874]) -> 
[PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@i915_selftest@l...@execlists.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/shard-skl4/igt@i915_selftest@l...@execlists.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [DMESG-WARN][23] ([i915#180]) -> [PASS][24] +4 
similar issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl2/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [24]: 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/mst: filter out the display mode exceed sink's capability (rev3)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/mst: filter out the display mode exceed sink's capability 
(rev3)
URL   : https://patchwork.freedesktop.org/series/76095/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17706


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_chamelium@dp-crc-fast:
- fi-kbl-7500u:   [PASS][1] -> [FAIL][2] ([i915#262])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-kbl-7500u/igt@kms_chamel...@dp-crc-fast.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/fi-kbl-7500u/igt@kms_chamel...@dp-crc-fast.html

  
 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [SKIP][3] ([fdo#109271]) -> [FAIL][4] ([i915#62])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17706/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#262]: https://gitlab.freedesktop.org/drm/intel/issues/262
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62


Participating hosts (52 -> 44)
--

  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17706

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17706: 8c7c02df8f7602265c2cc0fa5dc96d7c84b3cf5e @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

8c7c02df8f76 drm/i915/mst: filter out the display mode exceed sink's capability

== Logs ==

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


[Intel-gfx] [PATCH v3] drm/i915/mst: filter out the display mode exceed sink's capability

2020-05-18 Thread Lee Shawn C
So far, max dot clock rate for MST mode rely on physcial
bandwidth limitation. It would caused compatibility issue
if source display resolution exceed MST hub output ability.

For example, source DUT had DP 1.2 output capability.
And MST docking just support HDMI 1.4 spec. When a HDMI 2.0
monitor connected. Source would retrieve EDID from external
and get max resolution 4k@60fps. DP 1.2 can support 4K@60fps
because it did not surpass DP physical bandwidth limitation.
Do modeset to 4k@60fps, source output display data but MST
docking can't output HDMI properly due to this resolution
already over HDMI 1.4 spec.

Refer to commit  ("drm/dp_mst: Use full_pbn
instead of available_pbn for bandwidth checks").
Source driver should refer to full_pbn to evaluate sink
output capability. And filter out the resolution surpass
sink output limitation.

v2: Using mgr->base.lock to protect full_pbn.
v3: Add ctx lock.

Cc: Manasi Navare 
Cc: Jani Nikula 
Cc: Ville Syrjala 
Cc: Cooper Chiou 
Cc: Lyude Paul 
Signed-off-by: Lee Shawn C 
---
 drivers/gpu/drm/i915/display/intel_dp_mst.c | 30 -
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c 
b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 74559379384a..6b6f7eef5b68 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -611,6 +611,32 @@ static int intel_dp_mst_get_modes(struct drm_connector 
*connector)
return intel_dp_mst_get_ddc_modes(connector);
 }
 
+static bool
+intel_dp_mst_mode_clock_exceed_pbn_bandwidth(struct drm_connector *connector, 
int clock, int bpp)
+{
+   struct intel_connector *intel_connector = to_intel_connector(connector);
+   struct intel_dp *intel_dp = intel_connector->mst_port;
+   struct drm_dp_mst_topology_mgr *mgr = _dp->mst_mgr;
+   struct drm_dp_mst_port *port = (to_intel_connector(connector))->port;
+   struct drm_modeset_acquire_ctx ctx;
+   bool ret = false;
+
+   if (!mgr)
+   return ret;
+
+   drm_modeset_acquire_init(, 0);
+
+   drm_modeset_lock(>base.lock, );
+   if (port->full_pbn)
+   ret = (drm_dp_calc_pbn_mode(clock, bpp, false) > 
port->full_pbn);
+   drm_modeset_unlock(>base.lock);
+
+   drm_modeset_drop_locks();
+   drm_modeset_acquire_fini();
+
+   return ret;
+}
+
 static enum drm_mode_status
 intel_dp_mst_mode_valid(struct drm_connector *connector,
struct drm_display_mode *mode)
@@ -633,7 +659,9 @@ intel_dp_mst_mode_valid(struct drm_connector *connector,
max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
mode_rate = intel_dp_link_required(mode->clock, 18);
 
-   /* TODO - validate mode against available PBN for link */
+   if (intel_dp_mst_mode_clock_exceed_pbn_bandwidth(connector, 
mode->clock, 24))
+   return MODE_CLOCK_HIGH;
+
if (mode->clock < 1)
return MODE_CLOCK_LOW;
 
-- 
2.17.1

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


[Intel-gfx] ✗ Fi.CI.IGT: failure for mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()

2020-05-18 Thread Patchwork
== Series Details ==

Series: mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()
URL   : https://patchwork.freedesktop.org/series/77381/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17704_full


Summary
---

  **FAILURE**

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

### IGT changes ###

 Possible regressions 

  * igt@gem_userptr_blits@dmabuf-unsync:
- shard-tglb: [PASS][1] -> [INCOMPLETE][2] +7 similar issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-tglb7/igt@gem_userptr_bl...@dmabuf-unsync.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-tglb1/igt@gem_userptr_bl...@dmabuf-unsync.html
- shard-glk:  [PASS][3] -> [DMESG-WARN][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-glk8/igt@gem_userptr_bl...@dmabuf-unsync.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-glk8/igt@gem_userptr_bl...@dmabuf-unsync.html
- shard-iclb: [PASS][5] -> [DMESG-WARN][6] +2 similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb6/igt@gem_userptr_bl...@dmabuf-unsync.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-iclb8/igt@gem_userptr_bl...@dmabuf-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy-gup@gtt:
- shard-iclb: [PASS][7] -> [INCOMPLETE][8] +6 similar issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb4/igt@gem_userptr_blits@map-fixed-invalidate-busy-...@gtt.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-iclb3/igt@gem_userptr_blits@map-fixed-invalidate-busy-...@gtt.html

  * igt@gem_userptr_blits@map-fixed-invalidate-gup@gtt:
- shard-kbl:  [PASS][9] -> [INCOMPLETE][10] +7 similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl1/igt@gem_userptr_blits@map-fixed-invalidate-...@gtt.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-kbl4/igt@gem_userptr_blits@map-fixed-invalidate-...@gtt.html
- shard-apl:  [PASS][11] -> [INCOMPLETE][12] +6 similar issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl1/igt@gem_userptr_blits@map-fixed-invalidate-...@gtt.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-apl7/igt@gem_userptr_blits@map-fixed-invalidate-...@gtt.html

  * igt@gem_userptr_blits@stress-purge:
- shard-skl:  [PASS][13] -> [INCOMPLETE][14] +7 similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl10/igt@gem_userptr_bl...@stress-purge.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-skl10/igt@gem_userptr_bl...@stress-purge.html

  * igt@gem_userptr_blits@sync-unmap-after-close:
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl6/igt@gem_userptr_bl...@sync-unmap-after-close.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-kbl2/igt@gem_userptr_bl...@sync-unmap-after-close.html
- shard-apl:  [PASS][17] -> [DMESG-WARN][18] +1 similar issue
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl4/igt@gem_userptr_bl...@sync-unmap-after-close.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-apl2/igt@gem_userptr_bl...@sync-unmap-after-close.html

  * igt@gem_userptr_blits@unsync-unmap-after-close:
- shard-tglb: [PASS][19] -> [DMESG-WARN][20] +1 similar issue
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-tglb6/igt@gem_userptr_bl...@unsync-unmap-after-close.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-tglb1/igt@gem_userptr_bl...@unsync-unmap-after-close.html

  * igt@gem_userptr_blits@userfault:
- shard-snb:  [PASS][21] -> [DMESG-WARN][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-snb4/igt@gem_userptr_bl...@userfault.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-snb1/igt@gem_userptr_bl...@userfault.html
- shard-skl:  [PASS][23] -> [DMESG-WARN][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@gem_userptr_bl...@userfault.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/shard-skl6/igt@gem_userptr_bl...@userfault.html

  * igt@runner@aborted:
- 

[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/2] drm/i915: move trace_i915_reg_rw() to a separate file

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915: move trace_i915_reg_rw() to a 
separate file
URL   : https://patchwork.freedesktop.org/series/77378/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17703_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_cursor_crc@pipe-b-cursor-128x128-random:
- shard-skl:  [PASS][1] -> [FAIL][2] ([i915#54])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl8/igt@kms_cursor_...@pipe-b-cursor-128x128-random.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-skl1/igt@kms_cursor_...@pipe-b-cursor-128x128-random.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-apl:  [PASS][3] -> [DMESG-WARN][4] ([i915#180]) +1 similar 
issue
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl6/igt@kms_cursor_...@pipe-c-cursor-suspend.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-apl4/igt@kms_cursor_...@pipe-c-cursor-suspend.html

  * igt@kms_cursor_legacy@pipe-c-torture-bo:
- shard-tglb: [PASS][5] -> [DMESG-WARN][6] ([i915#128])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-tglb1/igt@kms_cursor_leg...@pipe-c-torture-bo.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-tglb7/igt@kms_cursor_leg...@pipe-c-torture-bo.html

  * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-untiled:
- shard-skl:  [PASS][7] -> [FAIL][8] ([i915#177] / [i915#52] / 
[i915#54])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_draw_...@draw-method-xrgb-mmap-cpu-untiled.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-skl1/igt@kms_draw_...@draw-method-xrgb-mmap-cpu-untiled.html

  * igt@kms_fbcon_fbt@psr-suspend:
- shard-skl:  [PASS][9] -> [INCOMPLETE][10] ([i915#69]) +1 similar 
issue
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl8/igt@kms_fbcon_...@psr-suspend.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-skl1/igt@kms_fbcon_...@psr-suspend.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][11] -> [FAIL][12] ([i915#95])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-apl1/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-apl:  [PASS][13] -> [DMESG-WARN][14] ([i915#180] / 
[i915#95])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl3/igt@kms_frontbuffer_track...@fbc-suspend.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-apl6/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][15] -> [FAIL][16] ([i915#1188]) +1 similar 
issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl7/igt@kms_...@bpc-switch-dpms.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-skl5/igt@kms_...@bpc-switch-dpms.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][17] -> [FAIL][18] ([fdo#108145] / [i915#265]) 
+3 similar issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl3/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-skl5/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109441]) +2 similar 
issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-iclb3/igt@kms_psr@psr2_sprite_render.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-kbl:  [PASS][21] -> [DMESG-WARN][22] ([i915#180])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl3/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-kbl2/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html

  
 Possible fixes 

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [DMESG-WARN][23] ([i915#1436] / [i915#716]) -> 
[PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl1/igt@gen9_exec_pa...@allowed-all.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/shard-apl6/igt@gen9_exec_pa...@allowed-all.html

  * 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/ehl: Extend w/a 14010685332 to JSP/MCC

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/ehl: Extend w/a 14010685332 to JSP/MCC
URL   : https://patchwork.freedesktop.org/series/77382/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17705


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@debugfs_test@read_all_entries:
- fi-bsw-nick:[PASS][1] -> [INCOMPLETE][2] ([i915#1250] / 
[i915#1436])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-bsw-nick/igt@debugfs_test@read_all_entries.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/fi-bsw-nick/igt@debugfs_test@read_all_entries.html

  * igt@i915_selftest@live@execlists:
- fi-cfl-guc: [PASS][3] -> [INCOMPLETE][4] ([i915#656])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/fi-cfl-guc/igt@i915_selftest@l...@execlists.html

  * igt@i915_selftest@live@requests:
- fi-bwr-2160:[PASS][5] -> [INCOMPLETE][6] ([i915#1457] / 
[i915#489])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-bwr-2160/igt@i915_selftest@l...@requests.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17705/fi-bwr-2160/igt@i915_selftest@l...@requests.html

  
  [i915#1250]: https://gitlab.freedesktop.org/drm/intel/issues/1250
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1457]: https://gitlab.freedesktop.org/drm/intel/issues/1457
  [i915#489]: https://gitlab.freedesktop.org/drm/intel/issues/489
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (52 -> 45)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17705

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17705: 42cda1a46a6627b6ddc1ae0da45bed100c1f59ea @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

42cda1a46a66 drm/i915/ehl: Extend w/a 14010685332 to JSP/MCC

== Logs ==

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


[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/4] drm/i915: Don't set queue-priority hint when supressing the reschedule

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915: Don't set queue-priority hint when 
supressing the reschedule
URL   : https://patchwork.freedesktop.org/series/77377/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17702_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_cursor_crc@pipe-b-cursor-suspend:
- shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl4/igt@kms_cursor_...@pipe-b-cursor-suspend.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-kbl2/igt@kms_cursor_...@pipe-b-cursor-suspend.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][3] -> [FAIL][4] ([i915#95])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-apl2/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move:
- shard-glk:  [PASS][5] -> [FAIL][6] ([i915#118] / [i915#95])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-glk6/igt@kms_frontbuffer_track...@fbc-1p-primscrn-spr-indfb-move.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-glk1/igt@kms_frontbuffer_track...@fbc-1p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-kbl:  [PASS][7] -> [DMESG-WARN][8] ([i915#180] / [i915#93] 
/ [i915#95])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl7/igt@kms_frontbuffer_track...@fbc-suspend.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-kbl3/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_hdr@bpc-switch-suspend:
- shard-skl:  [PASS][9] -> [FAIL][10] ([i915#1188])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_...@bpc-switch-suspend.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-skl4/igt@kms_...@bpc-switch-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-apl:  [PASS][11] -> [DMESG-WARN][12] ([i915#180]) +2 
similar issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl7/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-apl6/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][13] -> [FAIL][14] ([fdo#108145] / [i915#265]) 
+2 similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl3/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-skl5/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109441]) +2 similar 
issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-iclb3/igt@kms_psr@psr2_sprite_render.html

  
 Possible fixes 

  * igt@i915_selftest@live@execlists:
- shard-skl:  [INCOMPLETE][17] ([i915#1795] / [i915#1874]) -> 
[PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@i915_selftest@l...@execlists.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-skl8/igt@i915_selftest@l...@execlists.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [DMESG-WARN][19] ([i915#180]) -> [PASS][20] +4 
similar issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl2/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a1}:
- shard-glk:  [FAIL][21] ([i915#79]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-glk9/igt@kms_flip@flip-vs-expired-vblank-interrupti...@a-hdmi-a1.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/shard-glk6/igt@kms_flip@flip-vs-expired-vblank-interrupti...@a-hdmi-a1.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1}:
- shard-skl:  [FAIL][23] ([i915#79]) -> [PASS][24]
   [23]: 

[Intel-gfx] ✓ Fi.CI.BAT: success for mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()

2020-05-18 Thread Patchwork
== Series Details ==

Series: mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()
URL   : https://patchwork.freedesktop.org/series/77381/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17704


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-cfl-8700k:   [PASS][1] -> [INCOMPLETE][2] ([i915#656])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-cfl-8700k/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/fi-cfl-8700k/igt@i915_selftest@l...@execlists.html

  * igt@kms_chamelium@dp-crc-fast:
- fi-cml-u2:  [PASS][3] -> [FAIL][4] ([i915#262])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-cml-u2/igt@kms_chamel...@dp-crc-fast.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17704/fi-cml-u2/igt@kms_chamel...@dp-crc-fast.html

  
  [i915#262]: https://gitlab.freedesktop.org/drm/intel/issues/262
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (52 -> 45)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17704

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17704: ace503a8f42c4de5395983002282f6d0302543bc @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

ace503a8f42c drm/i915: convert get_user_pages() --> pin_user_pages()
d8a6c141995a mm/gup: introduce pin_user_pages_fast_only()
4bab9b886ef9 mm/gup: refactor and de-duplicate gup_fast() code
5dd288837ad8 mm/gup: move __get_user_pages_fast() down a few lines in gup.c

== Logs ==

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


[Intel-gfx] [PATCH] drm/i915/ehl: Extend w/a 14010685332 to JSP/MCC

2020-05-18 Thread Swathi Dhanavanthri
This is a permanent w/a for JSL/EHL.This is to be applied to the
PCH types on JSL/EHL ie JSP/MCC
Bspec: 52888

Signed-off-by: Swathi Dhanavanthri 
---
 drivers/gpu/drm/i915/i915_irq.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 4dc601dffc08..1974369cebb8 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2902,8 +2902,8 @@ static void gen11_display_irq_reset(struct 
drm_i915_private *dev_priv)
if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
GEN3_IRQ_RESET(uncore, SDE);
 
-   /* Wa_14010685332:icl */
-   if (INTEL_PCH_TYPE(dev_priv) == PCH_ICP) {
+   /* Wa_14010685332:icl,jsl,ehl */
+   if (INTEL_PCH_TYPE(dev_priv) == PCH_ICP || PCH_JSP || PCH_MCC) {
intel_uncore_rmw(uncore, SOUTH_CHICKEN1,
 SBCLK_RUN_REFCLK_DIS, SBCLK_RUN_REFCLK_DIS);
intel_uncore_rmw(uncore, SOUTH_CHICKEN1,
-- 
2.20.1

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


[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Resolve device hotunplug issues

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: Resolve device hotunplug issues
URL   : https://patchwork.freedesktop.org/series/77372/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17701_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-apl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180]) +1 similar 
issue
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl6/igt@kms_cursor_...@pipe-c-cursor-suspend.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-apl6/igt@kms_cursor_...@pipe-c-cursor-suspend.html

  * igt@kms_cursor_legacy@all-pipes-torture-bo:
- shard-snb:  [PASS][3] -> [DMESG-WARN][4] ([i915#128])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-snb5/igt@kms_cursor_leg...@all-pipes-torture-bo.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-snb4/igt@kms_cursor_leg...@all-pipes-torture-bo.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][5] -> [FAIL][6] ([i915#95])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][7] -> [FAIL][8] ([i915#1188]) +1 similar issue
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl7/igt@kms_...@bpc-switch-dpms.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-skl7/igt@kms_...@bpc-switch-dpms.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
- shard-skl:  [PASS][9] -> [INCOMPLETE][10] ([i915#69])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl8/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-skl6/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html
- shard-kbl:  [PASS][11] -> [DMESG-WARN][12] ([i915#180]) +1 
similar issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl1/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-kbl3/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][13] -> [FAIL][14] ([fdo#108145] / [i915#265]) 
+1 similar issue
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl3/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-skl10/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109441]) +2 similar 
issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-iclb4/igt@kms_psr@psr2_sprite_render.html

  
 Possible fixes 

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [DMESG-WARN][17] ([i915#1436] / [i915#716]) -> 
[PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl1/igt@gen9_exec_pa...@allowed-all.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-apl3/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_selftest@live@execlists:
- shard-skl:  [INCOMPLETE][19] ([i915#1795] / [i915#1874]) -> 
[PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@i915_selftest@l...@execlists.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-skl5/igt@i915_selftest@l...@execlists.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [DMESG-WARN][21] ([i915#180]) -> [PASS][22] +4 
similar issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl2/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-kbl2/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [SKIP][23] ([fdo#109349]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb5/igt@kms_dp_...@basic-dsc-enable-edp.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/shard-iclb2/igt@kms_dp_...@basic-dsc-enable-edp.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a1}:
- 

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()

2020-05-18 Thread Patchwork
== Series Details ==

Series: mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()
URL   : https://patchwork.freedesktop.org/series/77381/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.0
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:1019:47:expected unsigned int 
[addressable] [usertype] ulClockParams
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:1019:47:got restricted __le32 
[usertype]
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:1019:47: warning: incorrect type 
in assignment (different base types)
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:1028:50: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:1029:49: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:1037:47: warning: too many 
warnings
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:184:44: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:283:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:320:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:323:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:326:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:329:18: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:330:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:338:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:340:38: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:342:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:346:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:348:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:353:33: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:367:43: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:369:38: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:374:67: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:375:53: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:378:66: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:389:80: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:395:57: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:402:69: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:403:53: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:406:66: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:414:66: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:423:69: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:424:69: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:473:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:476:45: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:477:45: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:484:54: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:52:28: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:531:35: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:53:29: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:533:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:54:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:55:27: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:56:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:57:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:577:21: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:581:25: warning: cast to 
restricted __le32
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:58:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:583:21: warning: cast to 
restricted __le32
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:586:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:590:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:59:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:598:21: warning: 

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()

2020-05-18 Thread Patchwork
== Series Details ==

Series: mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()
URL   : https://patchwork.freedesktop.org/series/77381/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
5dd288837ad8 mm/gup: move __get_user_pages_fast() down a few lines in gup.c
-:111: CHECK:SPACING: No space is necessary after a cast
#111: FILE: mm/gup.c:2764:
+   len = (unsigned long) nr_pages << PAGE_SHIFT;

total: 0 errors, 0 warnings, 1 checks, 124 lines checked
4bab9b886ef9 mm/gup: refactor and de-duplicate gup_fast() code
d8a6c141995a mm/gup: introduce pin_user_pages_fast_only()
ace503a8f42c drm/i915: convert get_user_pages() --> pin_user_pages()

___
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: move trace_i915_reg_rw() to a separate file

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915: move trace_i915_reg_rw() to a 
separate file
URL   : https://patchwork.freedesktop.org/series/77378/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17703


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_pm_rpm@module-reload:
- fi-skl-guc: [PASS][1] -> [INCOMPLETE][2] ([i915#151])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-skl-guc/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17703/fi-skl-guc/igt@i915_pm_...@module-reload.html

  
  [i915#151]: https://gitlab.freedesktop.org/drm/intel/issues/151


Participating hosts (52 -> 44)
--

  Missing(8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17703

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17703: 7f37c24c1d4bef1f645fce042cfff357a2130fe3 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

7f37c24c1d4b drm/i915: trace intel_uncore_*_fw()
caee6db994c4 drm/i915: move trace_i915_reg_rw() to a separate file

== Logs ==

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


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: move trace_i915_reg_rw() to a separate file

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915: move trace_i915_reg_rw() to a 
separate file
URL   : https://patchwork.freedesktop.org/series/77378/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
caee6db994c4 drm/i915: move trace_i915_reg_rw() to a separate file
-:66: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does 
MAINTAINERS need updating?
#66: 
new file mode 100644

-:85: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#85: FILE: drivers/gpu/drm/i915/i915_trace_reg_rw.h:15:
+TRACE_EVENT_CONDITION(i915_reg_rw,
+   TP_PROTO(bool write, i915_reg_t reg, u64 val, int len, bool trace),

-:91: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#91: FILE: drivers/gpu/drm/i915/i915_trace_reg_rw.h:21:
+   TP_STRUCT__entry(

-:98: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#98: FILE: drivers/gpu/drm/i915/i915_trace_reg_rw.h:28:
+   TP_fast_assign(

-:106: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#106: FILE: drivers/gpu/drm/i915/i915_trace_reg_rw.h:36:
+   TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)",
+   __entry->write ? "write" : "read",

total: 0 errors, 1 warnings, 4 checks, 84 lines checked
7f37c24c1d4b drm/i915: trace intel_uncore_*_fw()

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


[Intel-gfx] [PATCH 2/4] mm/gup: refactor and de-duplicate gup_fast() code

2020-05-18 Thread John Hubbard
There were two nearly identical sets of code for gup_fast()
style of walking the page tables with interrupts disabled.
This has lead to the usual maintenance problems that arise from
having duplicated code.

There is already a core internal routine in gup.c for gup_fast(),
so just enhance it very slightly: allow skipping the fall-back
to "slow" (regular) get_user_pages(), via the new FOLL_FAST_ONLY
flag. Then, just call internal_get_user_pages_fast() from
__get_user_pages_fast(), and adjust the API to match pre-existing
API behavior.

There is a change in behavior from this refactoring: the nested
form of interrupt disabling is used in all gup_fast() variants
now. That's because there is only one place that interrupt disabling
for page walking is done, and so the safer form is required. This
should, if anything, eliminate possible (rare) bugs, because the
non-nested form of enabling interrupts was fragile at best.

Signed-off-by: John Hubbard 
---
 include/linux/mm.h |  1 +
 mm/gup.c   | 60 ++
 2 files changed, 29 insertions(+), 32 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index a5594ac9ebe3..84b601cab699 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2782,6 +2782,7 @@ struct page *follow_page(struct vm_area_struct *vma, 
unsigned long address,
 #define FOLL_LONGTERM  0x1 /* mapping lifetime is indefinite: see below */
 #define FOLL_SPLIT_PMD 0x2 /* split huge pmd before returning */
 #define FOLL_PIN   0x4 /* pages must be released via unpin_user_page */
+#define FOLL_FAST_ONLY 0x8 /* gup_fast: prevent fall-back to slow gup */
 
 /*
  * FOLL_PIN and FOLL_LONGTERM may be used in various combinations with each
diff --git a/mm/gup.c b/mm/gup.c
index 4502846d57f9..bb3e2c4288c3 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -2694,6 +2694,7 @@ static int internal_get_user_pages_fast(unsigned long 
start, int nr_pages,
struct page **pages)
 {
unsigned long addr, len, end;
+   unsigned long flags;
int nr_pinned = 0, ret = 0;
 
if (WARN_ON_ONCE(gup_flags & ~(FOLL_WRITE | FOLL_LONGTERM |
@@ -2710,15 +2711,26 @@ static int internal_get_user_pages_fast(unsigned long 
start, int nr_pages,
if (unlikely(!access_ok((void __user *)start, len)))
return -EFAULT;
 
+   /*
+* Disable interrupts. The nested form is used, in order to allow full,
+* general purpose use of this routine.
+*
+* With interrupts disabled, we block page table pages from being
+* freed from under us. See struct mmu_table_batch comments in
+* include/asm-generic/tlb.h for more details.
+*
+* We do not adopt an rcu_read_lock(.) here as we also want to
+* block IPIs that come from THPs splitting.
+*/
if (IS_ENABLED(CONFIG_HAVE_FAST_GUP) &&
gup_fast_permitted(start, end)) {
-   local_irq_disable();
+   local_irq_save(flags);
gup_pgd_range(addr, end, gup_flags, pages, _pinned);
-   local_irq_enable();
+   local_irq_restore(flags);
ret = nr_pinned;
}
 
-   if (nr_pinned < nr_pages) {
+   if (nr_pinned < nr_pages && !(gup_flags & FOLL_FAST_ONLY)) {
/* Try to get the remaining pages with get_user_pages */
start += nr_pinned << PAGE_SHIFT;
pages += nr_pinned;
@@ -2750,45 +2762,29 @@ static int internal_get_user_pages_fast(unsigned long 
start, int nr_pages,
 int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
  struct page **pages)
 {
-   unsigned long len, end;
-   unsigned long flags;
-   int nr_pinned = 0;
+   int nr_pinned;
/*
 * Internally (within mm/gup.c), gup fast variants must set FOLL_GET,
 * because gup fast is always a "pin with a +1 page refcount" request.
+*
+* FOLL_FAST_ONLY is required in order to match the API description of
+* this routine: no fall back to regular ("slow") GUP.
 */
-   unsigned int gup_flags = FOLL_GET;
+   unsigned int gup_flags = FOLL_GET | FOLL_FAST_ONLY;
 
if (write)
gup_flags |= FOLL_WRITE;
 
-   start = untagged_addr(start) & PAGE_MASK;
-   len = (unsigned long) nr_pages << PAGE_SHIFT;
-   end = start + len;
-
-   if (end <= start)
-   return 0;
-   if (unlikely(!access_ok((void __user *)start, len)))
-   return 0;
-
+   nr_pinned = internal_get_user_pages_fast(start, nr_pages, gup_flags,
+pages);
/*
-* Disable interrupts.  We use the nested form as we can already have
-* interrupts disabled by get_futex_key.
-*
-* With interrupts disabled, we block page table pages from being
-* freed from under 

[Intel-gfx] [PATCH 3/4] mm/gup: introduce pin_user_pages_fast_only()

2020-05-18 Thread John Hubbard
This is the FOLL_PIN equivalent of __get_user_pages_fast(),
except with a more descriptive name, and gup_flags instead of
a boolean "write" in the argument list.

Signed-off-by: John Hubbard 
---
 include/linux/mm.h |  2 ++
 mm/gup.c   | 36 
 2 files changed, 38 insertions(+)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 84b601cab699..98be7289d7e9 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1820,6 +1820,8 @@ extern int mprotect_fixup(struct vm_area_struct *vma,
  */
 int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
  struct page **pages);
+int pin_user_pages_fast_only(unsigned long start, int nr_pages,
+unsigned int gup_flags, struct page **pages);
 /*
  * per-process(per-mm_struct) statistics.
  */
diff --git a/mm/gup.c b/mm/gup.c
index bb3e2c4288c3..4413f0f94b68 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -2858,6 +2858,42 @@ int pin_user_pages_fast(unsigned long start, int 
nr_pages,
 }
 EXPORT_SYMBOL_GPL(pin_user_pages_fast);
 
+/*
+ * This is the FOLL_PIN equivalent of __get_user_pages_fast(). Behavior is the
+ * same, except that this one sets FOLL_PIN instead of FOLL_GET.
+ *
+ * The API rules are the same, too: no negative values may be returned.
+ */
+int pin_user_pages_fast_only(unsigned long start, int nr_pages,
+unsigned int gup_flags, struct page **pages)
+{
+   int nr_pinned;
+
+   /*
+* FOLL_GET and FOLL_PIN are mutually exclusive. Note that the API
+* rules require returning 0, rather than -errno:
+*/
+   if (WARN_ON_ONCE(gup_flags & FOLL_GET))
+   return 0;
+   /*
+* FOLL_FAST_ONLY is required in order to match the API description of
+* this routine: no fall back to regular ("slow") GUP.
+*/
+   gup_flags |= (FOLL_PIN | FOLL_FAST_ONLY);
+   nr_pinned = internal_get_user_pages_fast(start, nr_pages, gup_flags,
+pages);
+   /*
+* This routine is not allowed to return negative values. However,
+* internal_get_user_pages_fast() *can* return -errno. Therefore,
+* correct for that here:
+*/
+   if (nr_pinned < 0)
+   nr_pinned = 0;
+
+   return nr_pinned;
+}
+EXPORT_SYMBOL_GPL(pin_user_pages_fast_only);
+
 /**
  * pin_user_pages_remote() - pin pages of a remote process (task != current)
  *
-- 
2.26.2

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


[Intel-gfx] [PATCH 4/4] drm/i915: convert get_user_pages() --> pin_user_pages()

2020-05-18 Thread John Hubbard
This code was using get_user_pages*(), in a "Case 2" scenario
(DMA/RDMA), using the categorization from [1]. That means that it's
time to convert the get_user_pages*() + put_page() calls to
pin_user_pages*() + unpin_user_pages() calls.

There is some helpful background in [2]: basically, this is a small
part of fixing a long-standing disconnect between pinning pages, and
file systems' use of those pages.

[1] Documentation/core-api/pin_user_pages.rst

[2] "Explicit pinning of user-space pages":
https://lwn.net/Articles/807108/

Signed-off-by: John Hubbard 
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 22 -
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c 
b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 7ffd7afeb7a5..b55ac7563189 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -471,7 +471,7 @@ __i915_gem_userptr_get_pages_worker(struct work_struct 
*_work)
down_read(>mmap_sem);
locked = 1;
}
-   ret = get_user_pages_remote
+   ret = pin_user_pages_remote
(work->task, mm,
 obj->userptr.ptr + pinned * PAGE_SIZE,
 npages - pinned,
@@ -507,7 +507,7 @@ __i915_gem_userptr_get_pages_worker(struct work_struct 
*_work)
}
mutex_unlock(>mm.lock);
 
-   release_pages(pvec, pinned);
+   unpin_user_pages(pvec, pinned);
kvfree(pvec);
 
i915_gem_object_put(obj);
@@ -564,6 +564,7 @@ static int i915_gem_userptr_get_pages(struct 
drm_i915_gem_object *obj)
struct sg_table *pages;
bool active;
int pinned;
+   unsigned int gup_flags = 0;
 
/* If userspace should engineer that these pages are replaced in
 * the vma between us binding this page into the GTT and completion
@@ -598,11 +599,14 @@ static int i915_gem_userptr_get_pages(struct 
drm_i915_gem_object *obj)
  GFP_KERNEL |
  __GFP_NORETRY |
  __GFP_NOWARN);
-   if (pvec) /* defer to worker if malloc fails */
-   pinned = __get_user_pages_fast(obj->userptr.ptr,
-  num_pages,
-  
!i915_gem_object_is_readonly(obj),
-  pvec);
+   /* defer to worker if malloc fails */
+   if (pvec) {
+   if (!i915_gem_object_is_readonly(obj))
+   gup_flags |= FOLL_WRITE;
+   pinned = pin_user_pages_fast_only(obj->userptr.ptr,
+ num_pages, gup_flags,
+ pvec);
+   }
}
 
active = false;
@@ -620,7 +624,7 @@ static int i915_gem_userptr_get_pages(struct 
drm_i915_gem_object *obj)
__i915_gem_userptr_set_active(obj, true);
 
if (IS_ERR(pages))
-   release_pages(pvec, pinned);
+   unpin_user_pages(pvec, pinned);
kvfree(pvec);
 
return PTR_ERR_OR_ZERO(pages);
@@ -675,7 +679,7 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
}
 
mark_page_accessed(page);
-   put_page(page);
+   unpin_user_page(page);
}
obj->mm.dirty = false;
 
-- 
2.26.2

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


[Intel-gfx] [PATCH 1/4] mm/gup: move __get_user_pages_fast() down a few lines in gup.c

2020-05-18 Thread John Hubbard
This is in order to avoid a forward declaration of
internal_get_user_pages_fast(), in the next patch.

This is code movement only--all generated code should
be identical.

Signed-off-by: John Hubbard 
---
 mm/gup.c | 112 +++
 1 file changed, 56 insertions(+), 56 deletions(-)

diff --git a/mm/gup.c b/mm/gup.c
index 50cd9323efff..4502846d57f9 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -2666,62 +2666,6 @@ static bool gup_fast_permitted(unsigned long start, 
unsigned long end)
 }
 #endif
 
-/*
- * Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back 
to
- * the regular GUP.
- * Note a difference with get_user_pages_fast: this always returns the
- * number of pages pinned, 0 if no pages were pinned.
- *
- * If the architecture does not support this function, simply return with no
- * pages pinned.
- */
-int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
- struct page **pages)
-{
-   unsigned long len, end;
-   unsigned long flags;
-   int nr_pinned = 0;
-   /*
-* Internally (within mm/gup.c), gup fast variants must set FOLL_GET,
-* because gup fast is always a "pin with a +1 page refcount" request.
-*/
-   unsigned int gup_flags = FOLL_GET;
-
-   if (write)
-   gup_flags |= FOLL_WRITE;
-
-   start = untagged_addr(start) & PAGE_MASK;
-   len = (unsigned long) nr_pages << PAGE_SHIFT;
-   end = start + len;
-
-   if (end <= start)
-   return 0;
-   if (unlikely(!access_ok((void __user *)start, len)))
-   return 0;
-
-   /*
-* Disable interrupts.  We use the nested form as we can already have
-* interrupts disabled by get_futex_key.
-*
-* With interrupts disabled, we block page table pages from being
-* freed from under us. See struct mmu_table_batch comments in
-* include/asm-generic/tlb.h for more details.
-*
-* We do not adopt an rcu_read_lock(.) here as we also want to
-* block IPIs that come from THPs splitting.
-*/
-
-   if (IS_ENABLED(CONFIG_HAVE_FAST_GUP) &&
-   gup_fast_permitted(start, end)) {
-   local_irq_save(flags);
-   gup_pgd_range(start, end, gup_flags, pages, _pinned);
-   local_irq_restore(flags);
-   }
-
-   return nr_pinned;
-}
-EXPORT_SYMBOL_GPL(__get_user_pages_fast);
-
 static int __gup_longterm_unlocked(unsigned long start, int nr_pages,
   unsigned int gup_flags, struct page **pages)
 {
@@ -2794,6 +2738,62 @@ static int internal_get_user_pages_fast(unsigned long 
start, int nr_pages,
return ret;
 }
 
+/*
+ * Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back 
to
+ * the regular GUP.
+ * Note a difference with get_user_pages_fast: this always returns the
+ * number of pages pinned, 0 if no pages were pinned.
+ *
+ * If the architecture does not support this function, simply return with no
+ * pages pinned.
+ */
+int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
+ struct page **pages)
+{
+   unsigned long len, end;
+   unsigned long flags;
+   int nr_pinned = 0;
+   /*
+* Internally (within mm/gup.c), gup fast variants must set FOLL_GET,
+* because gup fast is always a "pin with a +1 page refcount" request.
+*/
+   unsigned int gup_flags = FOLL_GET;
+
+   if (write)
+   gup_flags |= FOLL_WRITE;
+
+   start = untagged_addr(start) & PAGE_MASK;
+   len = (unsigned long) nr_pages << PAGE_SHIFT;
+   end = start + len;
+
+   if (end <= start)
+   return 0;
+   if (unlikely(!access_ok((void __user *)start, len)))
+   return 0;
+
+   /*
+* Disable interrupts.  We use the nested form as we can already have
+* interrupts disabled by get_futex_key.
+*
+* With interrupts disabled, we block page table pages from being
+* freed from under us. See struct mmu_table_batch comments in
+* include/asm-generic/tlb.h for more details.
+*
+* We do not adopt an rcu_read_lock(.) here as we also want to
+* block IPIs that come from THPs splitting.
+*/
+
+   if (IS_ENABLED(CONFIG_HAVE_FAST_GUP) &&
+   gup_fast_permitted(start, end)) {
+   local_irq_save(flags);
+   gup_pgd_range(start, end, gup_flags, pages, _pinned);
+   local_irq_restore(flags);
+   }
+
+   return nr_pinned;
+}
+EXPORT_SYMBOL_GPL(__get_user_pages_fast);
+
 /**
  * get_user_pages_fast() - pin user pages in memory
  * @start:  starting user address
-- 
2.26.2

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


[Intel-gfx] [PATCH 0/4] mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()

2020-05-18 Thread John Hubbard
This needs to go through Andrew's -mm tree, due to adding a new gup.c
routine. However, I would really love to have some testing from the
drm/i915 folks, because I haven't been able to run-time test that part
of it.

Otherwise, though, the series has passed my basic run time testing:
some LTP tests, some xfs and etx4 non-destructive xfstests, and an
assortment of other smaller ones: vm selftests, io_uring_register, a
few more. But that's only on one particular machine. Also, cross-compile
tests for half a dozen arches all pass.

Details:

In order to convert the drm/i915 driver from get_user_pages() to
pin_user_pages(), a FOLL_PIN equivalent of __get_user_pages_fast() was
required. That led to refactoring __get_user_pages_fast(), with the
following goals:

1) As above: provide a pin_user_pages*() routine for drm/i915 to call,
   in place of __get_user_pages_fast(),

2) Get rid of the gup.c duplicate code for walking page tables with
   interrupts disabled. This duplicate code is a minor maintenance
   problem anyway.

3) Make it easy for an upcoming patch from Souptick, which aims to
   convert __get_user_pages_fast() to use a gup_flags argument, instead
   of a bool writeable arg.  Also, if this series looks good, we can
   ask Souptick to change the name as well, to whatever the consensus
   is. My initial recommendation is: get_user_pages_fast_only(), to
   match the new pin_user_pages_only().

John Hubbard (4):
  mm/gup: move __get_user_pages_fast() down a few lines in gup.c
  mm/gup: refactor and de-duplicate gup_fast() code
  mm/gup: introduce pin_user_pages_fast_only()
  drm/i915: convert get_user_pages() --> pin_user_pages()

 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  22 +--
 include/linux/mm.h  |   3 +
 mm/gup.c| 150 
 3 files changed, 107 insertions(+), 68 deletions(-)


base-commit: 642b151f45dd54809ea00ecd3976a56c1ec9b53d
-- 
2.26.2

___
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: trace intel_uncore_*_fw()

2020-05-18 Thread Lucas De Marchi

On Tue, May 19, 2020 at 12:35:02AM +0100, Chris Wilson wrote:

Quoting Lucas De Marchi (2020-05-19 00:30:49)

Now that we have the declaration of trace_i915_reg_rw() in a separate
header, start tracing intel_uncore_*_fw() mmio-accessors.


These were untraced on purpose.


humn... can you share why? I didn't find the purpose of being untraced
anywhere.

Right now I'm debugging the WA initialization and found it helpful to be
able to trace them - 
https://gitlab.freedesktop.org/drm/intel/-/issues/1222#note_503179

thanks
Lucas De Marchi


-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/4] drm/i915: Don't set queue-priority hint when supressing the reschedule

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915: Don't set queue-priority hint when 
supressing the reschedule
URL   : https://patchwork.freedesktop.org/series/77377/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17702


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [SKIP][1] ([fdo#109271]) -> [FAIL][2] ([i915#62] / 
[i915#95])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (52 -> 45)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17702

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17702: c9d0c46590ba517d45fc548ffdac9d81a19ddd37 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

c9d0c46590ba drm/i915/selftests: Check for an initial-breadcrumb in 
wait_for_submit()
01cc89bf4af8 drm/i915/selftests: Restore to default heartbeat
4aca4773f1ae drm/i915/selftests: Change priority overflow detection
c3388b20997e drm/i915: Don't set queue-priority hint when supressing the 
reschedule

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17702/index.html
___
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: trace intel_uncore_*_fw()

2020-05-18 Thread Chris Wilson
Quoting Lucas De Marchi (2020-05-19 00:30:49)
> Now that we have the declaration of trace_i915_reg_rw() in a separate
> header, start tracing intel_uncore_*_fw() mmio-accessors.

These were untraced on purpose.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/4] drm/i915: Don't set queue-priority hint when supressing the reschedule

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915: Don't set queue-priority hint when 
supressing the reschedule
URL   : https://patchwork.freedesktop.org/series/77377/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.0
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/gt/intel_reset.c:1310:5: warning: context imbalance in 
'intel_gt_reset_trylock' - different lock contexts for basic block

___
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: Don't set queue-priority hint when supressing the reschedule

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915: Don't set queue-priority hint when 
supressing the reschedule
URL   : https://patchwork.freedesktop.org/series/77377/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
c3388b20997e drm/i915: Don't set queue-priority hint when supressing the 
reschedule
-:10: WARNING:TYPO_SPELLING: 'runnning' may be misspelled - perhaps 'running'?
#10: 
the HW runnning with only the inflight request.

total: 0 errors, 1 warnings, 0 checks, 28 lines checked
4aca4773f1ae drm/i915/selftests: Change priority overflow detection
01cc89bf4af8 drm/i915/selftests: Restore to default heartbeat
c9d0c46590ba drm/i915/selftests: Check for an initial-breadcrumb in 
wait_for_submit()

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


[Intel-gfx] [PATCH i-g-t 2/2] lib: Cleanup __igt_params_open()

2020-05-18 Thread Chris Wilson
The device always exist, so use it to derive the module name required to
lookup either the debugfs params directory or the sysfs module parameters.

Fixes: 2f5cee33ce55 ("igt/params: use igt_params_set_save for 
igt_set_module_param*")
Signed-off-by: Chris Wilson 
Cc: Jani Nikula 
Cc: Juha-Pekka Heikkila 
---
 lib/igt_params.c | 165 +--
 1 file changed, 29 insertions(+), 136 deletions(-)

diff --git a/lib/igt_params.c b/lib/igt_params.c
index 3decc5b2a..c06416988 100644
--- a/lib/igt_params.c
+++ b/lib/igt_params.c
@@ -80,9 +80,18 @@ static void igt_params_exit_handler(int sig)
  * Notice that this function is called by igt_set_module_param(), so that one -
  * or one of its wrappers - is the only function the test programs need to 
call.
  */
-static void igt_params_save(int dir, const char *path, const char *name)
+static void igt_params_save(int dir, const char *name)
 {
struct module_param_data *data;
+   char path[PATH_MAX];
+   char buf[80];
+   int len;
+
+   snprintf(buf, sizeof(buf), "/proc/self/fd/%d", dir);
+   len = readlink(buf, path, sizeof(path) - 1);
+   if (len < 0)
+   return;
+   path[len] = '\0';
 
/* Check if this parameter is already saved. */
for (data = module_params; data != NULL; data = data->next)
@@ -110,175 +119,59 @@ static void igt_params_save(int dir, const char *path, 
const char *name)
 }
 
 /**
- * __igt_params_open:
- * @device: fd of the device or -1 for default
- * @outpath: full path to the sysfs directory if not NULL
- * @param: name of parameter of interest
- *
- * Find parameter of interest and return parameter directory fd, parameter
- * is first searched at debugfs/dri/N/_params and if not found will
- * look for parameter at /sys/module//parameters.
- *
- * Giving -1 here for default device will search for matching device from
- * debugfs/dri/N where N go from 0 to 63. First device found from debugfs
- * which exist also at /sys/module/ will be 'default'.
- * Default device will only be used for sysfs, not for debugfs.
+ * igt_params_open:
+ * @device: fd of the device
  *
- * If outpath is not NULL caller is responsible to free given pointer.
+ * This opens the module parameters directory (under sysfs) corresponding
+ * to the device for use with igt_sysfs_set() and igt_sysfs_get().
  *
  * Returns:
- * Directory fd, or -1 on failure.
+ * The directory fd, or -1 on failure.
  */
-static int __igt_params_open(int device, char **outpath, const char *param)
+int igt_params_open(int device)
 {
+   drm_version_t version;
int dir, params = -1;
-   struct stat buffer;
-   char searchname[64];
-   char searchpath[PATH_MAX];
-   char *foundname, *ctx;
+   char path[PATH_MAX];
+   char name[32] = "";
+
+   memset(, 0, sizeof(version));
+   version.name_len = sizeof(name);
+   version.name = name;
+   if (ioctl(device, DRM_IOCTL_VERSION, ))
+   return -1;
 
dir = igt_debugfs_dir(device);
if (dir >= 0) {
-   int devname;
-
-   devname = openat(dir, "name", O_RDONLY);
-   igt_require_f(devname >= 0,
- "Driver need to name itself in debugfs!");
-
-   read(devname, searchname, sizeof(searchname));
-   close(devname);
-
-   foundname = strtok_r(searchname, " ", );
-   igt_require_f(foundname,
- "Driver need to name itself in debugfs!");
-
-   snprintf(searchpath, PATH_MAX, "%s_params", foundname);
-   params = openat(dir, searchpath, O_RDONLY);
-
-   if (params >= 0) {
-   char *debugfspath = malloc(PATH_MAX);
-
-   igt_debugfs_path(device, debugfspath, PATH_MAX);
-   if (param != NULL) {
-   char filepath[PATH_MAX];
-
-   snprintf(filepath, PATH_MAX, "%s/%s",
-debugfspath, param);
-
-   if (stat(filepath, ) == 0) {
-   if (outpath != NULL)
-   *outpath = debugfspath;
-   else
-   free(debugfspath);
-   } else {
-   free(debugfspath);
-   close(params);
-   params = -1;
-   }
-   } else if (outpath != NULL) {
-   /*
-* Caller is responsible to free this.
-*/
-   *outpath = debugfspath;
-   } else {
-   free(debugfspath);
-   

[Intel-gfx] [PATCH i-g-t 1/2] Always pass device to igt_params_set

2020-05-18 Thread Chris Wilson
Don't second guess, require the user to provide the device that wish to
set the module parameter for.

Signed-off-by: Chris Wilson 
---
 lib/igt_params.c  |  8 
 lib/igt_params.h  |  4 ++--
 lib/igt_psr.c | 18 -
 lib/igt_psr.h |  6 +++---
 tests/i915/i915_pm_dc.c   | 12 ++--
 tests/kms_busy.c  |  8 
 tests/kms_fbcon_fbt.c | 32 +++
 tests/kms_force_connector_basic.c |  6 +++---
 tests/kms_frontbuffer_tracking.c  | 10 +-
 tests/kms_panel_fitting.c |  2 +-
 tests/kms_psr.c   |  6 +++---
 tests/kms_psr2_su.c   |  6 --
 12 files changed, 60 insertions(+), 58 deletions(-)

diff --git a/lib/igt_params.c b/lib/igt_params.c
index d8649dfd9..3decc5b2a 100644
--- a/lib/igt_params.c
+++ b/lib/igt_params.c
@@ -343,9 +343,9 @@ bool igt_params_save_and_set(int device, const char 
*parameter, const char *fmt,
  * Please consider using igt_set_module_param_int() for the integer and bool
  * parameters.
  */
-void igt_set_module_param(const char *name, const char *val)
+void igt_set_module_param(int device, const char *name, const char *val)
 {
-   igt_assert(igt_params_save_and_set(-1, name, "%s", val));
+   igt_assert(igt_params_save_and_set(device, name, "%s", val));
 }
 
 /**
@@ -356,7 +356,7 @@ void igt_set_module_param(const char *name, const char *val)
  * This is a wrapper for igt_set_module_param() that takes an integer instead 
of
  * a string. Please see igt_set_module_param().
  */
-void igt_set_module_param_int(const char *name, int val)
+void igt_set_module_param_int(int device, const char *name, int val)
 {
-   igt_assert(igt_params_save_and_set(-1, name, "%d", val));
+   igt_assert(igt_params_save_and_set(device, name, "%d", val));
 }
diff --git a/lib/igt_params.h b/lib/igt_params.h
index ed17f34a5..bbd6f3ee6 100644
--- a/lib/igt_params.h
+++ b/lib/igt_params.h
@@ -34,7 +34,7 @@ bool igt_params_set(int device, const char *parameter, const 
char *fmt, ...);
 __attribute__((format(printf, 3, 4)))
 bool igt_params_save_and_set(int device, const char *parameter, const char 
*fmt, ...);
 
-void igt_set_module_param(const char *name, const char *val);
-void igt_set_module_param_int(const char *name, int val);
+void igt_set_module_param(int device, const char *name, const char *val);
+void igt_set_module_param_int(int device, const char *name, int val);
 
 #endif /* __IGT_PARAMS_H__ */
diff --git a/lib/igt_psr.c b/lib/igt_psr.c
index c2a8d0e11..4109b5295 100644
--- a/lib/igt_psr.c
+++ b/lib/igt_psr.c
@@ -94,11 +94,11 @@ static int has_psr_debugfs(int debugfs_fd)
return -EINVAL;
 }
 
-static bool psr_modparam_set(int val)
+static bool psr_modparam_set(int device, int val)
 {
static int oldval = -1;
 
-   igt_set_module_param_int("enable_psr", val);
+   igt_set_module_param_int(device, "enable_psr", val);
 
if (val == oldval)
return false;
@@ -114,7 +114,7 @@ static void restore_psr_debugfs(int sig)
psr_write(psr_restore_debugfs_fd, "0");
 }
 
-static bool psr_set(int debugfs_fd, int mode)
+static bool psr_set(int device, int debugfs_fd, int mode)
 {
int ret;
 
@@ -131,7 +131,7 @@ static bool psr_set(int debugfs_fd, int mode)
 * version enabled and the PSR version of the test, it will
 * fail in the first psr_wait_entry() of the test.
 */
-   ret = psr_modparam_set(mode >= PSR_MODE_1);
+   ret = psr_modparam_set(device, mode >= PSR_MODE_1);
} else {
const char *debug_val;
 
@@ -161,18 +161,18 @@ static bool psr_set(int debugfs_fd, int mode)
return ret;
 }
 
-bool psr_enable(int debugfs_fd, enum psr_mode mode)
+bool psr_enable(int device, int debugfs_fd, enum psr_mode mode)
 {
-   return psr_set(debugfs_fd, mode);
+   return psr_set(device, debugfs_fd, mode);
 }
 
-bool psr_disable(int debugfs_fd)
+bool psr_disable(int device, int debugfs_fd)
 {
/* Any mode different than PSR_MODE_1/2 will disable PSR */
-   return psr_set(debugfs_fd, -1);
+   return psr_set(device, debugfs_fd, -1);
 }
 
-bool psr_sink_support(int debugfs_fd, enum psr_mode mode)
+bool psr_sink_support(int device, int debugfs_fd, enum psr_mode mode)
 {
char buf[PSR_STATUS_MAX_LEN];
int ret;
diff --git a/lib/igt_psr.h b/lib/igt_psr.h
index 02ce760b2..b2afb6119 100644
--- a/lib/igt_psr.h
+++ b/lib/igt_psr.h
@@ -39,9 +39,9 @@ bool psr_disabled_check(int debugfs_fd);
 bool psr_wait_entry(int debugfs_fd, enum psr_mode mode);
 bool psr_wait_update(int debugfs_fd, enum psr_mode mode);
 bool psr_long_wait_update(int debugfs_fd, enum psr_mode mode);
-bool psr_enable(int debugfs_fd, enum psr_mode);
-bool psr_disable(int debugfs_fd);
-bool psr_sink_support(int debugfs_fd, enum psr_mode);
+bool psr_enable(int device, int 

[Intel-gfx] [PATCH 2/2] drm/i915: trace intel_uncore_*_fw()

2020-05-18 Thread Lucas De Marchi
Now that we have the declaration of trace_i915_reg_rw() in a separate
header, start tracing intel_uncore_*_fw() mmio-accessors.

Signed-off-by: Lucas De Marchi 
---
 drivers/gpu/drm/i915/intel_uncore.h | 27 ++-
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_uncore.h 
b/drivers/gpu/drm/i915/intel_uncore.h
index 8d3aa8b9acf9..0f95b32ff0f0 100644
--- a/drivers/gpu/drm/i915/intel_uncore.h
+++ b/drivers/gpu/drm/i915/intel_uncore.h
@@ -31,6 +31,7 @@
 #include 
 
 #include "i915_reg.h"
+#include "i915_trace_reg_rw.h"
 
 struct drm_i915_private;
 struct intel_runtime_pm;
@@ -348,8 +349,9 @@ intel_uncore_read64_2x32(struct intel_uncore *uncore,
 #undef __uncore_read
 #undef __uncore_write
 
-/* These are untraced mmio-accessors that are only valid to be used inside
- * critical sections, such as inside IRQ handlers, where forcewake is 
explicitly
+/*
+ * These are mmio-accessors that are only valid to be used inside critical
+ * sections, such as inside IRQ handlers, where forcewake is explicitly
  * controlled.
  *
  * Think twice, and think again, before using these.
@@ -374,9 +376,24 @@ intel_uncore_read64_2x32(struct intel_uncore *uncore,
  * therefore generally be serialised, by either the dev_priv->uncore.lock or
  * a more localised lock guarding all access to that bank of registers.
  */
-#define intel_uncore_read_fw(...) __raw_uncore_read32(__VA_ARGS__)
-#define intel_uncore_write_fw(...) __raw_uncore_write32(__VA_ARGS__)
-#define intel_uncore_write64_fw(...) __raw_uncore_write64(__VA_ARGS__)
+#define intel_uncore_read_fw(uncore, reg) ({ \
+   typeof(reg) reg___ = reg; \
+   u32 val___ = __raw_uncore_read32(uncore, (reg___)); \
+   trace_i915_reg_rw(false, reg___, val___, sizeof(val___), true); \
+   val___; })
+
+#define intel_uncore_write_fw(uncore, reg, val) ({ \
+   typeof(reg) reg___ = reg; \
+   typeof(val) val___ =  val; \
+   trace_i915_reg_rw(true, reg___, val___, sizeof(val___), true); \
+   __raw_uncore_write32(uncore, reg___, val___); })
+
+#define intel_uncore_write64_fw(uncore, reg, val) ({ \
+   typeof(reg) reg___ = reg; \
+   typeof(val) val___ =  val; \
+   trace_i915_reg_rw(true, reg___, val___, sizeof(val___), true); \
+   __raw_uncore_write64(uncore, reg___, val___); })
+
 #define intel_uncore_posting_read_fw(...) 
((void)intel_uncore_read_fw(__VA_ARGS__))
 
 static inline void intel_uncore_rmw(struct intel_uncore *uncore,
-- 
2.26.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: move trace_i915_reg_rw() to a separate file

2020-05-18 Thread Lucas De Marchi
Currently we can't call trace_i915_reg_rw() from some headers due to
include order and i915_trace.h needing some struct definitions.

Move the declaration of trace_i915_reg_rw() to another file so it can be
included separately. Note that the trace points are still defined by
i915_trace_point.c which contains all trace points for i915. As such the
i915_trace_reg_rw() is just declared in a separate header, but its
definition is still in a single place.

Signed-off-by: Lucas De Marchi 
---
 drivers/gpu/drm/i915/i915_trace.h| 30 ++---
 drivers/gpu/drm/i915/i915_trace_reg_rw.h | 42 
 2 files changed, 44 insertions(+), 28 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_trace_reg_rw.h

diff --git a/drivers/gpu/drm/i915/i915_trace.h 
b/drivers/gpu/drm/i915/i915_trace.h
index bc854ad60954..24b8e41600af 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -914,34 +914,6 @@ DEFINE_EVENT(i915_request, i915_request_wait_end,
TP_ARGS(rq)
 );
 
-TRACE_EVENT_CONDITION(i915_reg_rw,
-   TP_PROTO(bool write, i915_reg_t reg, u64 val, int len, bool trace),
-
-   TP_ARGS(write, reg, val, len, trace),
-
-   TP_CONDITION(trace),
-
-   TP_STRUCT__entry(
-   __field(u64, val)
-   __field(u32, reg)
-   __field(u16, write)
-   __field(u16, len)
-   ),
-
-   TP_fast_assign(
-   __entry->val = (u64)val;
-   __entry->reg = i915_mmio_reg_offset(reg);
-   __entry->write = write;
-   __entry->len = len;
-   ),
-
-   TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)",
-   __entry->write ? "write" : "read",
-   __entry->reg, __entry->len,
-   (u32)(__entry->val & 0x),
-   (u32)(__entry->val >> 32))
-);
-
 TRACE_EVENT(intel_gpu_freq_change,
TP_PROTO(u32 freq),
TP_ARGS(freq),
@@ -1031,6 +1003,8 @@ DEFINE_EVENT(i915_context, i915_context_free,
TP_ARGS(ctx)
 );
 
+#include "i915_trace_reg_rw.h"
+
 #endif /* _I915_TRACE_H_ */
 
 /* This part must be outside protection */
diff --git a/drivers/gpu/drm/i915/i915_trace_reg_rw.h 
b/drivers/gpu/drm/i915/i915_trace_reg_rw.h
new file mode 100644
index ..2b0f2f00fbc9
--- /dev/null
+++ b/drivers/gpu/drm/i915/i915_trace_reg_rw.h
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * protect against inclusions if it has already being included by the main file
+ */
+#if !defined(_I915_TRACE_REG_RW_H_) ||  defined(TRACE_HEADER_MULTI_READ)
+#define _I915_TRACE_REG_RW_H_
+
+#include 
+#include 
+#include 
+
+#include "i915_reg.h"
+
+TRACE_EVENT_CONDITION(i915_reg_rw,
+   TP_PROTO(bool write, i915_reg_t reg, u64 val, int len, bool trace),
+
+   TP_ARGS(write, reg, val, len, trace),
+
+   TP_CONDITION(trace),
+
+   TP_STRUCT__entry(
+   __field(u64, val)
+   __field(u32, reg)
+   __field(u16, write)
+   __field(u16, len)
+   ),
+
+   TP_fast_assign(
+   __entry->val = (u64)val;
+   __entry->reg = i915_mmio_reg_offset(reg);
+   __entry->write = write;
+   __entry->len = len;
+   ),
+
+   TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)",
+   __entry->write ? "write" : "read",
+   __entry->reg, __entry->len,
+   (u32)(__entry->val & 0x),
+   (u32)(__entry->val >> 32))
+);
+
+#endif
-- 
2.26.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: Resolve device hotunplug issues

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: Resolve device hotunplug issues
URL   : https://patchwork.freedesktop.org/series/77372/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17701


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_chamelium@dp-crc-fast:
- fi-icl-u2:  [PASS][1] -> [FAIL][2] ([i915#262])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-icl-u2/igt@kms_chamel...@dp-crc-fast.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17701/fi-icl-u2/igt@kms_chamel...@dp-crc-fast.html

  
  [i915#262]: https://gitlab.freedesktop.org/drm/intel/issues/262


Participating hosts (52 -> 45)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17701

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17701: 721e7aad8fe545ebf5b6c946880abbc18b0838e3 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

721e7aad8fe5 drm/i915: Move UC firmware cleanup from driver_release to _remove
6790fa9abcae drm/i915: Move GGTT cleanup from driver_release to _remove
8fd9c3d7066d drm/i915: Release GT resources on driver remove
4d3df739b858 drm/i915: Drop user contexts on driver remove

== Logs ==

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


[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/gvt: Use ARRAY_SIZE for vgpu_types

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/gvt: Use ARRAY_SIZE for vgpu_types
URL   : https://patchwork.freedesktop.org/series/77369/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498_full -> Patchwork_17699_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-apl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl6/igt@kms_cursor_...@pipe-c-cursor-suspend.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-apl8/igt@kms_cursor_...@pipe-c-cursor-suspend.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-skl:  [PASS][3] -> [FAIL][4] ([IGT#5])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl10/igt@kms_cursor_leg...@flip-vs-cursor-atomic.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl2/igt@kms_cursor_leg...@flip-vs-cursor-atomic.html

  * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-untiled:
- shard-skl:  [PASS][5] -> [FAIL][6] ([i915#177] / [i915#52] / 
[i915#54])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@kms_draw_...@draw-method-xrgb-mmap-cpu-untiled.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl4/igt@kms_draw_...@draw-method-xrgb-mmap-cpu-untiled.html

  * igt@kms_fbcon_fbt@psr-suspend:
- shard-skl:  [PASS][7] -> [INCOMPLETE][8] ([i915#69])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl8/igt@kms_fbcon_...@psr-suspend.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl10/igt@kms_fbcon_...@psr-suspend.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][9] -> [FAIL][10] ([i915#95])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl8/igt@kms_flip_til...@flip-changes-tiling.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-apl6/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][11] -> [FAIL][12] ([i915#1188]) +1 similar 
issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl7/igt@kms_...@bpc-switch-dpms.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl5/igt@kms_...@bpc-switch-dpms.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
- shard-kbl:  [PASS][13] -> [DMESG-WARN][14] ([i915#180])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-kbl1/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-kbl2/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][15] -> [FAIL][16] ([fdo#108145] / [i915#265]) 
+3 similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl3/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl1/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_sprite_render:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441]) +2 similar 
issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-iclb7/igt@kms_psr@psr2_sprite_render.html

  * igt@perf@blocking:
- shard-skl:  [PASS][19] -> [FAIL][20] ([i915#1542])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl5/igt@p...@blocking.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl4/igt@p...@blocking.html

  
 Possible fixes 

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [DMESG-WARN][21] ([i915#1436] / [i915#716]) -> 
[PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-apl1/igt@gen9_exec_pa...@allowed-all.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-apl7/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_selftest@live@execlists:
- shard-skl:  [INCOMPLETE][23] ([i915#1795] / [i915#1874]) -> 
[PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/shard-skl2/igt@i915_selftest@l...@execlists.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/shard-skl7/igt@i915_selftest@l...@execlists.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [DMESG-WARN][25] ([i915#180]) -> [PASS][26] +4 
similar issues
   [25]: 

[Intel-gfx] [PATCH 1/4] drm/i915: Don't set queue-priority hint when supressing the reschedule

2020-05-18 Thread Chris Wilson
We recorded the execlists->queue_priority_hint update for the inflight
request without kicking the tasklet. The next submitted request then
failed to be scheduled as it had a lower priority than the hint, leaving
the HW runnning with only the inflight request.

Fixes: 6cebcf746f3f ("drm/i915: Tweak scheduler's kick_submission()")
Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/i915_scheduler.c | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_scheduler.c 
b/drivers/gpu/drm/i915/i915_scheduler.c
index f4ea318781f0..cbb880b10c65 100644
--- a/drivers/gpu/drm/i915/i915_scheduler.c
+++ b/drivers/gpu/drm/i915/i915_scheduler.c
@@ -209,14 +209,6 @@ static void kick_submission(struct intel_engine_cs *engine,
if (!inflight)
goto unlock;
 
-   ENGINE_TRACE(engine,
-"bumping queue-priority-hint:%d for rq:%llx:%lld, 
inflight:%llx:%lld prio %d\n",
-prio,
-rq->fence.context, rq->fence.seqno,
-inflight->fence.context, inflight->fence.seqno,
-inflight->sched.attr.priority);
-   engine->execlists.queue_priority_hint = prio;
-
/*
 * If we are already the currently executing context, don't
 * bother evaluating if we should preempt ourselves.
@@ -224,6 +216,14 @@ static void kick_submission(struct intel_engine_cs *engine,
if (inflight->context == rq->context)
goto unlock;
 
+   ENGINE_TRACE(engine,
+"bumping queue-priority-hint:%d for rq:%llx:%lld, 
inflight:%llx:%lld prio %d\n",
+prio,
+rq->fence.context, rq->fence.seqno,
+inflight->fence.context, inflight->fence.seqno,
+inflight->sched.attr.priority);
+
+   engine->execlists.queue_priority_hint = prio;
if (need_preempt(prio, rq_prio(inflight)))
tasklet_hi_schedule(>execlists.tasklet);
 
-- 
2.20.1

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


[Intel-gfx] [PATCH 2/4] drm/i915/selftests: Change priority overflow detection

2020-05-18 Thread Chris Wilson
Check for integer overflow in the priority chain, rather than against a
type-constricted max-priority check.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/selftest_lrc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index 97447de92843..f128744ab09b 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -2735,12 +2735,12 @@ static int live_preempt_gang(void *arg)
/* Submit each spinner at increasing priority */
engine->schedule(rq, );
 
+   if (prio < attr.priority)
+   break;
+
if (prio <= I915_PRIORITY_MAX)
continue;
 
-   if (prio > (INT_MAX >> I915_USER_PRIORITY_SHIFT))
-   break;
-
if (__igt_timeout(end_time, NULL))
break;
} while (1);
-- 
2.20.1

___
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: Check for an initial-breadcrumb in wait_for_submit()

2020-05-18 Thread Chris Wilson
When we look at i915_request_is_started() we must be careful in case we
are using a request that does not have the initial-breadcrumb and
instead the is-started is being compared against the end of the previous
request. This will make wait_for_submit() declare that a request has
been already submitted too early.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/selftest_lrc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index 3cf7c0b13ab4..c3d722840e2d 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -75,7 +75,7 @@ static bool is_active(struct i915_request *rq)
if (i915_request_on_hold(rq))
return true;
 
-   if (i915_request_started(rq))
+   if (i915_request_has_initial_breadcrumb(rq) && i915_request_started(rq))
return true;
 
return false;
-- 
2.20.1

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


[Intel-gfx] [PATCH 3/4] drm/i915/selftests: Restore to default heartbeat

2020-05-18 Thread Chris Wilson
Since we temporarily disable the heartbeat and restore back to the
default value, we can use the stored defaults on the engine and avoid
using a local.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c | 25 +++
 drivers/gpu/drm/i915/gt/selftest_lrc.c   | 67 +++
 drivers/gpu/drm/i915/gt/selftest_rps.c   | 69 
 drivers/gpu/drm/i915/gt/selftest_timeline.c  | 15 ++---
 4 files changed, 67 insertions(+), 109 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c 
b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
index 2b2efff6e19d..4aa4cc917d8b 100644
--- a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
+++ b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
@@ -310,22 +310,20 @@ static bool wait_until_running(struct hang *h, struct 
i915_request *rq)
  1000));
 }
 
-static void engine_heartbeat_disable(struct intel_engine_cs *engine,
-unsigned long *saved)
+static void engine_heartbeat_disable(struct intel_engine_cs *engine)
 {
-   *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)
+static void engine_heartbeat_enable(struct intel_engine_cs *engine)
 {
intel_engine_pm_put(engine);
 
-   engine->props.heartbeat_interval_ms = saved;
+   engine->props.heartbeat_interval_ms =
+   engine->defaults.heartbeat_interval_ms;
 }
 
 static int igt_hang_sanitycheck(void *arg)
@@ -473,7 +471,6 @@ static int igt_reset_nop_engine(void *arg)
for_each_engine(engine, gt, id) {
unsigned int reset_count, reset_engine_count, count;
struct intel_context *ce;
-   unsigned long heartbeat;
IGT_TIMEOUT(end_time);
int err;
 
@@ -485,7 +482,7 @@ static int igt_reset_nop_engine(void *arg)
reset_engine_count = i915_reset_engine_count(global, engine);
count = 0;
 
-   engine_heartbeat_disable(engine, );
+   engine_heartbeat_disable(engine);
set_bit(I915_RESET_ENGINE + id, >reset.flags);
do {
int i;
@@ -529,7 +526,7 @@ static int igt_reset_nop_engine(void *arg)
}
} while (time_before(jiffies, end_time));
clear_bit(I915_RESET_ENGINE + id, >reset.flags);
-   engine_heartbeat_enable(engine, heartbeat);
+   engine_heartbeat_enable(engine);
 
pr_info("%s(%s): %d resets\n", __func__, engine->name, count);
 
@@ -564,7 +561,6 @@ static int __igt_reset_engine(struct intel_gt *gt, bool 
active)
 
for_each_engine(engine, gt, id) {
unsigned int reset_count, reset_engine_count;
-   unsigned long heartbeat;
IGT_TIMEOUT(end_time);
 
if (active && !intel_engine_can_store_dword(engine))
@@ -580,7 +576,7 @@ static int __igt_reset_engine(struct intel_gt *gt, bool 
active)
reset_count = i915_reset_count(global);
reset_engine_count = i915_reset_engine_count(global, engine);
 
-   engine_heartbeat_disable(engine, );
+   engine_heartbeat_disable(engine);
set_bit(I915_RESET_ENGINE + id, >reset.flags);
do {
if (active) {
@@ -632,7 +628,7 @@ static int __igt_reset_engine(struct intel_gt *gt, bool 
active)
}
} while (time_before(jiffies, end_time));
clear_bit(I915_RESET_ENGINE + id, >reset.flags);
-   engine_heartbeat_enable(engine, heartbeat);
+   engine_heartbeat_enable(engine);
 
if (err)
break;
@@ -789,7 +785,6 @@ static int __igt_reset_engines(struct intel_gt *gt,
struct active_engine threads[I915_NUM_ENGINES] = {};
unsigned long device = i915_reset_count(global);
unsigned long count = 0, reported;
-   unsigned long heartbeat;
IGT_TIMEOUT(end_time);
 
if (flags & TEST_ACTIVE &&
@@ -832,7 +827,7 @@ static int __igt_reset_engines(struct intel_gt *gt,
 
yield(); /* start all threads before we begin */
 
-   engine_heartbeat_disable(engine, );
+   engine_heartbeat_disable(engine);
set_bit(I915_RESET_ENGINE + id, >reset.flags);
do {
struct i915_request *rq = NULL;
@@ -906,7 +901,7 @@ static int __igt_reset_engines(struct intel_gt *gt,
}
} while (time_before(jiffies, end_time));
clear_bit(I915_RESET_ENGINE + id, 

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915: Resolve device hotunplug issues

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: Resolve device hotunplug issues
URL   : https://patchwork.freedesktop.org/series/77372/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.0
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_display.c:1222:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1225:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1228:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1231:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2312:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2313:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2314:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2315:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2316:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2317:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gt/intel_reset.c:1310:5: warning: context imbalance in 
'intel_gt_reset_trylock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/sysfs_engines.c:61:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:62:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:66:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gvt/mmio.c:287:23: warning: memcpy with byte count of 
279040
+drivers/gpu/drm/i915/i915_perf.c:1425:15: warning: memset with byte count of 
16777216
+drivers/gpu/drm/i915/i915_perf.c:1479:15: warning: memset with byte count of 
16777216
+./include/linux/compiler.h:199:9: warning: context imbalance in 
'engines_sample' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 'gen6_read16' 
- different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 'gen6_read32' 
- 

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Resolve device hotunplug issues

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: Resolve device hotunplug issues
URL   : https://patchwork.freedesktop.org/series/77372/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
4d3df739b858 drm/i915: Drop user contexts on driver remove
-:19: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description 
(prefer a maximum 75 chars per line)
#19: 
<4> [36.901117] CPU: 0 PID: 39 Comm: kworker/u8:1 Tainted: G U  W 
5.7.0-rc5-CI-CI_DRM_8485+ #1

-:66: WARNING:UNNECESSARY_INT: Prefer 'unsigned long' over 'unsigned long int' 
as the int is unnecessary
#66: FILE: drivers/gpu/drm/i915/gem/i915_gem_context.c:937:
+   unsigned long int id;

-:73: WARNING:UNNECESSARY_INT: Prefer 'unsigned long' over 'unsigned long int' 
as the int is unnecessary
#73: FILE: drivers/gpu/drm/i915/gem/i915_gem_context.c:944:
+   unsigned long int idx;

total: 0 errors, 3 warnings, 0 checks, 59 lines checked
8fd9c3d7066d drm/i915: Release GT resources on driver remove
-:22: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description 
(prefer a maximum 75 chars per line)
#22: 
<4> [39.201162] CPU: 6 PID: 7 Comm: kworker/u16:0 Tainted: G U  W 
5.7.0-rc5-CI-CI_DRM_8485+ #1

total: 0 errors, 1 warnings, 0 checks, 8 lines checked
6790fa9abcae drm/i915: Move GGTT cleanup from driver_release to _remove
-:57: WARNING:BAD_SIGN_OFF: Duplicate signature
#57: 
Signed-off-by: Janusz Krzysztofik 

total: 0 errors, 1 warnings, 0 checks, 53 lines checked
721e7aad8fe5 drm/i915: Move UC firmware cleanup from driver_release to _remove
-:13: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description 
(prefer a maximum 75 chars per line)
#13: 
<4> [93.336056] WARNING: CPU: 6 PID: 200 at 
drivers/gpu/drm/i915/intel_runtime_pm.c:361 __intel_runtime_pm_get+0x4d/0x60 
[i915]

total: 0 errors, 1 warnings, 0 checks, 15 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: Check for an initial-breadcrumb in wait_for_submit()

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Check for an initial-breadcrumb in wait_for_submit()
URL   : https://patchwork.freedesktop.org/series/77371/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17700


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@execlists:
- fi-cfl-8700k:   [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-cfl-8700k/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17700/fi-cfl-8700k/igt@i915_selftest@l...@execlists.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-tgl-y:   [PASS][3] -> [INCOMPLETE][4] ([i915#1803])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-tgl-y/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17700/fi-tgl-y/igt@i915_selftest@l...@execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [SKIP][5] ([fdo#109271]) -> [FAIL][6] ([i915#62])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17700/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1803]: https://gitlab.freedesktop.org/drm/intel/issues/1803
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62


Participating hosts (52 -> 44)
--

  Missing(8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17700

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17700: 45dd86e4e757389f0092db49380a1587abb41da3 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

45dd86e4e757 drm/i915/selftests: Check for an initial-breadcrumb in 
wait_for_submit()

== Logs ==

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


[Intel-gfx] [PATCH i-g-t] lib: Cleanup __igt_params_open()

2020-05-18 Thread Chris Wilson
The device always exist, so use it to derive the module name required to
lookup either the debugfs params directory or the sysfs module parameters.

Fixes: 2f5cee33ce55 ("igt/params: use igt_params_set_save for 
igt_set_module_param*")
Signed-off-by: Chris Wilson 
Cc: Jani Nikula 
Cc: Juha-Pekka Heikkila 
---
 lib/igt_params.c | 165 +--
 1 file changed, 29 insertions(+), 136 deletions(-)

diff --git a/lib/igt_params.c b/lib/igt_params.c
index d8649dfd9..23660f445 100644
--- a/lib/igt_params.c
+++ b/lib/igt_params.c
@@ -80,9 +80,18 @@ static void igt_params_exit_handler(int sig)
  * Notice that this function is called by igt_set_module_param(), so that one -
  * or one of its wrappers - is the only function the test programs need to 
call.
  */
-static void igt_params_save(int dir, const char *path, const char *name)
+static void igt_params_save(int dir, const char *name)
 {
struct module_param_data *data;
+   char path[PATH_MAX];
+   char buf[80];
+   int len;
+
+   snprintf(buf, sizeof(buf), "/proc/self/fd/%d", dir);
+   len = readlink(buf, path, sizeof(path) - 1);
+   if (len < 0)
+   return;
+   path[len] = '\0';
 
/* Check if this parameter is already saved. */
for (data = module_params; data != NULL; data = data->next)
@@ -110,175 +119,59 @@ static void igt_params_save(int dir, const char *path, 
const char *name)
 }
 
 /**
- * __igt_params_open:
- * @device: fd of the device or -1 for default
- * @outpath: full path to the sysfs directory if not NULL
- * @param: name of parameter of interest
- *
- * Find parameter of interest and return parameter directory fd, parameter
- * is first searched at debugfs/dri/N/_params and if not found will
- * look for parameter at /sys/module//parameters.
- *
- * Giving -1 here for default device will search for matching device from
- * debugfs/dri/N where N go from 0 to 63. First device found from debugfs
- * which exist also at /sys/module/ will be 'default'.
- * Default device will only be used for sysfs, not for debugfs.
+ * igt_params_open:
+ * @device: fd of the device
  *
- * If outpath is not NULL caller is responsible to free given pointer.
+ * This opens the module parameters directory (under sysfs) corresponding
+ * to the device for use with igt_sysfs_set() and igt_sysfs_get().
  *
  * Returns:
- * Directory fd, or -1 on failure.
+ * The directory fd, or -1 on failure.
  */
-static int __igt_params_open(int device, char **outpath, const char *param)
+int igt_params_open(int device)
 {
+   drm_version_t version;
int dir, params = -1;
-   struct stat buffer;
-   char searchname[64];
-   char searchpath[PATH_MAX];
-   char *foundname, *ctx;
+   char path[PATH_MAX];
+   char name[32] = "";
+
+   memset(, 0, sizeof(version));
+   version.name_len = sizeof(name);
+   version.name = name;
+   if (ioctl(device, DRM_IOCTL_VERSION, ))
+   return -1;
 
dir = igt_debugfs_dir(device);
if (dir >= 0) {
-   int devname;
-
-   devname = openat(dir, "name", O_RDONLY);
-   igt_require_f(devname >= 0,
- "Driver need to name itself in debugfs!");
-
-   read(devname, searchname, sizeof(searchname));
-   close(devname);
-
-   foundname = strtok_r(searchname, " ", );
-   igt_require_f(foundname,
- "Driver need to name itself in debugfs!");
-
-   snprintf(searchpath, PATH_MAX, "%s_params", foundname);
-   params = openat(dir, searchpath, O_RDONLY);
-
-   if (params >= 0) {
-   char *debugfspath = malloc(PATH_MAX);
-
-   igt_debugfs_path(device, debugfspath, PATH_MAX);
-   if (param != NULL) {
-   char filepath[PATH_MAX];
-
-   snprintf(filepath, PATH_MAX, "%s/%s",
-debugfspath, param);
-
-   if (stat(filepath, ) == 0) {
-   if (outpath != NULL)
-   *outpath = debugfspath;
-   else
-   free(debugfspath);
-   } else {
-   free(debugfspath);
-   close(params);
-   params = -1;
-   }
-   } else if (outpath != NULL) {
-   /*
-* Caller is responsible to free this.
-*/
-   *outpath = debugfspath;
-   } else {
-   free(debugfspath);
-   

[Intel-gfx] [PATCH i-g-t] perf: Hide any leak in gen8-unprivileged-single-ctx-counters

2020-05-18 Thread Chris Wilson
gen8-unprivileged-single-counters appears to leak contexts, and does not
appear to be doing so intentionally.. Let's assume it's a bug in the
test and see if the contexts are released along with the device fd.
(If they are not released, that is more clearly an issue.)

Signed-off-by: Chris Wilson 
---
 tests/i915/gem_exec_fence.c | 2 +-
 tests/perf.c| 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/i915/gem_exec_fence.c b/tests/i915/gem_exec_fence.c
index 5b504e5c8..b88472c3a 100644
--- a/tests/i915/gem_exec_fence.c
+++ b/tests/i915/gem_exec_fence.c
@@ -1479,7 +1479,7 @@ static void test_syncobj_future_submit(int i915, unsigned 
int engine)
/*
 * Here we submit client A waiting on client B, but internally client
 * B has a semaphore that waits on client A. This relies on timeslicing
-* to reorder B before A, even though userspace has asked to submit
+* to reorder A before B, even though userspace has asked to submit
 * A & B simultaneously (and due to the sequence we will submit B
 * then A).
 */
diff --git a/tests/perf.c b/tests/perf.c
index d4ebae30d..c78f02a8d 100644
--- a/tests/perf.c
+++ b/tests/perf.c
@@ -3428,6 +3428,8 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
.format = test_set->perf_oa_format
};
 
+   drm_fd = gem_reopen_driver(drm_fd);
+
bufmgr = drm_intel_bufmgr_gem_init(drm_fd, 4096);
drm_intel_bufmgr_gem_enable_reuse(bufmgr);
 
-- 
2.26.2

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


[Intel-gfx] [PATCH i-g-t] lib/i915: Reset all engine properties to defaults prior to the start of a test

2020-05-18 Thread Chris Wilson
We need each test in an isolated context, so that bad results from one
test do not interfere with the next. In particular, we want to clean up
the device and reset it to the defaults so that they are known for the
next test, and the test can focus on behaviour it wants to control.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Joonas Lahtinen 
---
 lib/i915/gem.c   | 85 
 lib/igt_dummyload.c  |  2 -
 lib/igt_gt.c |  2 -
 tests/i915/gem_ctx_persistence.c |  1 -
 4 files changed, 85 insertions(+), 5 deletions(-)

diff --git a/lib/i915/gem.c b/lib/i915/gem.c
index cabd23768..3ef31ed33 100644
--- a/lib/i915/gem.c
+++ b/lib/i915/gem.c
@@ -22,6 +22,7 @@
  *
  */
 
+#include 
 #include 
 #include 
 
@@ -30,6 +31,89 @@
 #include "igt_debugfs.h"
 #include "igt_sysfs.h"
 
+static void __restore_defaults(int engine)
+{
+   struct dirent *de;
+   int defaults;
+   DIR *dir;
+
+   defaults = openat(engine, ".defaults", O_RDONLY);
+   if (defaults < 0)
+   return;
+
+   dir = fdopendir(defaults);
+   if (!dir) {
+   close(defaults);
+   return;
+   }
+
+   while ((de = readdir(dir))) {
+   char buf[256];
+   int fd, len;
+
+   if (*de->d_name == '.')
+   continue;
+
+   fd = openat(defaults, de->d_name, O_RDONLY);
+   if (fd < 0)
+   continue;
+
+   len = read(fd, buf, sizeof(buf));
+   close(fd);
+   if (len < 0)
+   continue;
+
+   fd = openat(engine, de->d_name, O_WRONLY);
+   if (fd < 0)
+   continue;
+
+   write(fd, buf, len);
+   close(fd);
+   }
+
+   closedir(dir);
+}
+
+static void restore_defaults(int i915)
+{
+   struct dirent *de;
+   int engines;
+   DIR *dir;
+   int sys;
+
+   sys = igt_sysfs_open(i915);
+   if (sys < 0)
+   return;
+
+   engines = openat(sys, "engine", O_RDONLY);
+   if (engines < 0)
+   goto close_sys;
+
+   dir = fdopendir(engines);
+   if (!dir) {
+   close(engines);
+   goto close_sys;
+   }
+
+   while ((de = readdir(dir))) {
+   int engine;
+
+   if (*de->d_name == '.')
+   continue;
+
+   engine = openat(engines, de->d_name, O_RDONLY);
+   if (engine < 0)
+   continue;
+
+   __restore_defaults(engine);
+   close(engine);
+   }
+
+   closedir(dir);
+close_sys:
+   close(sys);
+}
+
 static void reset_device(int i915)
 {
int dir;
@@ -66,6 +150,7 @@ void igt_require_gem(int i915)
 * sequences of batches.
 */
reset_device(i915);
+   restore_defaults(i915);
 
err = 0;
if (ioctl(i915, DRM_IOCTL_I915_GEM_THROTTLE)) {
diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index 0b52eb5b5..a733bd674 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -355,8 +355,6 @@ igt_spin_factory(int fd, const struct igt_spin_factory 
*opts)
 {
igt_spin_t *spin;
 
-   igt_require_gem(fd);
-
if (opts->engine != ALL_ENGINES) {
struct intel_execution_engine2 e;
int class;
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index a806b567a..101627973 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -172,8 +172,6 @@ igt_hang_t igt_allow_hang(int fd, unsigned ctx, unsigned 
flags)
 * to recover from reset and for it to remain wedged. It's hard to
 * say even if we do hang/reset making the test suspect.
 */
-   igt_require_gem(fd);
-
if (!igt_check_boolean_env_var("IGT_HANG", true))
igt_skip("hang injection disabled by user [IGT_HANG=0]\n");
gem_context_require_bannable(fd);
diff --git a/tests/i915/gem_ctx_persistence.c b/tests/i915/gem_ctx_persistence.c
index ce9f02350..cca4c3a91 100644
--- a/tests/i915/gem_ctx_persistence.c
+++ b/tests/i915/gem_ctx_persistence.c
@@ -56,7 +56,6 @@ static void cleanup(int i915)
DROP_RESET_ACTIVE | DROP_RESET_SEQNO |
/* cleanup */
DROP_ACTIVE | DROP_RETIRE | DROP_IDLE | DROP_FREED);
-   igt_require_gem(i915);
 }
 
 static int wait_for_status(int fence, int timeout)
-- 
2.26.2

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


Re: [Intel-gfx] [PATCH] drm/i915/gvt: Use ARRAY_SIZE for vgpu_types

2020-05-18 Thread Chris Wilson
Quoting Aishwarya Ramakrishnan (2020-05-18 16:03:36)
> Prefer ARRAY_SIZE instead of using sizeof
> 
> Fixes coccicheck warning: Use ARRAY_SIZE
> 
> Signed-off-by: Aishwarya Ramakrishnan 
Reviewed-by: Chris Wilson 
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/gvt: Use ARRAY_SIZE for vgpu_types

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/gvt: Use ARRAY_SIZE for vgpu_types
URL   : https://patchwork.freedesktop.org/series/77369/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8498 -> Patchwork_17699


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_chamelium@dp-crc-fast:
- fi-icl-u2:  [PASS][1] -> [FAIL][2] ([i915#262])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8498/fi-icl-u2/igt@kms_chamel...@dp-crc-fast.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17699/fi-icl-u2/igt@kms_chamel...@dp-crc-fast.html

  
  [i915#262]: https://gitlab.freedesktop.org/drm/intel/issues/262


Participating hosts (52 -> 44)
--

  Missing(8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8498 -> Patchwork_17699

  CI-20190529: 20190529
  CI_DRM_8498: 1493c649ae92207a758afa50a639275bd6c80e2e @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17699: ccbbd4f3aab67ca12a16da43196fa26d1633bf87 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

ccbbd4f3aab6 drm/i915/gvt: Use ARRAY_SIZE for vgpu_types

== Logs ==

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


[Intel-gfx] [PATCH i-g-t] lib: Cleanup __igt_params_open()

2020-05-18 Thread Chris Wilson
The device always exist, so use it to derive the module name required to
lookup either the debugfs params directory or the sysfs module parameters.

Fixes: 2f5cee33ce55 ("igt/params: use igt_params_set_save for 
igt_set_module_param*")
Signed-off-by: Chris Wilson 
Cc: Jani Nikula 
Cc: Juha-Pekka Heikkila 
---
 lib/igt_params.c | 116 +++
 1 file changed, 17 insertions(+), 99 deletions(-)

diff --git a/lib/igt_params.c b/lib/igt_params.c
index d8649dfd9..9d9a11c0b 100644
--- a/lib/igt_params.c
+++ b/lib/igt_params.c
@@ -131,117 +131,35 @@ static void igt_params_save(int dir, const char *path, 
const char *name)
  */
 static int __igt_params_open(int device, char **outpath, const char *param)
 {
+   drm_version_t version;
int dir, params = -1;
-   struct stat buffer;
-   char searchname[64];
-   char searchpath[PATH_MAX];
-   char *foundname, *ctx;
+   char path[PATH_MAX];
+   char name[32];
+
+   memset(, 0, sizeof(version));
+   version.name_len = sizeof(name);
+   version.name = name;
+   if (ioctl(device, DRM_IOCTL_VERSION, ))
+   return -1;
 
dir = igt_debugfs_dir(device);
if (dir >= 0) {
-   int devname;
-
-   devname = openat(dir, "name", O_RDONLY);
-   igt_require_f(devname >= 0,
- "Driver need to name itself in debugfs!");
-
-   read(devname, searchname, sizeof(searchname));
-   close(devname);
-
-   foundname = strtok_r(searchname, " ", );
-   igt_require_f(foundname,
- "Driver need to name itself in debugfs!");
-
-   snprintf(searchpath, PATH_MAX, "%s_params", foundname);
-   params = openat(dir, searchpath, O_RDONLY);
-
-   if (params >= 0) {
-   char *debugfspath = malloc(PATH_MAX);
-
-   igt_debugfs_path(device, debugfspath, PATH_MAX);
-   if (param != NULL) {
-   char filepath[PATH_MAX];
-
-   snprintf(filepath, PATH_MAX, "%s/%s",
-debugfspath, param);
-
-   if (stat(filepath, ) == 0) {
-   if (outpath != NULL)
-   *outpath = debugfspath;
-   else
-   free(debugfspath);
-   } else {
-   free(debugfspath);
-   close(params);
-   params = -1;
-   }
-   } else if (outpath != NULL) {
-   /*
-* Caller is responsible to free this.
-*/
-   *outpath = debugfspath;
-   } else {
-   free(debugfspath);
-   }
-   }
+   snprintf(path, PATH_MAX, "%s_params", name);
+   params = openat(dir, path, O_RDONLY);
close(dir);
}
 
if (params < 0) { /* builtin? */
-   drm_version_t version;
-   char name[32] = "";
-   char path[PATH_MAX];
-
-   if (device == -1) {
-   /*
-* find default device
-*/
-   int file, i;
-   const char *debugfs_root = igt_debugfs_mount();
-
-   igt_assert(debugfs_root);
-
-   for (i = 0; i < 63; i++) {
-   char testpath[PATH_MAX];
-
-   snprintf(searchpath, PATH_MAX,
-"%s/dri/%d/name", debugfs_root, i);
-
-   file = open(searchpath, O_RDONLY);
-
-   if (file < 0)
-   continue;
-
-   read(file, searchname, sizeof(searchname));
-   close(file);
-
-   foundname = strtok_r(searchname, " ", );
-   if (!foundname)
-   continue;
-
-   snprintf(testpath, PATH_MAX,
-"/sys/module/%s/parameters",
-foundname);
-
-   if (stat(testpath, ) == 0 &&
-   S_ISDIR(buffer.st_mode)) {
-   snprintf(name, sizeof(name), "%s",
-foundname);
-   

[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915: fix incorrect return of an error status

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: fix incorrect return of an error status
URL   : https://patchwork.freedesktop.org/series/77368/
State : failure

== Summary ==

Applying: drm/i915: fix incorrect return of an error status
Using index info to reconstruct a base tree...
M   drivers/gpu/drm/i915/intel_pm.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/gpu/drm/i915/intel_pm.c
No changes -- Patch already applied.

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


[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/3] drm/i915/params: don't expose inject_probe_failure in debugfs

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/3] drm/i915/params: don't expose 
inject_probe_failure in debugfs
URL   : https://patchwork.freedesktop.org/series/77366/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8497 -> Patchwork_17697


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@gem_close_race@basic-process:
- fi-ivb-3770:[PASS][1] -> [FAIL][2] +11 similar issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-ivb-3770/igt@gem_close_r...@basic-process.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-ivb-3770/igt@gem_close_r...@basic-process.html

  * igt@gem_close_race@basic-threads:
- fi-skl-6600u:   [PASS][3] -> [FAIL][4] +10 similar issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-skl-6600u/igt@gem_close_r...@basic-threads.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-skl-6600u/igt@gem_close_r...@basic-threads.html
- fi-skl-guc: [PASS][5] -> [FAIL][6] +10 similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-skl-guc/igt@gem_close_r...@basic-threads.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-skl-guc/igt@gem_close_r...@basic-threads.html
- fi-bwr-2160:[PASS][7] -> [FAIL][8] +8 similar issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-bwr-2160/igt@gem_close_r...@basic-threads.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-bwr-2160/igt@gem_close_r...@basic-threads.html
- fi-icl-y:   [PASS][9] -> [FAIL][10] +10 similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-icl-y/igt@gem_close_r...@basic-threads.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-icl-y/igt@gem_close_r...@basic-threads.html

  * igt@gem_ctx_create@basic:
- fi-cml-s:   [PASS][11] -> [FAIL][12] +10 similar issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-cml-s/igt@gem_ctx_cre...@basic.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-cml-s/igt@gem_ctx_cre...@basic.html
- fi-elk-e7500:   [PASS][13] -> [FAIL][14] +11 similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-elk-e7500/igt@gem_ctx_cre...@basic.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-elk-e7500/igt@gem_ctx_cre...@basic.html
- fi-skl-6700k2:  [PASS][15] -> [FAIL][16] +10 similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-skl-6700k2/igt@gem_ctx_cre...@basic.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-skl-6700k2/igt@gem_ctx_cre...@basic.html
- fi-cfl-guc: [PASS][17] -> [FAIL][18] +10 similar issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-cfl-guc/igt@gem_ctx_cre...@basic.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-cfl-guc/igt@gem_ctx_cre...@basic.html
- fi-bsw-n3050:   [PASS][19] -> [FAIL][20] +9 similar issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-bsw-n3050/igt@gem_ctx_cre...@basic.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-bsw-n3050/igt@gem_ctx_cre...@basic.html

  * igt@gem_exec_basic@basic:
- fi-kbl-x1275:   NOTRUN -> [FAIL][21] +4 similar issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-kbl-x1275/igt@gem_exec_ba...@basic.html
- fi-snb-2520m:   NOTRUN -> [FAIL][22]
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-snb-2520m/igt@gem_exec_ba...@basic.html
- fi-pnv-d510:NOTRUN -> [FAIL][23] +4 similar issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-pnv-d510/igt@gem_exec_ba...@basic.html
- fi-apl-guc: NOTRUN -> [FAIL][24] +4 similar issues
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-apl-guc/igt@gem_exec_ba...@basic.html
- fi-cfl-8700k:   NOTRUN -> [FAIL][25] +4 similar issues
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-cfl-8700k/igt@gem_exec_ba...@basic.html
- fi-tgl-y:   NOTRUN -> [FAIL][26] +4 similar issues
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17697/fi-tgl-y/igt@gem_exec_ba...@basic.html
  

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/selftests: Measure dispatch latency (rev8)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Measure dispatch latency (rev8)
URL   : https://patchwork.freedesktop.org/series/77308/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8495_full -> Patchwork_17695_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_softpin@noreloc-s3:
- shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180]) +1 similar 
issue
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-kbl7/igt@gem_soft...@noreloc-s3.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-kbl3/igt@gem_soft...@noreloc-s3.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
- shard-skl:  [PASS][3] -> [INCOMPLETE][4] ([i915#69])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-skl4/igt@i915_susp...@fence-restore-tiled2untiled.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-skl5/igt@i915_susp...@fence-restore-tiled2untiled.html

  * igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding:
- shard-skl:  [PASS][5] -> [FAIL][6] ([i915#54])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-skl4/igt@kms_cursor_...@pipe-b-cursor-256x256-sliding.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-skl6/igt@kms_cursor_...@pipe-b-cursor-256x256-sliding.html

  * igt@kms_flip_tiling@flip-changes-tiling:
- shard-apl:  [PASS][7] -> [FAIL][8] ([i915#95])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-apl4/igt@kms_flip_til...@flip-changes-tiling.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-apl4/igt@kms_flip_til...@flip-changes-tiling.html

  * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
- shard-skl:  [PASS][9] -> [FAIL][10] ([fdo#108145] / [i915#265])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-skl4/igt@kms_plane_alpha_bl...@pipe-a-coverage-7efc.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-skl5/igt@kms_plane_alpha_bl...@pipe-a-coverage-7efc.html

  * igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-apl:  [PASS][11] -> [DMESG-WARN][12] ([i915#180]) +1 
similar issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-apl7/igt@kms_vbl...@pipe-a-ts-continuation-suspend.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-apl1/igt@kms_vbl...@pipe-a-ts-continuation-suspend.html

  
 Possible fixes 

  * {igt@gem_ctx_isolation@preservation-s3@bcs0}:
- shard-skl:  [INCOMPLETE][13] ([i915#198]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-skl2/igt@gem_ctx_isolation@preservation...@bcs0.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-skl4/igt@gem_ctx_isolation@preservation...@bcs0.html

  * {igt@gem_ctx_isolation@preservation-s3@rcs0}:
- shard-apl:  [DMESG-WARN][15] ([i915#180]) -> [PASS][16] +1 
similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-apl6/igt@gem_ctx_isolation@preservation...@rcs0.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-apl2/igt@gem_ctx_isolation@preservation...@rcs0.html

  * igt@gem_workarounds@suspend-resume-context:
- shard-kbl:  [DMESG-WARN][17] ([i915#180]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-kbl2/igt@gem_workarou...@suspend-resume-context.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-kbl6/igt@gem_workarou...@suspend-resume-context.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-90:
- shard-tglb: [FAIL][19] ([i915#1172] / [i915#1897] / [i915#402]) 
-> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-tglb3/igt@kms_big...@y-tiled-32bpp-rotate-90.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-tglb7/igt@kms_big...@y-tiled-32bpp-rotate-90.html

  * igt@kms_color@pipe-b-ctm-max:
- shard-tglb: [FAIL][21] ([i915#1149]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-tglb5/igt@kms_co...@pipe-b-ctm-max.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-tglb1/igt@kms_co...@pipe-b-ctm-max.html

  * igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen:
- shard-tglb: [FAIL][23] ([i915#1897]) -> [PASS][24] +9 similar 
issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/shard-tglb7/igt@kms_cursor_...@pipe-c-cursor-64x64-onscreen.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/shard-tglb6/igt@kms_cursor_...@pipe-c-cursor-64x64-onscreen.html

  * igt@kms_fbcon_fbt@fbc-suspend:

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/3] drm/i915/params: don't expose inject_probe_failure in debugfs

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/3] drm/i915/params: don't expose 
inject_probe_failure in debugfs
URL   : https://patchwork.freedesktop.org/series/77366/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.0
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_display.c:1222:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1225:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1228:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1231:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2274:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2275:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2276:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2277:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2278:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2279:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gt/intel_reset.c:1310:5: warning: context imbalance in 
'intel_gt_reset_trylock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/sysfs_engines.c:61:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:62:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:66:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gvt/mmio.c:287:23: warning: memcpy with byte count of 
279040
+drivers/gpu/drm/i915/i915_perf.c:1425:15: warning: memset with byte count of 
16777216
+drivers/gpu/drm/i915/i915_perf.c:1479:15: warning: memset with byte count of 
16777216
+./include/linux/compiler.h:199:9: warning: context imbalance in 
'engines_sample' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 'gen6_read16' 
- different lock contexts for basic block
+./include/linux/spinlock.h:408:9: 

[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/7] drm/i915: Move saturated workload detection back to the context

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/7] drm/i915: Move saturated workload detection 
back to the context
URL   : https://patchwork.freedesktop.org/series/77365/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8497 -> Patchwork_17696


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@execlists:
- fi-tgl-y:   [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-tgl-y/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17696/fi-tgl-y/igt@i915_selftest@l...@execlists.html

  
 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-dsi}:   [PASS][3] -> [INCOMPLETE][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-tgl-dsi/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17696/fi-tgl-dsi/igt@i915_selftest@l...@execlists.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-apl-guc: [PASS][5] -> [INCOMPLETE][6] ([i915#656])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-apl-guc/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17696/fi-apl-guc/igt@i915_selftest@l...@execlists.html

  
 Possible fixes 

  * igt@i915_selftest@live@execlists:
- fi-skl-lmem:[INCOMPLETE][7] ([i915#1874]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8497/fi-skl-lmem/igt@i915_selftest@l...@execlists.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17696/fi-skl-lmem/igt@i915_selftest@l...@execlists.html

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

  [i915#1874]: https://gitlab.freedesktop.org/drm/intel/issues/1874
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (51 -> 45)
--

  Missing(6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper 


Build changes
-

  * Linux: CI_DRM_8497 -> Patchwork_17696

  CI-20190529: 20190529
  CI_DRM_8497: 7b24f369fbedaf37fdb3fc86176235d77d36e804 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17696: a839695e72b2526414d38e634b60295c0c381a91 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a839695e72b2 drm/i915/gt: Resubmit the virtual engine on schedule-out
802e652868f5 drm/i915/gt: Decouple inflight virtual engines
d70a6bfd13b1 drm/i915/gt: Use virtual_engine during execlists_dequeue
0d70aed9a12c drm/i915/gt: Incorporate the virtual engine into timeslicing
d4fa09cdb48e drm/i915/gt: Kick virtual siblings on timeslice out
b869aac79c29 drm/i915/selftests: Add tests for timeslicing virtual engines
a7577cd7f63b drm/i915: Move saturated workload detection back to the context

== Logs ==

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


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/params: don't expose inject_probe_failure in debugfs

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/3] drm/i915/params: don't expose 
inject_probe_failure in debugfs
URL   : https://patchwork.freedesktop.org/series/77366/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
960f6e1f205d drm/i915/params: don't expose inject_probe_failure in debugfs
b47f6ca436b3 drm/i915/params: fix i915.fake_lmem_start module param sysfs 
permissions
-:27: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#27: FILE: drivers/gpu/drm/i915/i915_params.c:177:
+i915_param_named_unsafe(fake_lmem_start, ulong, 0400,
"Fake LMEM start offset (default: 0)");

total: 0 errors, 0 warnings, 1 checks, 8 lines checked
2b633b42e776 drm/i915/params: prevent changing module params runtime
-:48: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#48: FILE: drivers/gpu/drm/i915/i915_params.c:62:
+i915_param_named_unsafe(enable_fbc, int, 0400,
"Enable frame buffer compression for power savings "

-:57: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#57: FILE: drivers/gpu/drm/i915/i915_params.c:70:
+i915_param_named_unsafe(panel_use_ssc, int, 0400,
"Use Spread Spectrum Clock with panels [LVDS/eDP] "

-:66: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#66: FILE: drivers/gpu/drm/i915/i915_params.c:78:
+i915_param_named_unsafe(reset, int, 0400,
"Attempt GPU resets (0=disabled, 1=full gpu reset, 2=engine reset 
[default])");

-:74: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#74: FILE: drivers/gpu/drm/i915/i915_params.c:85:
+i915_param_named(error_capture, bool, 0400,
"Record the GPU state following a hang. "

-:81: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#81: FILE: drivers/gpu/drm/i915/i915_params.c:91:
+i915_param_named_unsafe(enable_hangcheck, bool, 0400,
"Periodically check GPU activity for detecting hangs. "

-:87: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#87: FILE: drivers/gpu/drm/i915/i915_params.c:96:
+i915_param_named_unsafe(enable_psr, int, 0400,
"Enable PSR "

-:99: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#99: FILE: drivers/gpu/drm/i915/i915_params.c:111:
+i915_param_named(fastboot, int, 0400,
"Try to skip unnecessary mode sets at boot time "

-:105: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#105: FILE: drivers/gpu/drm/i915/i915_params.c:116:
+i915_param_named_unsafe(load_detect_test, bool, 0400,
"Force-enable the VGA load detect code for testing (default:false). "

-:110: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#110: FILE: drivers/gpu/drm/i915/i915_params.c:120:
+i915_param_named_unsafe(force_reset_modeset_test, bool, 0400,
"Force a modeset during gpu reset for testing (default:false). "

-:115: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#115: FILE: drivers/gpu/drm/i915/i915_params.c:124:
+i915_param_named_unsafe(invert_brightness, int, 0400,
"Invert backlight brightness "

-:124: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#124: FILE: drivers/gpu/drm/i915/i915_params.c:134:
+i915_param_named(mmio_debug, int, 0400,
"Enable the MMIO debug code for the first N failures (default: off). "

-:137: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#137: FILE: drivers/gpu/drm/i915/i915_params.c:169:
+i915_param_named_unsafe(enable_dp_mst, bool, 0400,
"Enable multi-stream transport (MST) for new DisplayPort sinks. 
(default: true)");

-:146: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#146: FILE: drivers/gpu/drm/i915/i915_params.c:177:
+i915_param_named(enable_dpcd_backlight, int, 0400,
"Enable support for DPCD backlight control"

total: 0 errors, 0 warnings, 13 checks, 115 lines checked

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


[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/7] drm/i915: Move saturated workload detection back to the context

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/7] drm/i915: Move saturated workload detection 
back to the context
URL   : https://patchwork.freedesktop.org/series/77365/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.0
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_display.c:1222:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1225:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1228:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1231:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2274:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2275:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2276:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2277:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2278:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2279:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gt/intel_reset.c:1310:5: warning: context imbalance in 
'intel_gt_reset_trylock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/sysfs_engines.c:61:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:62:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:66:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gvt/mmio.c:287:23: warning: memcpy with byte count of 
279040
+drivers/gpu/drm/i915/i915_perf.c:1425:15: warning: memset with byte count of 
16777216
+drivers/gpu/drm/i915/i915_perf.c:1479:15: warning: memset with byte count of 
16777216
+./include/linux/compiler.h:199:9: warning: context imbalance in 
'engines_sample' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 'gen6_read16' 
- different lock contexts for basic block
+./include/linux/spinlock.h:408:9: 

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/7] drm/i915: Move saturated workload detection back to the context

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/7] drm/i915: Move saturated workload detection 
back to the context
URL   : https://patchwork.freedesktop.org/series/77365/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
a7577cd7f63b drm/i915: Move saturated workload detection back to the context
-:22: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description 
(prefer a maximum 75 chars per line)
#22: 
References: 44d89409a12e ("drm/i915: Make the semaphore saturation mask global")

-:22: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ 
chars of sha1> ("")' - ie: 'commit 44d89409a12e ("drm/i915: Make 
the semaphore saturation mask global")'
#22: 
References: 44d89409a12e ("drm/i915: Make the semaphore saturation mask global")

total: 1 errors, 1 warnings, 0 checks, 68 lines checked
b869aac79c29 drm/i915/selftests: Add tests for timeslicing virtual engines
-:51: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#51: FILE: drivers/gpu/drm/i915/gt/selftest_lrc.c:3632:
+
+}

total: 0 errors, 0 warnings, 1 checks, 218 lines checked
d4fa09cdb48e drm/i915/gt: Kick virtual siblings on timeslice out
0d70aed9a12c drm/i915/gt: Incorporate the virtual engine into timeslicing
d70a6bfd13b1 drm/i915/gt: Use virtual_engine during execlists_dequeue
802e652868f5 drm/i915/gt: Decouple inflight virtual engines
a839695e72b2 drm/i915/gt: Resubmit the virtual engine on schedule-out

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


Re: [Intel-gfx] [PATCH 5/7] drm/i915: Reverse preemph vs. voltage swing preference

2020-05-18 Thread Manasi Navare
On Fri, May 15, 2020 at 10:59:57PM +0300, Ville Syrjälä wrote:
> On Fri, May 15, 2020 at 12:18:22PM -0700, Manasi Navare wrote:
> > On Tue, May 12, 2020 at 08:41:43PM +0300, Ville Syrjala wrote:
> > > From: Ville Syrjälä 
> > > 
> > > The DP spec says:
> > > "When the combination of the requested pre-emphasis level and
> > >  voltage swing exceeds the capability of a DPTX, the DPTX shall
> > >  set the pre-emphasis level according to the request and use the
> > >  highest voltage swing it can output with the given pre-emphasis level."
> > > and
> > > "When a DPTX reads a request beyond the limits of this Standard,
> > >  the DPTX shall set the pre-emphasis level according to the request
> > >  and set the highest voltage swing level it can output with the
> > >  given pre-emphasis level. If a DPTX is requested for 9.5dB of
> > >  pre-emphasis level (may be supported for a DPTX) and cannot support
> > >  that level, it shall set the pre-emphasis level to the next
> > >  highest level, 6dB."
> > > 
> > > Ie. we should first validate the pre-emphasis, and then select
> > > the appropriate vswing for it.
> > > 
> > > Signed-off-by: Ville Syrjälä 
> > 
> > So basically reverse the logic for selecting the vswing and pre emphasis
> > 
> > > ---
> > >  .../drm/i915/display/intel_dp_link_training.c | 32 +--
> > >  1 file changed, 16 insertions(+), 16 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c 
> > > b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> > > index 171d9e842fc0..573f93779449 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> > > @@ -34,18 +34,18 @@ intel_dp_dump_link_status(const u8 
> > > link_status[DP_LINK_STATUS_SIZE])
> > > link_status[3], link_status[4], link_status[5]);
> > >  }
> > >  
> > > -static u8 dp_pre_emphasis_max(u8 voltage_swing)
> > > +static u8 dp_voltage_max(u8 preemph)
> > >  {
> > > - switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
> > > - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0:
> > > - return DP_TRAIN_PRE_EMPH_LEVEL_3;
> > > - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1:
> > > - return DP_TRAIN_PRE_EMPH_LEVEL_2;
> > > - case DP_TRAIN_VOLTAGE_SWING_LEVEL_2:
> > > - return DP_TRAIN_PRE_EMPH_LEVEL_1;
> > > - case DP_TRAIN_VOLTAGE_SWING_LEVEL_3:
> > > + switch (preemph & DP_TRAIN_PRE_EMPHASIS_MASK) {
> > > + case DP_TRAIN_PRE_EMPH_LEVEL_0:
> > > + return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
> > > + case DP_TRAIN_PRE_EMPH_LEVEL_1:
> > > + return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
> > > + case DP_TRAIN_PRE_EMPH_LEVEL_2:
> > > + return DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
> > > + case DP_TRAIN_PRE_EMPH_LEVEL_3:
> > >   default:
> > > - return DP_TRAIN_PRE_EMPH_LEVEL_0;
> > > + return DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
> > 
> > These vswing levels for that specific pre emph level comes from the Bspec
> > or from the DP spec? It wasnt clear to me how level3 of vswing was the max 
> > for pre emphasis level 0 and all others?
> 
> From DP 1.4 spec "Table 3-1: Allowed Vdiff_pre_pp and Pre-emphasis
> Combinations"
> 
> Previosuly this was present in some semi-mangled way in each
> platform's max preeph calculation. Now we just have one canonical
> copy of it. Later on we could probably lift this into drm_dp_helper.

Okay great yes confirmed from that table and looks good to me

Reviewed-by: Manasi Navare 

Manasi

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


[Intel-gfx] [RFC PATCH 0/4] drm/i915: Resolve device hotunplug issues

2020-05-18 Thread Janusz Krzysztofik
The idea is to revoke DMA mappings on driver remove in order to work
around intel-iommu judging late unmapping on driver release after an
open device is removed as bugs.  That also resolves runtime power
management warnings on late object removal.

Janusz Krzysztofik (4):
  drm/i915: Drop user contexts on driver remove
  drm/i915: Release GT resources on driver remove
  drm/i915: Move GGTT cleanup from driver_release to _remove
  drm/i915: Move UC firmware cleanup from driver_release to _remove

 drivers/gpu/drm/i915/gem/i915_gem_context.c | 38 +
 drivers/gpu/drm/i915/gem/i915_gem_context.h |  1 +
 drivers/gpu/drm/i915/gt/intel_ggtt.c| 13 ---
 drivers/gpu/drm/i915/gt/intel_gt.c  |  2 ++
 drivers/gpu/drm/i915/gt/intel_gtt.h |  1 +
 drivers/gpu/drm/i915/i915_drv.c |  2 ++
 drivers/gpu/drm/i915/i915_gem.c |  5 ++-
 7 files changed, 57 insertions(+), 5 deletions(-)

-- 
2.21.1

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


[Intel-gfx] [RFC PATCH 3/4] drm/i915: Move GGTT cleanup from driver_release to _remove

2020-05-18 Thread Janusz Krzysztofik
GGTT including its scratch page is not cleaned up until driver release.
Since DMA mappings still exist before scratch page cleanup, unmapping
them on last device close after the driver has been already removed may
be judged by intel-iommu code as a bug and result in kernel panic.

Since we abort requests and block user access to hardware on device
removal, there seems not much sense in still keeping GGTT.  Clean it up
on driver remove.  However, skip GGTT address space cleanup as its
mutext may still be needed if there are objects to be freed.  That
cleanup is always called on address space release after all.

[   81.290284] [ cut here ]
[   81.291602] kernel BUG at drivers/iommu/intel-iommu.c:3591!
[   81.293558] invalid opcode:  [#1] PREEMPT SMP
[   81.294695] CPU: 0 PID: 207 Comm: core_hotunplug Tainted: G U
5.4.17 #2
[   81.296579] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
[   81.297959] RIP: 0010:intel_unmap+0x200/0x230
[   81.299015] Code: 00 e8 e4 45 c5 ff 85 c0 74 09 80 3d 2b 84 c0 00 00 74 19 
65 ff 0d 78 9a b2 7e 0f 85 fa fe ff ff e8 95 57 b1 ff e9 f0 fe ff ff <0f> 0b e8 
19 4c c5 ff 85 c0 75 de 48 c7 c2 48 d2 e1 81 be 57 00 00
[   81.303425] RSP: 0018:c913fda0 EFLAGS: 00010246
[   81.304683] RAX:  RBX: 8882228dd0b0 RCX: 
[   81.306384] RDX: 1000 RSI: af801000 RDI: 8882228dd0b0
[   81.308086] RBP:  R08:  R09: 
[   81.309788] R10:  R11:  R12: af801000
[   81.311489] R13: 888223a0 R14: 1000 R15: 888223a0a2e8
[   81.313191] FS:  7f5408e3c940() GS:88822860() 
knlGS:
[   81.315116] CS:  0010 DS:  ES:  CR0: 80050033
[   81.316495] CR2: 01fc0048 CR3: 00022464a000 CR4: 06b0
[   81.318196] Call Trace:
[   81.318967]  cleanup_scratch_page+0x44/0x80 [i915]
[   81.320281]  i915_ggtt_driver_release+0x15b/0x220 [i915]
[   81.321717]  i915_driver_release+0x33/0x90 [i915]
[   81.322856]  drm_release+0xbc/0xd0
[   81.323691]  __fput+0xcd/0x260
[   81.324447]  task_work_run+0x90/0xc0
[   81.325323]  do_syscall_64+0x3da/0x560
[   81.326240]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[   81.327457] RIP: 0033:0x7f54096ecba3
[   81.328332] Code: 00 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 
00 00 00 00 64 8b 04 25 18 00 00 00 85 c0 75 14 b8 03 00 00 00 0f 05 <48> 3d 00 
f0 ff ff 77 45 c3 0f 1f 40 00 48 83 ec 18 89 7c 24 0c e8
[   81.332741] RSP: 002b:7ffcc5165698 EFLAGS: 0246 ORIG_RAX: 
0003
[   81.334546] RAX:  RBX:  RCX: 7f54096ecba3
[   81.336247] RDX: 005cc5d0 RSI: 0005 RDI: 0004
[   81.337949] RBP: 0003 R08: 005b8014 R09: 0004
[   81.339650] R10: 005cc650 R11: 0246 R12: 004022f0
[   81.341352] R13: 7ffcc5165850 R14:  R15: 
[   81.343059] Modules linked in: i915 mfd_core intel_gtt prime_numbers
[   81.345015] ---[ end trace 010aae55e56f8998 ]---

Signed-off-by: Janusz Krzysztofik 

drm/i915: Defer GGTT vm address space fini to vm release

Signed-off-by: Janusz Krzysztofik 
---
 drivers/gpu/drm/i915/gt/intel_ggtt.c | 13 +
 drivers/gpu/drm/i915/gt/intel_gtt.h  |  1 +
 drivers/gpu/drm/i915/i915_drv.c  |  2 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c 
b/drivers/gpu/drm/i915/gt/intel_ggtt.c
index 66165b10256e..ff2b4f74149a 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
@@ -701,7 +701,6 @@ static void ggtt_cleanup_hw(struct i915_ggtt *ggtt)
ggtt->vm.cleanup(>vm);
 
mutex_unlock(>vm.mutex);
-   i915_address_space_fini(>vm);
 
arch_phys_wc_del(ggtt->mtrr);
 
@@ -709,6 +708,15 @@ static void ggtt_cleanup_hw(struct i915_ggtt *ggtt)
io_mapping_fini(>iomap);
 }
 
+void i915_ggtt_driver_remove(struct drm_i915_private *i915)
+{
+   struct i915_ggtt *ggtt = >ggtt;
+
+   fini_aliasing_ppgtt(ggtt);
+
+   ggtt_cleanup_hw(ggtt);
+}
+
 /**
  * i915_ggtt_driver_release - Clean up GGTT hardware initialization
  * @i915: i915 device
@@ -718,10 +726,7 @@ void i915_ggtt_driver_release(struct drm_i915_private 
*i915)
struct i915_ggtt *ggtt = >ggtt;
struct pagevec *pvec;
 
-   fini_aliasing_ppgtt(ggtt);
-
intel_ggtt_fini_fences(ggtt);
-   ggtt_cleanup_hw(ggtt);
 
pvec = >mm.wc_stash.pvec;
if (pvec->nr) {
diff --git a/drivers/gpu/drm/i915/gt/intel_gtt.h 
b/drivers/gpu/drm/i915/gt/intel_gtt.h
index d93ebdf3fa0e..f140ce5c171a 100644
--- a/drivers/gpu/drm/i915/gt/intel_gtt.h
+++ b/drivers/gpu/drm/i915/gt/intel_gtt.h
@@ -501,6 +501,7 @@ int i915_ggtt_enable_hw(struct drm_i915_private *i915);
 void i915_ggtt_enable_guc(struct 

[Intel-gfx] [RFC PATCH 1/4] drm/i915: Drop user contexts on driver remove

2020-05-18 Thread Janusz Krzysztofik
Contexts associated with open device file descriptors together with
their assigned address spaces are now closed on device file close.  On
address space closure its associated DMA mappings are revoked.  If the
device is removed while being open, subsequent attempts to revoke
those mappings while closing the device file descriptor may may be
judged by intel-iommu code as a bug and result in kernel panic.

Since user contexts become useless after the device is no longer
available, drop them on device removal.

<4> [36.900985] [ cut here ]
<2> [36.901005] kernel BUG at drivers/iommu/intel-iommu.c:3717!
<4> [36.901105] invalid opcode:  [#1] PREEMPT SMP NOPTI
<4> [36.901117] CPU: 0 PID: 39 Comm: kworker/u8:1 Tainted: G U  W 
5.7.0-rc5-CI-CI_DRM_8485+ #1
<4> [36.901133] Hardware name: Intel Corporation Elkhart Lake Embedded 
Platform/ElkhartLake LPDDR4x T3 CRB, BIOS EHLSFWI1.R00.1484.A00.1911290833 
11/29/2019
<4> [36.901250] Workqueue: i915 __i915_vm_release [i915]
<4> [36.901264] RIP: 0010:intel_unmap+0x1f5/0x230
<4> [36.901274] Code: 01 e8 9f bc a9 ff 85 c0 74 09 80 3d df 60 09 01 00 74 19 
65 ff 0d 13 12 97 7e 0f 85 fc fe ff ff e8 82 b0 95 ff e9 f2 fe ff ff <0f> 0b e8 
d4 bd a9 ff 85 c0 75 de 48 c7 c2 10 84 2c 82 be 54 00 00
<4> [36.901302] RSP: 0018:c91ebdc0 EFLAGS: 00010246
<4> [36.901313] RAX:  RBX: 8882561dd000 RCX: 

<4> [36.901324] RDX: 1000 RSI: ffd9c000 RDI: 
888274c94000
<4> [36.901336] RBP: 888274c940b0 R08:  R09: 
0001
<4> [36.901348] R10: 0a25d812 R11: 112af2d4 R12: 
888252c70200
<4> [36.901360] R13: ffd9c000 R14: 1000 R15: 
8882561dd010
<4> [36.901372] FS:  () GS:88827800() 
knlGS:
<4> [36.901386] CS:  0010 DS:  ES:  CR0: 80050033
<4> [36.901396] CR2: 7f06def54950 CR3: 000255844000 CR4: 
00340ef0
<4> [36.901408] Call Trace:
<4> [36.901418]  ? process_one_work+0x1de/0x600
<4> [36.901494]  cleanup_page_dma+0x37/0x70 [i915]
<4> [36.901573]  free_pd+0x9/0x20 [i915]
<4> [36.901644]  gen8_ppgtt_cleanup+0x59/0xc0 [i915]
<4> [36.901721]  __i915_vm_release+0x14/0x30 [i915]
<4> [36.901733]  process_one_work+0x268/0x600
<4> [36.901744]  ? __schedule+0x307/0x8d0
<4> [36.901756]  worker_thread+0x37/0x380
<4> [36.901766]  ? process_one_work+0x600/0x600
<4> [36.901775]  kthread+0x140/0x160
<4> [36.901783]  ? kthread_park+0x80/0x80
<4> [36.901792]  ret_from_fork+0x24/0x50
<4> [36.901804] Modules linked in: mei_hdcp i915 x86_pkg_temp_thermal coretemp 
crct10dif_pclmul crc32_pclmul ghash_clmulni_intel ax88179_178a usbnet mii 
mei_me mei prime_numbers intel_lpss_pci
<4> [36.901857] ---[ end trace 52d1b4d81f8d1ea7 ]---

Signed-off-by: Janusz Krzysztofik 
---
 drivers/gpu/drm/i915/gem/i915_gem_context.c | 38 +
 drivers/gpu/drm/i915/gem/i915_gem_context.h |  1 +
 drivers/gpu/drm/i915/i915_gem.c |  2 ++
 3 files changed, 41 insertions(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c 
b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index 900ea8b7fc8f..0096a69fbfd3 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -927,6 +927,44 @@ void i915_gem_driver_release__contexts(struct 
drm_i915_private *i915)
rcu_barrier(); /* and flush the left over RCU frees */
 }
 
+void i915_gem_driver_remove__contexts(struct drm_i915_private *i915)
+{
+   struct i915_gem_context *ctx, *cn;
+
+   list_for_each_entry_safe(ctx, cn, >gem.contexts.list, link) {
+   struct drm_i915_file_private *file_priv = ctx->file_priv;
+   struct i915_gem_context *entry;
+   unsigned long int id;
+
+   if (i915_gem_context_is_closed(ctx) || IS_ERR(file_priv))
+   continue;
+
+   xa_for_each(_priv->context_xa, id, entry) {
+   struct i915_address_space *vm;
+   unsigned long int idx;
+
+   if (entry != ctx)
+   continue;
+
+   xa_erase(_priv->context_xa, id);
+
+   if (id)
+   break;
+
+   xa_for_each(_priv->vm_xa, idx, vm) {
+   xa_erase(_priv->vm_xa, idx);
+   i915_vm_put(vm);
+   }
+
+   break;
+   }
+
+   context_close(ctx);
+   }
+
+   i915_gem_driver_release__contexts(i915);
+}
+
 static int gem_context_register(struct i915_gem_context *ctx,
struct drm_i915_file_private *fpriv,
u32 *id)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.h 
b/drivers/gpu/drm/i915/gem/i915_gem_context.h
index 3702b2fb27ab..62808bea9239 100644
--- 

[Intel-gfx] [RFC PATCH 4/4] drm/i915: Move UC firmware cleanup from driver_release to _remove

2020-05-18 Thread Janusz Krzysztofik
UC firmware is stored in a GEM object.  Clean it up on driver remove to
avoid intel-iommu triggered kernel panic on late DMA unmapping or even
an RPM related warning on object late removal in no IOMMU setups.

<4> [93.335282] [ cut here ]
<4> [93.335515] pm_runtime_get_sync() failed: -13
<4> [93.336056] WARNING: CPU: 6 PID: 200 at 
drivers/gpu/drm/i915/intel_runtime_pm.c:361 __intel_runtime_pm_get+0x4d/0x60 
[i915]
<4> [93.336104] Modules linked in: snd_hda_codec_hdmi mei_hdcp i915 
x86_pkg_temp_thermal coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel 
snd_hda_intel cdc_ether snd_intel_dspcfg usbnet snd_hda_codec mii snd_hwdep 
snd_hda_core e1000e snd_pcm ptp pps_core mei_me mei intel_lpss_pci prime_numbers
<4> [93.336268] CPU: 6 PID: 200 Comm: kworker/u16:3 Tainted: G U
5.7.0-rc4-CI-Trybot_6405+ #1
<4> [93.336289] Hardware name: Intel Corporation Tiger Lake Client 
Platform/TigerLake Y LPDDR4x T4 Crb, BIOS TGLSFWI1.R00.2457.A16.1912270059 
12/27/2019
<4> [93.336811] Workqueue: i915 __i915_gem_free_work [i915]
<4> [93.337296] RIP: 0010:__intel_runtime_pm_get+0x4d/0x60 [i915]
<4> [93.337332] Code: ff ff 48 89 df 5b 5d e9 a1 fa ff ff 80 3d 4b 7a 2e 00 00 
75 e1 89 c6 48 c7 c7 a8 2d 40 a0 c6 05 39 7a 2e 00 01 e8 53 fc e9 e0 <0f> 0b eb 
c8 0f 1f 44 00 00 66 2e 0f 1f 84 00 00 00 00 00 41 57 41
<4> [93.337357] RSP: 0018:c9000144bdd8 EFLAGS: 00010282
<4> [93.337384] RAX:  RBX: 88838ee5bc40 RCX: 
0001
<4> [93.337409] RDX: 8001 RSI: 88839d264928 RDI: 

<4> [93.337440] RBP: 0001 R08: 88839d264928 R09: 

<4> [93.337467] R10:  R11:  R12: 
88838ee5bc40
<4> [93.337493] R13: 0006 R14: 82769a30 R15: 
88839376bab0
<4> [93.337515] FS:  () GS:8883a410() 
knlGS:
<4> [93.337542] CS:  0010 DS:  ES:  CR0: 80050033
<4> [93.337563] CR2: 55bc19b16ff8 CR3: 0003a11c4005 CR4: 
00760ee0
<4> [93.337583] PKRU: 5554
<4> [93.337605] Call Trace:
<4> [93.338148]  i915_gem_object_release_mmap+0x23/0x70 [i915]
<4> [93.338665]  __i915_gem_free_objects.isra.21+0x10a/0x4b0 [i915]
<4> [93.338741]  process_one_work+0x268/0x600
<4> [93.338785]  ? __schedule+0x307/0x8d0
<4> [93.338878]  worker_thread+0x37/0x380
<4> [93.338929]  ? process_one_work+0x600/0x600
<4> [93.338963]  kthread+0x140/0x160
<4> [93.339006]  ? kthread_park+0x80/0x80
<4> [93.339057]  ret_from_fork+0x24/0x50
<4> [93.339181] irq event stamp: 204220
<4> [93.339219] hardirqs last  enabled at (204219): [] 
console_unlock+0x4cd/0x5a0
<4> [93.339250] hardirqs last disabled at (204220): [] 
trace_hardirqs_off_thunk+0x1a/0x1c
<4> [93.339277] softirqs last  enabled at (204208): [] 
__do_softirq+0x395/0x49e
<4> [93.339307] softirqs last disabled at (204197): [] 
irq_exit+0xba/0xc0
<4> [93.339330] ---[ end trace f066187622b8c484 ]---

Signed-off-by: Janusz Krzysztofik 
---
 drivers/gpu/drm/i915/i915_gem.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 87d3c4f5b6c6..f9d37c7e6d6f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1191,6 +1191,8 @@ void i915_gem_driver_remove(struct drm_i915_private 
*dev_priv)
 
i915_gem_driver_remove__contexts(dev_priv);
 
+   intel_uc_cleanup_firmwares(_priv->gt.uc);
+
i915_gem_drain_freed_objects(dev_priv);
 }
 
@@ -1202,7 +1204,6 @@ void i915_gem_driver_release(struct drm_i915_private 
*dev_priv)
 
intel_wa_list_free(_priv->gt_wa_list);
 
-   intel_uc_cleanup_firmwares(_priv->gt.uc);
i915_gem_cleanup_userptr(dev_priv);
 
i915_gem_drain_freed_objects(dev_priv);
-- 
2.21.1

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


[Intel-gfx] [RFC PATCH 2/4] drm/i915: Release GT resources on driver remove

2020-05-18 Thread Janusz Krzysztofik
GT scratch page is now released and its DMA mappings revoked on driver
release.  If a device is removed while its file descriptor is still
open, the driver is not released until last device file descriptor
closure.  In that case intel-iommu code may judge late DMA unmapping as
a bug and kernel panic may occur.

Since DMA mapped address space may be no longer usable after device
removal, release GT resources including scratch page as well as a
reference to its address space on driver remove.  Implement that by
just calling intel_gt_driver_release() on GT remove as that function
has been already made safe to be called again on driver release even if
already called before, e.g. on GEM initialization failure.

<4> [39.201062] [ cut here ]
<2> [39.201074] kernel BUG at drivers/iommu/intel-iommu.c:3717!
<4> [39.201154] invalid opcode:  [#1] PREEMPT SMP NOPTI
<4> [39.201162] CPU: 6 PID: 7 Comm: kworker/u16:0 Tainted: G U  W 
5.7.0-rc5-CI-CI_DRM_8485+ #1
<4> [39.201172] Hardware name: Intel Corporation Ice Lake Client 
Platform/IceLake U DDR4 SODIMM PD RVP, BIOS ICLSFWR1.R00.3175.A00.1904261428 
04/26/2019
<4> [39.201243] Workqueue: i915 __i915_gem_free_work [i915]
<4> [39.201252] RIP: 0010:intel_unmap+0x1f5/0x230
<4> [39.201260] Code: 01 e8 9f bc a9 ff 85 c0 74 09 80 3d df 60 09 01 00 74 19 
65 ff 0d 13 12 97 7e 0f 85 fc fe ff ff e8 82 b0 95 ff e9 f2 fe ff ff <0f> 0b e8 
d4 bd a9 ff 85 c0 75 de 48 c7 c2 10 84 2c 82 be 54 00 00
<4> [39.201278] RSP: 0018:c90dbc98 EFLAGS: 00010246
<4> [39.201285] RAX:  RBX:  RCX: 
ea0021d3
<4> [39.201293] RDX: 0005f000 RSI: fed0 RDI: 
89eec000
<4> [39.201301] RBP: 89eec0b0 R08:  R09: 
fffe
<4> [39.201309] R10: 458139fc R11: f6c6d8b2 R12: 
0025
<4> [39.201318] R13: fed0 R14: 0005f000 R15: 
0025
<4> [39.201326] FS:  () GS:9010() 
knlGS:
<4> [39.201335] CS:  0010 DS:  ES:  CR0: 80050033
<4> [39.201342] CR2: 560f1308e148 CR3: 000881972002 CR4: 
00760ee0
<4> [39.201350] PKRU: 5554
<4> [39.201355] Call Trace:
<4> [39.201361]  intel_unmap_sg+0x7b/0x180
<4> [39.201412]  shmem_put_pages+0x43/0x250 [i915]
<4> [39.201472]  ? __i915_gem_object_unset_pages.part.12+0x11b/0x1d0 [i915]
<4> [39.201531]  ? __i915_gem_object_unset_pages.part.12+0x133/0x1d0 [i915]
<4> [39.201590]  __i915_gem_object_put_pages+0x81/0xc0 [i915]
<4> [39.201646]  __i915_gem_free_objects.isra.21+0x1a7/0x4b0 [i915]
<4> [39.201658]  process_one_work+0x268/0x600
<4> [39.201666]  ? __schedule+0x307/0x8d0
<4> [39.201675]  worker_thread+0x1d0/0x380
<4> [39.201682]  ? process_one_work+0x600/0x600
<4> [39.201689]  kthread+0x140/0x160
<4> [39.201695]  ? kthread_park+0x80/0x80
<4> [39.201703]  ret_from_fork+0x24/0x50
<4> [39.201712] Modules linked in: snd_hda_codec_hdmi snd_hda_codec_realtek 
snd_hda_codec_generic i915 mei_hdcp x86_pkg_temp_thermal coretemp 
crct10dif_pclmul crc32_pclmul snd_hda_intel snd_intel_dspcfg snd_hda_codec 
e1000e ax88179_178a usbnet snd_hwdep mii snd_hda_core ghash_clmulni_intel 
snd_pcm ptp pps_core mei_me mei intel_lpss_pci prime_numbers
<4> [39.201764] ---[ end trace f3ec1bae3de04509 ]---

Signed-off-by: Janusz Krzysztofik 
---
 drivers/gpu/drm/i915/gt/intel_gt.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c 
b/drivers/gpu/drm/i915/gt/intel_gt.c
index f069551e412f..5771e80e85a6 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -599,6 +599,8 @@ void intel_gt_driver_remove(struct intel_gt *gt)
intel_uc_driver_remove(>uc);
 
intel_engines_release(gt);
+
+   intel_gt_driver_release(gt);
 }
 
 void intel_gt_driver_unregister(struct intel_gt *gt)
-- 
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/selftests: Measure dispatch latency (rev8)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Measure dispatch latency (rev8)
URL   : https://patchwork.freedesktop.org/series/77308/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8495 -> Patchwork_17695


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Possible fixes 

  * igt@debugfs_test@read_all_entries:
- fi-bsw-nick:[INCOMPLETE][1] ([i915#1250] / [i915#1436]) -> 
[PASS][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/fi-bsw-nick/igt@debugfs_test@read_all_entries.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/fi-bsw-nick/igt@debugfs_test@read_all_entries.html

  * igt@i915_selftest@live@execlists:
- fi-skl-lmem:[INCOMPLETE][3] ([i915#1874]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/fi-skl-lmem/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/fi-skl-lmem/igt@i915_selftest@l...@execlists.html
- fi-whl-u:   [INCOMPLETE][5] ([i915#656]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/fi-whl-u/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/fi-whl-u/igt@i915_selftest@l...@execlists.html
- fi-kbl-guc: [INCOMPLETE][7] ([i915#656]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/fi-kbl-guc/igt@i915_selftest@l...@execlists.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/fi-kbl-guc/igt@i915_selftest@l...@execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [SKIP][9] ([fdo#109271]) -> [FAIL][10] ([i915#62])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8495/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17695/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1250]: https://gitlab.freedesktop.org/drm/intel/issues/1250
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1874]: https://gitlab.freedesktop.org/drm/intel/issues/1874
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (52 -> 44)
--

  Missing(8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8495 -> Patchwork_17695

  CI-20190529: 20190529
  CI_DRM_8495: 695b7d214a475060bb448c2609e4184fc450d69a @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5659: 66ab5e42811fee3dea8c21ab29e70e323a0650de @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17695: 2633bb73f44c35def35771444a87a1cc99411d8a @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

2633bb73f44c drm/i915/selftests: Measure dispatch latency

== Logs ==

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


[Intel-gfx] [PATCH] drm/i915/selftests: Check for an initial-breadcrumb in wait_for_submit()

2020-05-18 Thread Chris Wilson
When we look at i915_request_is_started() we must be careful in case we
are using a request that does not have the initial-breadcrumb and
instead the is-started is being compared against the end of the previous
request. This will make wait_for_submit() declare that a request has
been already submitted too early.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/selftest_lrc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index d83ee0d09002..cd276b3badb2 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -75,7 +75,7 @@ static bool is_active(struct i915_request *rq)
if (i915_request_on_hold(rq))
return true;
 
-   if (i915_request_started(rq))
+   if (i915_request_has_initial_breadcrumb(rq) && i915_request_started(rq))
return true;
 
return false;
-- 
2.20.1

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


[Intel-gfx] [PATCH] drm/i915/gvt: Use ARRAY_SIZE for vgpu_types

2020-05-18 Thread Aishwarya Ramakrishnan
Prefer ARRAY_SIZE instead of using sizeof

Fixes coccicheck warning: Use ARRAY_SIZE

Signed-off-by: Aishwarya Ramakrishnan 
---
 drivers/gpu/drm/i915/gvt/vgpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gvt/vgpu.c b/drivers/gpu/drm/i915/gvt/vgpu.c
index 1d5ff88078bd..7d361623ff67 100644
--- a/drivers/gpu/drm/i915/gvt/vgpu.c
+++ b/drivers/gpu/drm/i915/gvt/vgpu.c
@@ -124,7 +124,7 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt)
 */
low_avail = gvt_aperture_sz(gvt) - HOST_LOW_GM_SIZE;
high_avail = gvt_hidden_sz(gvt) - HOST_HIGH_GM_SIZE;
-   num_types = sizeof(vgpu_types) / sizeof(vgpu_types[0]);
+   num_types = ARRAY_SIZE(vgpu_types);
 
gvt->types = kcalloc(num_types, sizeof(struct intel_vgpu_type),
 GFP_KERNEL);
-- 
2.17.1

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


Re: [Intel-gfx] [PATCH v2] drm/i915: Fix dbuf slice mask when turning off all the pipes

2020-05-18 Thread Ville Syrjälä
On Mon, May 18, 2020 at 02:14:15PM +0100, Chris Wilson wrote:
> Quoting Ville Syrjala (2020-05-18 13:13:54)
> > From: Ville Syrjälä 
> > 
> > The current dbuf slice computation only happens when there are
> > active pipes. If we are turning off all the pipes we just leave
> > the dbuf slice mask at it's previous value, which may be something
> > other that BIT(S1). If runtime PM will kick in it will however
> > turn off everything but S1. Then on the next atomic commit (if
> > the new dbuf slice mask matches the stale value we left behind)
> > the code will not turn on the other slices we now need. This will
> > lead to underruns as the planes are trying to use a dbuf slice
> > that's not powered up.
> > 
> > To work around let's just just explicitly set the dbuf slice mask
> > to BIT(S1) when we are turning off all the pipes. Really the code
> > should just calculate this stuff the same way regardless whether
> > the pipes are on or off, but we're not quite there yet (need a
> > bit more work on the dbuf state for that).
> > 
> > v2: Let's not put the fix into dead code
> > 
> > Cc: Stanislav Lisovskiy 
> > Acked-by: Chris Wilson  #v1
> Acked-by: Chris Wilson 
> > Fixes: 3cf43cdc63fb ("drm/i915: Introduce proper dbuf state")
> > Signed-off-by: Ville Syrjälä 
> -Chris

v2 seems to have done the trick. CI gave up on the reverts anyway so
let's go with this one then. Pushed along with Chris's smatch fix.

Apologies for the massive cockup.

-- 
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.IGT: failure for drm/i915: Fix dbuf slice mask when turning off all the pipes (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: Fix dbuf slice mask when turning off all the pipes (rev2)
URL   : https://patchwork.freedesktop.org/series/77322/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8494_full -> Patchwork_17690_full


Summary
---

  **FAILURE**

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

### IGT changes ###

 Possible regressions 

  * igt@kms_panel_fitting@atomic-fastset:
- shard-tglb: [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb2/igt@kms_panel_fitt...@atomic-fastset.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-tglb5/igt@kms_panel_fitt...@atomic-fastset.html

  
 Warnings 

  * igt@i915_pm_dc@dc6-psr:
- shard-tglb: [SKIP][3] ([i915#668]) -> [FAIL][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb7/igt@i915_pm...@dc6-psr.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-tglb1/igt@i915_pm...@dc6-psr.html

  * igt@kms_panel_fitting@atomic-fastset:
- shard-iclb: [FAIL][5] ([i915#1757]) -> [FAIL][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb6/igt@kms_panel_fitt...@atomic-fastset.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-iclb1/igt@kms_panel_fitt...@atomic-fastset.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gen9_exec_parse@allowed-all:
- shard-kbl:  [PASS][7] -> [DMESG-WARN][8] ([i915#1436] / 
[i915#716])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl3/igt@gen9_exec_pa...@allowed-all.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-kbl7/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_suspend@debugfs-reader:
- shard-apl:  [PASS][9] -> [DMESG-WARN][10] ([i915#180]) +1 similar 
issue
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-apl6/igt@i915_susp...@debugfs-reader.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-apl1/igt@i915_susp...@debugfs-reader.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen:
- shard-skl:  [PASS][11] -> [FAIL][12] ([i915#54])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl1/igt@kms_cursor_...@pipe-a-cursor-128x128-offscreen.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-skl8/igt@kms_cursor_...@pipe-a-cursor-128x128-offscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-skl:  [PASS][13] -> [INCOMPLETE][14] ([i915#300])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl3/igt@kms_cursor_...@pipe-c-cursor-suspend.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-skl7/igt@kms_cursor_...@pipe-c-cursor-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-apl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180] / 
[i915#95])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-apl8/igt@kms_frontbuffer_track...@fbc-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-apl1/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-kbl:  [PASS][17] -> [DMESG-WARN][18] ([i915#180])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl7/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-kbl7/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:
- shard-skl:  [PASS][19] -> [FAIL][20] ([fdo#108145] / [i915#265])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl4/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-skl7/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_blt:
- shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/shard-iclb6/igt@kms_psr@psr2_sprite_blt.html

  
 Possible fixes 

[Intel-gfx] [PATCH][next] drm/i915: fix incorrect return of an error status

2020-05-18 Thread Colin King
From: Colin Ian King 

Currently when a call to intel_atomic_get_dbuf_state fails the
error value being returns is a potentially uninitialized value
in variable ret.  Fix this by returning the error value of
new_dbuf_state.

Addresses-Coverity: ("Uninitialized scalar value")
Fixes: 3cf43cdc63fb ("drm/i915: Introduce proper dbuf state")
Signed-off-by: Colin Ian King 
---
 drivers/gpu/drm/i915/intel_pm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index a21e36ed1a77..762a5184fc69 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5917,7 +5917,7 @@ skl_ddb_add_affected_pipes(struct intel_atomic_state 
*state)
 
new_dbuf_state = intel_atomic_get_dbuf_state(state);
if (IS_ERR(new_dbuf_state))
-   return ret;
+   return PTR_ERR(new_dbuf_state);
 
old_dbuf_state = intel_atomic_get_old_dbuf_state(state);
 
-- 
2.25.1

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


[Intel-gfx] [PATCH 2/3] drm/i915/params: fix i915.fake_lmem_start module param sysfs permissions

2020-05-18 Thread Jani Nikula
fake_lmem_start does not need to be mutable via module param sysfs. It's
only used during driver probe.

Fixes: 1629224324b6 ("drm/i915/lmem: add the fake lmem region")
Cc: Matthew Auld 
Cc: Joonas Lahtinen 
Cc: Chris Wilson 
Reviewed-by: Rodrigo Vivi 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/i915_params.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_params.c 
b/drivers/gpu/drm/i915/i915_params.c
index add00ec1f787..a3dde770226d 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -173,7 +173,7 @@ i915_param_named(enable_gvt, bool, 0400,
 #endif
 
 #if IS_ENABLED(CONFIG_DRM_I915_UNSTABLE_FAKE_LMEM)
-i915_param_named_unsafe(fake_lmem_start, ulong, 0600,
+i915_param_named_unsafe(fake_lmem_start, ulong, 0400,
"Fake LMEM start offset (default: 0)");
 #endif
 
-- 
2.20.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/params: prevent changing module params runtime

2020-05-18 Thread Jani Nikula
Only support runtime changes through the debugfs.

i915.verbose_state_checks remains an exception, and is not exposed via
debugfs.

This depends on IGT having been updated to use the debugfs for modifying
the parameters.

Cc: Juha-Pekka Heikkilä 
Cc: Venkata Sandeep Dhanalakota 
Reviewed-by: Juha-Pekka Heikkila 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/i915_params.c | 38 +++---
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_params.c 
b/drivers/gpu/drm/i915/i915_params.c
index a3dde770226d..ace44ad7e6df 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -40,6 +40,15 @@ struct i915_params i915_modparams __read_mostly = {
 #undef MEMBER
 };
 
+/*
+ * Note: As a rule, keep module parameter sysfs permissions read-only
+ * 0400. Runtime changes are only supported through i915 debugfs.
+ *
+ * For any exceptions requiring write access and runtime changes through module
+ * parameter sysfs, prevent debugfs file creation by setting the parameter's
+ * debugfs mode to 0.
+ */
+
 i915_param_named(modeset, int, 0400,
"Use kernel modesetting [KMS] (0=disable, "
"1=on, -1=force vga console preference [default])");
@@ -49,7 +58,7 @@ i915_param_named_unsafe(enable_dc, int, 0400,
"(-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6; "
"3=up to DC5 with DC3CO; 4=up to DC6 with DC3CO)");
 
-i915_param_named_unsafe(enable_fbc, int, 0600,
+i915_param_named_unsafe(enable_fbc, int, 0400,
"Enable frame buffer compression for power savings "
"(default: -1 (use per-chip default))");
 
@@ -57,7 +66,7 @@ i915_param_named_unsafe(lvds_channel_mode, int, 0400,
 "Specify LVDS channel mode "
 "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)");
 
-i915_param_named_unsafe(panel_use_ssc, int, 0600,
+i915_param_named_unsafe(panel_use_ssc, int, 0400,
"Use Spread Spectrum Clock with panels [LVDS/eDP] "
"(default: auto from VBT)");
 
@@ -65,25 +74,25 @@ i915_param_named_unsafe(vbt_sdvo_panel_type, int, 0400,
"Override/Ignore selection of SDVO panel mode in the VBT "
"(-2=ignore, -1=auto [default], index in VBT BIOS table)");
 
-i915_param_named_unsafe(reset, int, 0600,
+i915_param_named_unsafe(reset, int, 0400,
"Attempt GPU resets (0=disabled, 1=full gpu reset, 2=engine reset 
[default])");
 
 i915_param_named_unsafe(vbt_firmware, charp, 0400,
"Load VBT from specified file under /lib/firmware");
 
 #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
-i915_param_named(error_capture, bool, 0600,
+i915_param_named(error_capture, bool, 0400,
"Record the GPU state following a hang. "
"This information in /sys/class/drm/card/error is vital for "
"triaging and debugging hangs.");
 #endif
 
-i915_param_named_unsafe(enable_hangcheck, bool, 0600,
+i915_param_named_unsafe(enable_hangcheck, bool, 0400,
"Periodically check GPU activity for detecting hangs. "
"WARNING: Disabling this can cause system wide hangs. "
"(default: true)");
 
-i915_param_named_unsafe(enable_psr, int, 0600,
+i915_param_named_unsafe(enable_psr, int, 0400,
"Enable PSR "
"(0=disabled, 1=enabled) "
"Default: -1 (use per-chip default)");
@@ -96,22 +105,22 @@ i915_param_named_unsafe(disable_power_well, int, 0400,
"Disable display power wells when possible "
"(-1=auto [default], 0=power wells always on, 1=power wells disabled 
when possible)");
 
-i915_param_named_unsafe(enable_ips, int, 0600, "Enable IPS (default: true)");
+i915_param_named_unsafe(enable_ips, int, 0400, "Enable IPS (default: true)");
 
-i915_param_named(fastboot, int, 0600,
+i915_param_named(fastboot, int, 0400,
"Try to skip unnecessary mode sets at boot time "
"(0=disabled, 1=enabled) "
"Default: -1 (use per-chip default)");
 
-i915_param_named_unsafe(load_detect_test, bool, 0600,
+i915_param_named_unsafe(load_detect_test, bool, 0400,
"Force-enable the VGA load detect code for testing (default:false). "
"For developers only.");
 
-i915_param_named_unsafe(force_reset_modeset_test, bool, 0600,
+i915_param_named_unsafe(force_reset_modeset_test, bool, 0400,
"Force a modeset during gpu reset for testing (default:false). "
"For developers only.");
 
-i915_param_named_unsafe(invert_brightness, int, 0600,
+i915_param_named_unsafe(invert_brightness, int, 0400,
"Invert backlight brightness "
"(-1 force normal, 0 machine defaults, 1 force inversion), please "
"report PCI device ID, subsystem vendor and subsystem device ID "
@@ -121,10 +130,11 @@ i915_param_named_unsafe(invert_brightness, int, 0600,
 i915_param_named(disable_display, bool, 0400,
"Disable display (default: false)");
 
-i915_param_named(mmio_debug, int, 0600,
+i915_param_named(mmio_debug, int, 0400,
"Enable the MMIO debug code for the first N 

[Intel-gfx] [PATCH 1/3] drm/i915/params: don't expose inject_probe_failure in debugfs

2020-05-18 Thread Jani Nikula
The parameter only makes sense as a module parameter only.

Fixes: c43c5a8818d4 ("drm/i915/params: add i915 parameters to debugfs")
Cc: Juha-Pekka Heikkilä 
Cc: Venkata Sandeep Dhanalakota 
Reviewed-by: Juha-Pekka Heikkila 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/i915_params.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_params.h 
b/drivers/gpu/drm/i915/i915_params.h
index 45323732f099..4f21bfffbf0e 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
@@ -64,7 +64,7 @@ struct drm_printer;
param(int, mmio_debug, -IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO), 0600) \
param(int, edp_vswing, 0, 0400) \
param(unsigned int, reset, 3, 0600) \
-   param(unsigned int, inject_probe_failure, 0, 0600) \
+   param(unsigned int, inject_probe_failure, 0, 0) \
param(int, fastboot, -1, 0600) \
param(int, enable_dpcd_backlight, -1, 0600) \
param(char *, force_probe, CONFIG_DRM_I915_FORCE_PROBE, 0400) \
-- 
2.20.1

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


[Intel-gfx] drm/i915: device params part 1

2020-05-18 Thread Jani Nikula
This is the first 3 patches of [1], because apparently patch 4 breaks
the world. I've yet to pinpoint the issue, but these could move forward
in the meanwhile.

BR,
Jani.


[1] https://patchwork.freedesktop.org/series/77272/



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


[Intel-gfx] [PATCH 3/7] drm/i915/gt: Kick virtual siblings on timeslice out

2020-05-18 Thread Chris Wilson
If we decide to timeslice out the current virtual request, we will
unsubmit it while it is still busy (ve->context.inflight == sibling[0]).
If the virtual tasklet and then the other sibling tasklets run before we
completely schedule out the active virtual request for the preemption,
those other tasklets will see that the virtul request is still inflight
on sibling[0] and leave it be. Therefore when we finally schedule-out
the virtual request and if we see that we have passed it back to the
virtual engine, reschedule the virtual tasklet so that it may be
resubmitted on any of the siblings.

Signed-off-by: Chris Wilson 
Reviewed-by: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 80885ba87db5..05486e801a63 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1402,7 +1402,7 @@ static void kick_siblings(struct i915_request *rq, struct 
intel_context *ce)
struct virtual_engine *ve = container_of(ce, typeof(*ve), context);
struct i915_request *next = READ_ONCE(ve->request);
 
-   if (next && next->execution_mask & ~rq->execution_mask)
+   if (next == rq || (next && next->execution_mask & ~rq->execution_mask))
tasklet_hi_schedule(>base.execlists.tasklet);
 }
 
-- 
2.20.1

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


[Intel-gfx] [PATCH 4/7] drm/i915/gt: Incorporate the virtual engine into timeslicing

2020-05-18 Thread Chris Wilson
It was quite the oversight to only factor in the normal queue to decide
the timeslicing switch priority. By leaving out the next virtual request
from the priority decision, we would not timeslice the current engine if
there was an available virtual request.

Testcase: igt/gem_exec_balancer/sliced
Fixes: 3df2deed411e ("drm/i915/execlists: Enable timeslice on partial virtual 
engine dequeue")
Signed-off-by: Chris Wilson 
Cc: Mika Kuoppala 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 30 +++--
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 05486e801a63..8524c5f3a329 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1895,7 +1895,8 @@ static void defer_active(struct intel_engine_cs *engine)
 
 static bool
 need_timeslice(const struct intel_engine_cs *engine,
-  const struct i915_request *rq)
+  const struct i915_request *rq,
+  const struct rb_node *rb)
 {
int hint;
 
@@ -1903,6 +1904,24 @@ need_timeslice(const struct intel_engine_cs *engine,
return false;
 
hint = engine->execlists.queue_priority_hint;
+
+   if (rb) {
+   const struct virtual_engine *ve =
+   rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
+   const struct intel_engine_cs *inflight =
+   intel_context_inflight(>context);
+
+   if (!inflight || inflight == engine) {
+   struct i915_request *next;
+
+   rcu_read_lock();
+   next = READ_ONCE(ve->request);
+   if (next)
+   hint = max(hint, rq_prio(next));
+   rcu_read_unlock();
+   }
+   }
+
if (!list_is_last(>sched.link, >active.requests))
hint = max(hint, rq_prio(list_next_entry(rq, sched.link)));
 
@@ -1977,10 +1996,9 @@ static void set_timeslice(struct intel_engine_cs *engine)
set_timer_ms(>execlists.timer, duration);
 }
 
-static void start_timeslice(struct intel_engine_cs *engine)
+static void start_timeslice(struct intel_engine_cs *engine, int prio)
 {
struct intel_engine_execlists *execlists = >execlists;
-   const int prio = queue_prio(execlists);
unsigned long duration;
 
if (!intel_engine_has_timeslices(engine))
@@ -2140,7 +2158,7 @@ static void execlists_dequeue(struct intel_engine_cs 
*engine)
__unwind_incomplete_requests(engine);
 
last = NULL;
-   } else if (need_timeslice(engine, last) &&
+   } else if (need_timeslice(engine, last, rb) &&
   timeslice_expired(execlists, last)) {
if (i915_request_completed(last)) {
tasklet_hi_schedule(>tasklet);
@@ -2188,7 +2206,7 @@ static void execlists_dequeue(struct intel_engine_cs 
*engine)
 * Even if ELSP[1] is occupied and not worthy
 * of timeslices, our queue might be.
 */
-   start_timeslice(engine);
+   start_timeslice(engine, queue_prio(execlists));
return;
}
}
@@ -2223,7 +2241,7 @@ static void execlists_dequeue(struct intel_engine_cs 
*engine)
 
if (last && !can_merge_rq(last, rq)) {
spin_unlock(>base.active.lock);
-   start_timeslice(engine);
+   start_timeslice(engine, rq_prio(rq));
return; /* leave this for another sibling */
}
 
-- 
2.20.1

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


[Intel-gfx] [PATCH 7/7] drm/i915/gt: Resubmit the virtual engine on schedule-out

2020-05-18 Thread Chris Wilson
Having recognised that we do not change the sibling until we schedule
out, we can then defer the decision to resubmit the virtual engine from
the unwind of the active queue to scheduling out of the virtual context.

By keeping the unwind order intact on the local engine, we can preserve
data dependency ordering while doing a preempt-to-busy pass until we
have determined the new ELSP. This means that if we try to timeslice
between a virtual engine and a data-dependent ordinary request, the pair
will maintain their relative ordering and we will avoid the
resubmission, cancelling the timeslicing until further change.

The dilemma though is that we then may end up in a situation where the
'demotion' of the virtual request to an ordinary request in the engine
queue results in filling the ELSP[] with virtual requests instead of
spreading the load across the engines. To compensate for this, we mark
each virtual request and refuse to resubmit a virtual request in the
secondary ELSP slots, thus forcing subsequent virtual requests to be
scheduled out after timeslicing. By delaying the decision until we
schedule out, we will avoid unnecessary resubmission.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c| 99 --
 drivers/gpu/drm/i915/gt/selftest_lrc.c |  2 +-
 2 files changed, 62 insertions(+), 39 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 3bc49f1b835f..4123020b8a29 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1114,46 +1114,17 @@ __unwind_incomplete_requests(struct intel_engine_cs 
*engine)
 
__i915_request_unsubmit(rq);
 
-   /*
-* Push the request back into the queue for later resubmission.
-* If this request is not native to this physical engine (i.e.
-* it came from a virtual source), push it back onto the virtual
-* engine so that it can be moved across onto another physical
-* engine as load dictates.
-*/
-   if (likely(rq->execution_mask == engine->mask)) {
-   GEM_BUG_ON(rq_prio(rq) == I915_PRIORITY_INVALID);
-   if (rq_prio(rq) != prio) {
-   prio = rq_prio(rq);
-   pl = i915_sched_lookup_priolist(engine, prio);
-   }
-   
GEM_BUG_ON(RB_EMPTY_ROOT(>execlists.queue.rb_root));
-
-   list_move(>sched.link, pl);
-   set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
+   GEM_BUG_ON(rq_prio(rq) == I915_PRIORITY_INVALID);
+   if (rq_prio(rq) != prio) {
+   prio = rq_prio(rq);
+   pl = i915_sched_lookup_priolist(engine, prio);
+   }
+   GEM_BUG_ON(RB_EMPTY_ROOT(>execlists.queue.rb_root));
 
-   active = rq;
-   } else {
-   struct intel_engine_cs *owner = rq->context->engine;
+   list_move(>sched.link, pl);
+   set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
 
-   /*
-* Decouple the virtual breadcrumb before moving it
-* back to the virtual engine -- we don't want the
-* request to complete in the background and try
-* and cancel the breadcrumb on the virtual engine
-* (instead of the old engine where it is linked)!
-*/
-   if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
->fence.flags)) {
-   spin_lock_nested(>lock,
-SINGLE_DEPTH_NESTING);
-   i915_request_cancel_breadcrumb(rq);
-   spin_unlock(>lock);
-   }
-   WRITE_ONCE(rq->engine, owner);
-   owner->submit_request(rq);
-   active = NULL;
-   }
+   active = rq;
}
 
return active;
@@ -1395,12 +1366,41 @@ execlists_schedule_in(struct i915_request *rq, int idx)
return i915_request_get(rq);
 }
 
+static void
+resubmit_virtual_request(struct i915_request *rq, struct virtual_engine *ve)
+{
+   /*
+* Decouple the virtual breadcrumb before moving it back to the virtual
+* engine -- we don't want the request to complete in the background
+* and then try and cancel the breadcrumb on the virtual engine
+* (instead of the old engine where it is linked)!
+*/
+   if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, >fence.flags)) {
+   spin_lock_nested(>lock, SINGLE_DEPTH_NESTING);
+   

[Intel-gfx] [PATCH 5/7] drm/i915/gt: Use virtual_engine during execlists_dequeue

2020-05-18 Thread Chris Wilson
Rather than going back and forth between the rb_node entry and the
virtual_engine type, store the ve local and reuse it. As the
container_of conversion from rb_node to virtual_engine requires a
variable offset, performing that conversion just once shaves off a bit
of code.

v2: Keep a single virtual engine lookup, for typical use.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 217 +---
 1 file changed, 104 insertions(+), 113 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 8524c5f3a329..ea7e86e6ef82 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -451,7 +451,7 @@ static int queue_prio(const struct intel_engine_execlists 
*execlists)
 
 static inline bool need_preempt(const struct intel_engine_cs *engine,
const struct i915_request *rq,
-   struct rb_node *rb)
+   struct virtual_engine *ve)
 {
int last_prio;
 
@@ -488,9 +488,7 @@ static inline bool need_preempt(const struct 
intel_engine_cs *engine,
rq_prio(list_next_entry(rq, sched.link)) > last_prio)
return true;
 
-   if (rb) {
-   struct virtual_engine *ve =
-   rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
+   if (ve) {
bool preempt = false;
 
if (engine == ve->siblings[0]) { /* only preempt one sibling */
@@ -1812,6 +1810,35 @@ static bool virtual_matches(const struct virtual_engine 
*ve,
return true;
 }
 
+static struct virtual_engine *
+first_virtual_engine(struct intel_engine_cs *engine)
+{
+   struct intel_engine_execlists *el = >execlists;
+   struct rb_node *rb = rb_first_cached(>virtual);
+
+   while (rb) {
+   struct virtual_engine *ve =
+   rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
+   struct i915_request *rq = READ_ONCE(ve->request);
+
+   if (!rq) { /* lazily cleanup after another engine handled rq */
+   rb_erase_cached(rb, >virtual);
+   RB_CLEAR_NODE(rb);
+   rb = rb_first_cached(>virtual);
+   continue;
+   }
+
+   if (!virtual_matches(ve, rq, engine)) {
+   rb = rb_next(rb);
+   continue;
+   }
+
+   return ve;
+   }
+
+   return NULL;
+}
+
 static void virtual_xfer_breadcrumbs(struct virtual_engine *ve)
 {
/*
@@ -1896,7 +1923,7 @@ static void defer_active(struct intel_engine_cs *engine)
 static bool
 need_timeslice(const struct intel_engine_cs *engine,
   const struct i915_request *rq,
-  const struct rb_node *rb)
+  struct virtual_engine *ve)
 {
int hint;
 
@@ -1905,9 +1932,7 @@ need_timeslice(const struct intel_engine_cs *engine,
 
hint = engine->execlists.queue_priority_hint;
 
-   if (rb) {
-   const struct virtual_engine *ve =
-   rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
+   if (ve) {
const struct intel_engine_cs *inflight =
intel_context_inflight(>context);
 
@@ -2057,7 +2082,8 @@ static void execlists_dequeue(struct intel_engine_cs 
*engine)
struct intel_engine_execlists * const execlists = >execlists;
struct i915_request **port = execlists->pending;
struct i915_request ** const last_port = port + execlists->port_mask;
-   struct i915_request * const *active;
+   struct i915_request * const *active = READ_ONCE(execlists->active);
+   struct virtual_engine *ve = first_virtual_engine(engine);
struct i915_request *last;
struct rb_node *rb;
bool submit = false;
@@ -2084,26 +2110,6 @@ static void execlists_dequeue(struct intel_engine_cs 
*engine)
 * and context switches) submission.
 */
 
-   for (rb = rb_first_cached(>virtual); rb; ) {
-   struct virtual_engine *ve =
-   rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
-   struct i915_request *rq = READ_ONCE(ve->request);
-
-   if (!rq) { /* lazily cleanup after another engine handled rq */
-   rb_erase_cached(rb, >virtual);
-   RB_CLEAR_NODE(rb);
-   rb = rb_first_cached(>virtual);
-   continue;
-   }
-
-   if (!virtual_matches(ve, rq, engine)) {
-   rb = rb_next(rb);
-   continue;
-   }
-
-   break;
-   }
-
/*
 * If the queue is higher priority than the last
 * request in the currently active context, submit afresh.
@@ -2111,10 +2117,7 @@ static void execlists_dequeue(struct intel_engine_cs 
*engine)

[Intel-gfx] [PATCH 2/7] drm/i915/selftests: Add tests for timeslicing virtual engines

2020-05-18 Thread Chris Wilson
Make sure that we can execute a virtual request on an already busy
engine, and conversely that we can execute a normal request if the
engines are already fully occupied by virtual requests.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/selftest_lrc.c | 188 -
 1 file changed, 185 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index 94854a467e66..370630553871 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -3600,9 +3600,11 @@ static int nop_virtual_engine(struct intel_gt *gt,
return err;
 }
 
-static unsigned int select_siblings(struct intel_gt *gt,
-   unsigned int class,
-   struct intel_engine_cs **siblings)
+static unsigned int
+__select_siblings(struct intel_gt *gt,
+ unsigned int class,
+ struct intel_engine_cs **siblings,
+ bool (*filter)(const struct intel_engine_cs *))
 {
unsigned int n = 0;
unsigned int inst;
@@ -3611,12 +3613,24 @@ static unsigned int select_siblings(struct intel_gt *gt,
if (!gt->engine_class[class][inst])
continue;
 
+   if (filter && !filter(gt->engine_class[class][inst]))
+   continue;
+
siblings[n++] = gt->engine_class[class][inst];
}
 
return n;
 }
 
+static unsigned int
+select_siblings(struct intel_gt *gt,
+   unsigned int class,
+   struct intel_engine_cs **siblings)
+{
+   return __select_siblings(gt, class, siblings, NULL);
+
+}
+
 static int live_virtual_engine(void *arg)
 {
struct intel_gt *gt = arg;
@@ -3771,6 +3785,173 @@ static int live_virtual_mask(void *arg)
return 0;
 }
 
+static int slicein_virtual_engine(struct intel_gt *gt,
+ struct intel_engine_cs **siblings,
+ unsigned int nsibling)
+{
+   struct intel_context *ce;
+   struct i915_request *rq;
+   struct igt_spinner spin;
+   unsigned int n;
+   int err = 0;
+
+   /*
+* Virtual requests must take part in timeslicing on the target engines.
+*/
+
+   if (igt_spinner_init(, gt))
+   return -ENOMEM;
+
+   for (n = 0; n < nsibling; n++) {
+   ce = intel_context_create(siblings[n]);
+   if (IS_ERR(ce)) {
+   err = PTR_ERR(ce);
+   goto out;
+   }
+
+   rq = igt_spinner_create_request(, ce, MI_ARB_CHECK);
+   intel_context_put(ce);
+
+   if (IS_ERR(rq)) {
+   err = PTR_ERR(rq);
+   goto out;
+   }
+
+   i915_request_add(rq);
+   }
+
+   ce = intel_execlists_create_virtual(siblings, nsibling);
+   if (IS_ERR(ce)) {
+   err = PTR_ERR(ce);
+   goto out;
+   }
+
+   rq = intel_context_create_request(ce);
+   intel_context_put(ce);
+   if (IS_ERR(rq)) {
+   err = PTR_ERR(rq);
+   goto out;
+   }
+
+   i915_request_get(rq);
+   i915_request_add(rq);
+   if (i915_request_wait(rq, 0, HZ / 10) < 0) {
+   GEM_TRACE_ERR("%s(%s) failed to slice in virtual request\n",
+ __func__, rq->engine->name);
+   GEM_TRACE_DUMP();
+   intel_gt_set_wedged(gt);
+   err = -EIO;
+   }
+   i915_request_put(rq);
+
+out:
+   igt_spinner_end();
+   if (igt_flush_test(gt->i915))
+   err = -EIO;
+   igt_spinner_fini();
+   return err;
+}
+
+static int sliceout_virtual_engine(struct intel_gt *gt,
+  struct intel_engine_cs **siblings,
+  unsigned int nsibling)
+{
+   struct intel_context *ce;
+   struct i915_request *rq;
+   struct igt_spinner spin;
+   unsigned int n;
+   int err = 0;
+
+   /*
+* Virtual requests must allow others a fair timeslice.
+*/
+
+   if (igt_spinner_init(, gt))
+   return -ENOMEM;
+
+   for (n = 0; n <= nsibling; n++) { /* oversubscribed */
+   ce = intel_execlists_create_virtual(siblings, nsibling);
+   if (IS_ERR(ce)) {
+   err = PTR_ERR(ce);
+   goto out;
+   }
+
+   rq = igt_spinner_create_request(, ce, MI_ARB_CHECK);
+   intel_context_put(ce);
+
+   if (IS_ERR(rq)) {
+   err = PTR_ERR(rq);
+   goto out;
+   }
+
+   i915_request_add(rq);
+   }
+
+   for (n = 0; !err && n < nsibling; n++) {
+   ce = intel_context_create(siblings[n]);
+   if (IS_ERR(ce)) {
+   

[Intel-gfx] [PATCH 1/7] drm/i915: Move saturated workload detection back to the context

2020-05-18 Thread Chris Wilson
When we introduced the saturated workload detection to tell us to back
off from semaphore usage [semaphores have a noticeable impact on
contended bus cycles with the CPU for some heavy workloads], we first
introduced it as a per-context tracker. This allows individual contexts
to try and optimise their own usage, but we found that with the local
tracking and the no-semaphore boosting, the first context to disable
semaphores got a massive priority boost and so would starve the rest and
all new contexts (as they started with semaphores enabled and lower
priority). Hence we moved the saturated workload detection to the
engine, and a consequence had to disable semaphores on virtual engines.

Now that we do not have semaphore priority boosting, we can move the
tracking back to the context and virtual engines can now utilise the
faster inter-engine synchronisation.

References: 44d89409a12e ("drm/i915: Make the semaphore saturation mask global")
Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/intel_context.c   |  1 +
 drivers/gpu/drm/i915/gt/intel_context_types.h |  2 ++
 drivers/gpu/drm/i915/gt/intel_engine_pm.c |  2 --
 drivers/gpu/drm/i915/gt/intel_engine_types.h  |  2 --
 drivers/gpu/drm/i915/gt/intel_lrc.c   | 15 ---
 drivers/gpu/drm/i915/i915_request.c   |  4 ++--
 6 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_context.c 
b/drivers/gpu/drm/i915/gt/intel_context.c
index e4aece20bc80..762a251d553b 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -268,6 +268,7 @@ static int __intel_context_active(struct i915_active 
*active)
if (err)
goto err_timeline;
 
+   ce->saturated = 0;
return 0;
 
 err_timeline:
diff --git a/drivers/gpu/drm/i915/gt/intel_context_types.h 
b/drivers/gpu/drm/i915/gt/intel_context_types.h
index 4954b0df4864..aed26d93c2ca 100644
--- a/drivers/gpu/drm/i915/gt/intel_context_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_context_types.h
@@ -78,6 +78,8 @@ struct intel_context {
} lrc;
u32 tag; /* cookie passed to HW to track this context on submission */
 
+   intel_engine_mask_t saturated; /* submitting semaphores too late? */
+
/* Time on GPU as tracked by the hw. */
struct {
struct ewma_runtime avg;
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pm.c 
b/drivers/gpu/drm/i915/gt/intel_engine_pm.c
index d0a1078ef632..6d7fdba5adef 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_pm.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_pm.c
@@ -229,8 +229,6 @@ static int __engine_park(struct intel_wakeref *wf)
struct intel_engine_cs *engine =
container_of(wf, typeof(*engine), wakeref);
 
-   engine->saturated = 0;
-
/*
 * If one and only one request is completed between pm events,
 * we know that we are inside the kernel context and it is
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h 
b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 2b6cdf47d428..c443b6bb884b 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -332,8 +332,6 @@ struct intel_engine_cs {
 
struct intel_context *kernel_context; /* pinned */
 
-   intel_engine_mask_t saturated; /* submitting semaphores too late? */
-
struct {
struct delayed_work work;
struct i915_request *systole;
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index d7ef3f8640d2..80885ba87db5 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -5630,21 +5630,6 @@ intel_execlists_create_virtual(struct intel_engine_cs 
**siblings,
ve->base.instance = I915_ENGINE_CLASS_INVALID_VIRTUAL;
ve->base.uabi_instance = I915_ENGINE_CLASS_INVALID_VIRTUAL;
 
-   /*
-* The decision on whether to submit a request using semaphores
-* depends on the saturated state of the engine. We only compute
-* this during HW submission of the request, and we need for this
-* state to be globally applied to all requests being submitted
-* to this engine. Virtual engines encompass more than one physical
-* engine and so we cannot accurately tell in advance if one of those
-* engines is already saturated and so cannot afford to use a semaphore
-* and be pessimized in priority for doing so -- if we are the only
-* context using semaphores after all other clients have stopped, we
-* will be starved on the saturated system. Such a global switch for
-* semaphores is less than ideal, but alas is the current compromise.
-*/
-   ve->base.saturated = ALL_ENGINES;
-
snprintf(ve->base.name, sizeof(ve->base.name), "virtual");
 
intel_engine_init_active(>base, ENGINE_VIRTUAL);
diff --git 

[Intel-gfx] [PATCH 6/7] drm/i915/gt: Decouple inflight virtual engines

2020-05-18 Thread Chris Wilson
Once a virtual engine has been bound to a sibling, it will remain bound
until we finally schedule out the last active request. We can not rebind
the context to a new sibling while it is inflight as the context save
will conflict, hence we wait. As we cannot then use any other sibliing
while the context is inflight, only kick the bound sibling while it
inflight and upon scheduling out the kick the rest (so that we can swap
engines on timeslicing if the previously bound engine becomes
oversubscribed).

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 30 +
 1 file changed, 13 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index ea7e86e6ef82..3bc49f1b835f 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1398,9 +1398,8 @@ execlists_schedule_in(struct i915_request *rq, int idx)
 static void kick_siblings(struct i915_request *rq, struct intel_context *ce)
 {
struct virtual_engine *ve = container_of(ce, typeof(*ve), context);
-   struct i915_request *next = READ_ONCE(ve->request);
 
-   if (next == rq || (next && next->execution_mask & ~rq->execution_mask))
+   if (READ_ONCE(ve->request))
tasklet_hi_schedule(>base.execlists.tasklet);
 }
 
@@ -1821,18 +1820,14 @@ first_virtual_engine(struct intel_engine_cs *engine)
rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
struct i915_request *rq = READ_ONCE(ve->request);
 
-   if (!rq) { /* lazily cleanup after another engine handled rq */
+   /* lazily cleanup after another engine handled rq */
+   if (!rq || !virtual_matches(ve, rq, engine)) {
rb_erase_cached(rb, >virtual);
RB_CLEAR_NODE(rb);
rb = rb_first_cached(>virtual);
continue;
}
 
-   if (!virtual_matches(ve, rq, engine)) {
-   rb = rb_next(rb);
-   continue;
-   }
-
return ve;
}
 
@@ -5468,7 +5463,6 @@ static void virtual_submission_tasklet(unsigned long data)
if (unlikely(!mask))
return;
 
-   local_irq_disable();
for (n = 0; n < ve->num_siblings; n++) {
struct intel_engine_cs *sibling = READ_ONCE(ve->siblings[n]);
struct ve_node * const node = >nodes[sibling->id];
@@ -5478,20 +5472,19 @@ static void virtual_submission_tasklet(unsigned long 
data)
if (!READ_ONCE(ve->request))
break; /* already handled by a sibling's tasklet */
 
+   spin_lock_irq(>active.lock);
+
if (unlikely(!(mask & sibling->mask))) {
if (!RB_EMPTY_NODE(>rb)) {
-   spin_lock(>active.lock);
rb_erase_cached(>rb,
>execlists.virtual);
RB_CLEAR_NODE(>rb);
-   spin_unlock(>active.lock);
}
-   continue;
-   }
 
-   spin_lock(>active.lock);
+   goto unlock_engine;
+   }
 
-   if (!RB_EMPTY_NODE(>rb)) {
+   if (unlikely(!RB_EMPTY_NODE(>rb))) {
/*
 * Cheat and avoid rebalancing the tree if we can
 * reuse this node in situ.
@@ -5531,9 +5524,12 @@ static void virtual_submission_tasklet(unsigned long 
data)
if (first && prio > sibling->execlists.queue_priority_hint)
tasklet_hi_schedule(>execlists.tasklet);
 
-   spin_unlock(>active.lock);
+unlock_engine:
+   spin_unlock_irq(>active.lock);
+
+   if (intel_context_inflight(>context))
+   break;
}
-   local_irq_enable();
 }
 
 static void virtual_submit_request(struct i915_request *rq)
-- 
2.20.1

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


Re: [Intel-gfx] [PATCH v6 00/16] drm/i915: Add support for HDCP 1.4 over MST connectors

2020-05-18 Thread Ramalingam C
On 2020-05-18 at 10:32:09 -0400, Sean Paul wrote:
> On Fri, May 15, 2020 at 10:48 AM Ramalingam C  wrote:
> >
> > On 2020-04-29 at 15:54:46 -0400, Sean Paul wrote:
> > > From: Sean Paul 
> > >
> > > Changes in v6:
> > > -Rebased on -tip
> > > -Disabled HDCP over MST on GEN12
> > > -Addressed Lyude's review comments in the QUERY_STREAM_ENCRYPTION_STATUS 
> > > patch
> >
> > Sean,
> >
> > What is the test setup you have used?
> >
> 
> Hi Ram,
> Thanks for the feedback. To be completely honest it's really
> frustrating that I'm just now getting questions and review feedback
> (which I've been begging for on IRC) on this review that could have
> been addressed ~5 months ago. It's super disruptive to have to keep
> switching back to this after a long hiatus and many i915 refactors
> complicating my rebases.
Hi Sean,

As a developer I really feel bad for the delay happened in review.
I couldn't spend required time for understanding MST part hence I
couldn't review.

Just for this series now I have started preparing myself on these topics,
hence started reviewing the series.

If you are still interested to work on this, I can commit for regular reviews.

Thanks,
Ram.
> 
> If no one wants this patchset, that's fine, please just let me know so
> I don't waste any more time. If Intel is interested, could we please
> stop the review trickle and lay out exactly what needs to be done to
> get this landed?
> 
> Sean
> 
> 
> > I am afraid our CI dont have the coverage for MST capability yet to provide
> > the functional status of the code.
> >
> > -Ram.
> > >
> > > Sean Paul (16):
> > >   drm/i915: Fix sha_text population code
> > >   drm/i915: Clear the repeater bit on HDCP disable
> > >   drm/i915: WARN if HDCP signalling is enabled upon disable
> > >   drm/i915: Intercept Aksv writes in the aux hooks
> > >   drm/i915: Use the cpu_transcoder in intel_hdcp to toggle HDCP
> > > signalling
> > >   drm/i915: Factor out hdcp->value assignments
> > >   drm/i915: Protect workers against disappearing connectors
> > >   drm/i915: Don't fully disable HDCP on a port if multiple pipes are
> > > using it
> > >   drm/i915: Support DP MST in enc_to_dig_port() function
> > >   drm/i915: Use ddi_update_pipe in intel_dp_mst
> > >   drm/i915: Factor out HDCP shim functions from dp for use by dp_mst
> > >   drm/i915: Plumb port through hdcp init
> > >   drm/i915: Add connector to hdcp_shim->check_link()
> > >   drm/mst: Add support for QUERY_STREAM_ENCRYPTION_STATUS MST sideband
> > > message
> > >   drm/i915: Print HDCP version info for all connectors
> > >   drm/i915: Add HDCP 1.4 support for MST connectors
> > >
> > >  drivers/gpu/drm/drm_dp_mst_topology.c | 142 
> > >  drivers/gpu/drm/i915/Makefile |   1 +
> > >  drivers/gpu/drm/i915/display/intel_ddi.c  |  29 +-
> > >  drivers/gpu/drm/i915/display/intel_ddi.h  |   2 +
> > >  .../drm/i915/display/intel_display_debugfs.c  |  21 +-
> > >  .../drm/i915/display/intel_display_types.h|  30 +-
> > >  drivers/gpu/drm/i915/display/intel_dp.c   | 654 +--
> > >  drivers/gpu/drm/i915/display/intel_dp.h   |   9 +
> > >  drivers/gpu/drm/i915/display/intel_dp_hdcp.c  | 743 ++
> > >  drivers/gpu/drm/i915/display/intel_dp_mst.c   |  19 +
> > >  drivers/gpu/drm/i915/display/intel_hdcp.c | 217 +++--
> > >  drivers/gpu/drm/i915/display/intel_hdcp.h |   2 +-
> > >  drivers/gpu/drm/i915/display/intel_hdmi.c |  25 +-
> > >  .../drm/selftests/test-drm_dp_mst_helper.c|  17 +
> > >  include/drm/drm_dp_helper.h   |   3 +
> > >  include/drm/drm_dp_mst_helper.h   |  44 ++
> > >  include/drm/drm_hdcp.h|   3 +
> > >  17 files changed, 1235 insertions(+), 726 deletions(-)
> > >  create mode 100644 drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> > >
> > > --
> > > Sean Paul, Software Engineer, Google / Chromium OS
> > >
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.IGT: success for HDCP minor refactoring (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: HDCP minor refactoring (rev2)
URL   : https://patchwork.freedesktop.org/series/77224/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8494_full -> Patchwork_17688_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ppgtt@blt-vs-render-ctxn:
- shard-glk:  [PASS][1] -> [FAIL][2] ([i915#1901])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-glk2/igt@gem_pp...@blt-vs-render-ctxn.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-glk7/igt@gem_pp...@blt-vs-render-ctxn.html

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [PASS][3] -> [DMESG-WARN][4] ([i915#1436] / 
[i915#716])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-apl7/igt@gen9_exec_pa...@allowed-all.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-apl7/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_suspend@forcewake:
- shard-kbl:  [PASS][5] -> [DMESG-WARN][6] ([i915#180]) +2 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl3/igt@i915_susp...@forcewake.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-kbl3/igt@i915_susp...@forcewake.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x64-random:
- shard-apl:  [PASS][7] -> [FAIL][8] ([i915#54])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-apl6/igt@kms_cursor_...@pipe-a-cursor-64x64-random.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-apl3/igt@kms_cursor_...@pipe-a-cursor-64x64-random.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x64-sliding:
- shard-kbl:  [PASS][9] -> [FAIL][10] ([i915#54] / [i915#93] / 
[i915#95])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl6/igt@kms_cursor_...@pipe-a-cursor-64x64-sliding.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-kbl1/igt@kms_cursor_...@pipe-a-cursor-64x64-sliding.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][11] -> [FAIL][12] ([i915#1188]) +1 similar 
issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl8/igt@kms_...@bpc-switch-dpms.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-skl4/igt@kms_...@bpc-switch-dpms.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
- shard-skl:  [PASS][13] -> [INCOMPLETE][14] ([i915#69])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl6/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-c.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-skl9/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-c.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-apl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180]) +2 
similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-apl2/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-apl4/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-a-planes.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:
- shard-skl:  [PASS][17] -> [FAIL][18] ([fdo#108145] / [i915#265])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl4/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-skl8/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_blt:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109441])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-iclb3/igt@kms_psr@psr2_sprite_blt.html

  * igt@perf@enable-disable:
- shard-skl:  [PASS][21] -> [FAIL][22] ([i915#1352])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl10/igt@p...@enable-disable.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-skl5/igt@p...@enable-disable.html

  
 Possible fixes 

  * {igt@gem_exec_schedule@pi-shared-iova@rcs0}:
- shard-tglb: [INCOMPLETE][23] ([i915#1193]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb2/igt@gem_exec_schedule@pi-shared-i...@rcs0.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17688/shard-tglb6/igt@gem_exec_schedule@pi-shared-i...@rcs0.html

  * {igt@kms_atomic_transition@plane-all-transition-nonblocking@pipe-b}:
- shard-kbl:  [DMESG-WARN][25] ([i915#78]) -> [PASS][26]
   [25]: 

[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/8] drm/i915: Move saturated workload detection back to the context (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/8] drm/i915: Move saturated workload detection 
back to the context (rev2)
URL   : https://patchwork.freedesktop.org/series/77344/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8494 -> Patchwork_17693


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@gem_exec_gttfill@basic:
- fi-apl-guc: [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-apl-guc/igt@gem_exec_gttf...@basic.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-apl-guc/igt@gem_exec_gttf...@basic.html

  * igt@i915_selftest@live@execlists:
- fi-cfl-8109u:   [PASS][3] -> [INCOMPLETE][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cfl-8109u/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-cfl-8109u/igt@i915_selftest@l...@execlists.html
- fi-icl-u2:  [PASS][5] -> [INCOMPLETE][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-u2/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-icl-u2/igt@i915_selftest@l...@execlists.html
- fi-tgl-y:   [PASS][7] -> [INCOMPLETE][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-tgl-y/igt@i915_selftest@l...@execlists.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-tgl-y/igt@i915_selftest@l...@execlists.html
- fi-icl-y:   [PASS][9] -> [INCOMPLETE][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-y/igt@i915_selftest@l...@execlists.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-icl-y/igt@i915_selftest@l...@execlists.html
- fi-icl-guc: [PASS][11] -> [INCOMPLETE][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-guc/igt@i915_selftest@l...@execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-icl-guc/igt@i915_selftest@l...@execlists.html

  
 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][13] -> [INCOMPLETE][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-tgl-u/igt@i915_selftest@l...@execlists.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-tgl-u/igt@i915_selftest@l...@execlists.html
- {fi-tgl-dsi}:   [PASS][15] -> [INCOMPLETE][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-tgl-dsi/igt@i915_selftest@l...@execlists.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-tgl-dsi/igt@i915_selftest@l...@execlists.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@client:
- fi-bwr-2160:[PASS][17] -> [INCOMPLETE][18] ([i915#489])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-bwr-2160/igt@i915_selftest@l...@client.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-bwr-2160/igt@i915_selftest@l...@client.html

  * igt@i915_selftest@live@execlists:
- fi-skl-lmem:[PASS][19] -> [INCOMPLETE][20] ([i915#1795])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-skl-lmem/igt@i915_selftest@l...@execlists.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-skl-lmem/igt@i915_selftest@l...@execlists.html

  
 Possible fixes 

  * igt@i915_selftest@live@execlists:
- fi-whl-u:   [INCOMPLETE][21] ([i915#656]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-whl-u/igt@i915_selftest@l...@execlists.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-whl-u/igt@i915_selftest@l...@execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [SKIP][23] ([fdo#109271]) -> [FAIL][24] ([i915#62] / 
[i915#95])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17693/fi-kbl-x1275/igt@i915_pm_...@module-reload.html


[Intel-gfx] [PATCH] drm/i915/selftests: Measure dispatch latency

2020-05-18 Thread Chris Wilson
A useful metric of the system's health is how fast we can tell the GPU
to do various actions, so measure our latency.

v2: Refactor all the instruction building into emitters.

Signed-off-by: Chris Wilson 
Cc: Mika Kuoppala 
Cc: Joonas Lahtinen 
---
 drivers/gpu/drm/i915/selftests/i915_request.c | 767 ++
 1 file changed, 767 insertions(+)

diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c 
b/drivers/gpu/drm/i915/selftests/i915_request.c
index 6014e8dfcbb1..3e8169c9b081 100644
--- a/drivers/gpu/drm/i915/selftests/i915_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_request.c
@@ -24,16 +24,20 @@
 
 #include 
 #include 
+#include 
 
 #include "gem/i915_gem_pm.h"
 #include "gem/selftests/mock_context.h"
 
+#include "gt/intel_engine_heartbeat.h"
 #include "gt/intel_engine_pm.h"
 #include "gt/intel_engine_user.h"
 #include "gt/intel_gt.h"
+#include "gt/intel_gt_requests.h"
 
 #include "i915_random.h"
 #include "i915_selftest.h"
+#include "igt_flush_test.h"
 #include "igt_live_test.h"
 #include "igt_spinner.h"
 #include "lib_sw_fence.h"
@@ -1524,6 +1528,768 @@ struct perf_series {
struct intel_context *ce[];
 };
 
+static int cmp_u32(const void *A, const void *B)
+{
+   const u32 *a = A, *b = B;
+
+   return *a - *b;
+}
+
+static u32 trifilter(u32 *a)
+{
+   u64 sum;
+
+#define TF_COUNT 5
+   sort(a, TF_COUNT, sizeof(*a), cmp_u32, NULL);
+
+   sum = mul_u32_u32(a[2], 2);
+   sum += a[1];
+   sum += a[3];
+
+   GEM_BUG_ON(sum > U32_MAX);
+   return sum;
+#define TF_BIAS 2
+}
+
+static u64 cycles_to_ns(struct intel_engine_cs *engine, u32 cycles)
+{
+   u64 ns = i915_cs_timestamp_ticks_to_ns(engine->i915, cycles);
+
+   return DIV_ROUND_CLOSEST(ns, 1 << TF_BIAS);
+}
+
+static u32 *emit_timestamp_store(u32 *cs, struct intel_context *ce, u32 offset)
+{
+   *cs++ = MI_STORE_REGISTER_MEM_GEN8 | MI_USE_GGTT;
+   *cs++ = i915_mmio_reg_offset(RING_TIMESTAMP((ce->engine->mmio_base)));
+   *cs++ = offset;
+   *cs++ = 0;
+
+   return cs;
+}
+
+static u32 *emit_store_dw(u32 *cs, u32 offset, u32 value)
+{
+   *cs++ = MI_STORE_DWORD_IMM_GEN4 | MI_USE_GGTT;
+   *cs++ = offset;
+   *cs++ = 0;
+   *cs++ = value;
+
+   return cs;
+}
+
+static u32 *emit_semaphore_poll(u32 *cs, u32 mode, u32 value, u32 offset)
+{
+   *cs++ = MI_SEMAPHORE_WAIT |
+   MI_SEMAPHORE_GLOBAL_GTT |
+   MI_SEMAPHORE_POLL |
+   mode;
+   *cs++ = value;
+   *cs++ = offset;
+   *cs++ = 0;
+
+   return cs;
+}
+
+static u32 *emit_semaphore_poll_until(u32 *cs, u32 offset, u32 value)
+{
+   return emit_semaphore_poll(cs, MI_SEMAPHORE_SAD_EQ_SDD, value, offset);
+}
+
+static void semaphore_set(u32 *sema, u32 value)
+{
+   WRITE_ONCE(*sema, value);
+   wmb(); /* flush the update to the cache, and beyond */
+}
+
+static u32 *hwsp_scratch(const struct intel_context *ce)
+{
+   return memset32(ce->engine->status_page.addr + 1000, 0, 21);
+}
+
+static u32 hwsp_offset(const struct intel_context *ce, u32 *dw)
+{
+   return (i915_ggtt_offset(ce->engine->status_page.vma) +
+   offset_in_page(dw));
+}
+
+static int measure_semaphore_response(struct intel_context *ce)
+{
+   u32 *sema = hwsp_scratch(ce);
+   const u32 offset = hwsp_offset(ce, sema);
+   u32 elapsed[TF_COUNT], cycles;
+   struct i915_request *rq;
+   u32 *cs;
+   int i;
+
+   /*
+* Measure how many cycles it takes for the HW to detect the change
+* in a semaphore value.
+*
+*A: read CS_TIMESTAMP from CPU
+*poke semaphore
+*B: read CS_TIMESTAMP on GPU
+*
+* Semaphore latency: B - A
+*/
+
+   semaphore_set(sema, -1);
+
+   rq = i915_request_create(ce);
+   if (IS_ERR(rq))
+   return PTR_ERR(rq);
+
+   cs = intel_ring_begin(rq, 4 + 8 * ARRAY_SIZE(elapsed));
+   if (IS_ERR(cs)) {
+   i915_request_add(rq);
+   return PTR_ERR(cs);
+   }
+
+   cs = emit_store_dw(cs, offset, 0);
+   for (i = 1; i <= ARRAY_SIZE(elapsed); i++) {
+   cs = emit_semaphore_poll_until(cs, offset, i);
+   cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));
+   }
+
+   intel_ring_advance(rq, cs);
+   i915_request_add(rq);
+
+   if (wait_for(READ_ONCE(*sema) == 0, 50)) {
+   intel_gt_set_wedged(ce->engine->gt);
+   return -EIO;
+   }
+
+   for (i = 1; i <= ARRAY_SIZE(elapsed); i++) {
+   preempt_disable();
+   cycles = ENGINE_READ_FW(ce->engine, RING_TIMESTAMP);
+   semaphore_set(sema, i);
+   preempt_enable();
+
+   if (wait_for(READ_ONCE(sema[i]), 50)) {
+   intel_gt_set_wedged(ce->engine->gt);
+   return -EIO;
+   }
+
+   elapsed[i - 1] = sema[i] - cycles;
+

[Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/selftests: Measure dispatch latency (rev7)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Measure dispatch latency (rev7)
URL   : https://patchwork.freedesktop.org/series/77308/
State : failure

== Summary ==

Applying: drm/i915/selftests: Measure dispatch latency
error: corrupt patch at line 23
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 drm/i915/selftests: Measure dispatch latency
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.SPARSE: warning for series starting with [1/8] drm/i915: Move saturated workload detection back to the context (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/8] drm/i915: Move saturated workload detection 
back to the context (rev2)
URL   : https://patchwork.freedesktop.org/series/77344/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.0
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_display.c:1222:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1225:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1228:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/display/intel_display.c:1231:22: error: Expected constant 
expression in case statement
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2274:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2275:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2276:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2277:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2278:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gem/i915_gem_context.c:2279:17: error: bad integer 
constant expression
+drivers/gpu/drm/i915/gt/intel_reset.c:1310:5: warning: context imbalance in 
'intel_gt_reset_trylock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/sysfs_engines.c:61:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:62:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gt/sysfs_engines.c:66:10: error: bad integer constant 
expression
+drivers/gpu/drm/i915/gvt/mmio.c:287:23: warning: memcpy with byte count of 
279040
+drivers/gpu/drm/i915/i915_perf.c:1425:15: warning: memset with byte count of 
16777216
+drivers/gpu/drm/i915/i915_perf.c:1479:15: warning: memset with byte count of 
16777216
+./include/linux/compiler.h:199:9: warning: context imbalance in 
'engines_sample' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen11_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read64' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_read8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write16' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write32' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 
'gen12_fwtable_write8' - different lock contexts for basic block
+./include/linux/spinlock.h:408:9: warning: context imbalance in 'gen6_read16' 
- different lock contexts for basic block

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/8] drm/i915: Move saturated workload detection back to the context (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/8] drm/i915: Move saturated workload detection 
back to the context (rev2)
URL   : https://patchwork.freedesktop.org/series/77344/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
ebeb414a1e8b drm/i915: Move saturated workload detection back to the context
-:22: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description 
(prefer a maximum 75 chars per line)
#22: 
References: 44d89409a12e ("drm/i915: Make the semaphore saturation mask global")

-:22: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ 
chars of sha1> ("")' - ie: 'commit 44d89409a12e ("drm/i915: Make 
the semaphore saturation mask global")'
#22: 
References: 44d89409a12e ("drm/i915: Make the semaphore saturation mask global")

total: 1 errors, 1 warnings, 0 checks, 68 lines checked
c342f572622c drm/i915/selftests: Add tests for timeslicing virtual engines
e52d02f21091 drm/i915/gt: Reuse the tasklet priority for virtual as their 
siblings
5738cd8b2a42 drm/i915/gt: Kick virtual siblings on timeslice out
003a59b1d9d0 drm/i915/gt: Incorporate the virtual engine into timeslicing
d9417a9630ea drm/i915/gt: Use virtual_engine during execlists_dequeue
040e56db9cd6 drm/i915/gt: Decouple inflight virtual engines
cb577ac5632e drm/i915/gt: Resubmit the virtual engine on schedule-out

___
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/dsb: Pre allocate and late cleanup of cmd buffer (rev9)

2020-05-18 Thread Patchwork
== Series Details ==

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

== Summary ==

CI Bug Log - changes from CI_DRM_8494 -> Patchwork_17692


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### CI changes ###

 Possible regressions 

  * boot:
- fi-icl-y:   [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-y/boot.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-icl-y/boot.html
- fi-icl-u2:  [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-u2/boot.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-icl-u2/boot.html
- fi-icl-dsi: [PASS][5] -> [FAIL][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-dsi/boot.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-icl-dsi/boot.html
- fi-icl-guc: [PASS][7] -> [FAIL][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-guc/boot.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-icl-guc/boot.html

  
 Suppressed 

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

  * boot:
- {fi-ehl-1}: [PASS][9] -> [FAIL][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-ehl-1/boot.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-ehl-1/boot.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@hugepages:
- fi-bwr-2160:[PASS][11] -> [INCOMPLETE][12] ([i915#489])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-bwr-2160/igt@i915_selftest@l...@hugepages.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-bwr-2160/igt@i915_selftest@l...@hugepages.html

  
 Possible fixes 

  * igt@i915_selftest@live@execlists:
- fi-whl-u:   [INCOMPLETE][13] ([i915#656]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-whl-u/igt@i915_selftest@l...@execlists.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17692/fi-whl-u/igt@i915_selftest@l...@execlists.html

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

  [i915#489]: https://gitlab.freedesktop.org/drm/intel/issues/489
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (51 -> 44)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8494 -> Patchwork_17692

  CI-20190529: 20190529
  CI_DRM_8494: 3d15348fde9b998e754da0b0655baf02b98e7f17 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5657: 649eae5c905a7460b44305800f95db83a6dd47cb @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17692: 694f96b3dba2b289b03894cad2c6eb35d7c63dfb @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

694f96b3dba2 drm/i915/dsb: Pre allocate and late cleanup of cmd buffer

== Logs ==

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


Re: [Intel-gfx] [PATCH 7/8] drm/i915/gt: Decouple inflight virtual engines

2020-05-18 Thread Chris Wilson
Quoting Chris Wilson (2020-05-18 16:40:15)
> Quoting Tvrtko Ursulin (2020-05-18 15:55:46)
> > 
> > On 18/05/2020 14:00, Chris Wilson wrote:
> > > Quoting Tvrtko Ursulin (2020-05-18 13:53:29)
> > >>
> > >> On 18/05/2020 09:14, Chris Wilson wrote:
> > >>> Once a virtual engine has been bound to a sibling, it will remain bound
> > >>> until we finally schedule out the last active request. We can not rebind
> > >>> the context to a new sibling while it is inflight as the context save
> > >>> will conflict, hence we wait. As we cannot then use any other sibliing
> > >>> while the context is inflight, only kick the bound sibling while it
> > >>> inflight and upon scheduling out the kick the rest (so that we can swap
> > >>> engines on timeslicing if the previously bound engine becomes
> > >>> oversubscribed).
> > >>>
> > >>> Signed-off-by: Chris Wilson 
> > >>> ---
> > >>>drivers/gpu/drm/i915/gt/intel_lrc.c | 30 
> > >>> +
> > >>>1 file changed, 13 insertions(+), 17 deletions(-)
> > >>>
> > >>> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
> > >>> b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > >>> index 7a5ac3375225..fe8f3518d6b8 100644
> > >>> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> > >>> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > >>> @@ -1398,9 +1398,8 @@ execlists_schedule_in(struct i915_request *rq, 
> > >>> int idx)
> > >>>static void kick_siblings(struct i915_request *rq, struct 
> > >>> intel_context *ce)
> > >>>{
> > >>>struct virtual_engine *ve = container_of(ce, typeof(*ve), 
> > >>> context);
> > >>> - struct i915_request *next = READ_ONCE(ve->request);
> > >>>
> > >>> - if (next == rq || (next && next->execution_mask & 
> > >>> ~rq->execution_mask))
> > >>> + if (READ_ONCE(ve->request))
> > >>>tasklet_hi_schedule(>base.execlists.tasklet);
> > >>>}
> > >>>
> > >>> @@ -1821,18 +1820,14 @@ first_virtual_engine(struct intel_engine_cs 
> > >>> *engine)
> > >>>rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
> > >>>struct i915_request *rq = READ_ONCE(ve->request);
> > >>>
> > >>> - if (!rq) { /* lazily cleanup after another engine handled 
> > >>> rq */
> > >>> + /* lazily cleanup after another engine handled rq */
> > >>> + if (!rq || !virtual_matches(ve, rq, engine)) {
> > >>>rb_erase_cached(rb, >virtual);
> > >>>RB_CLEAR_NODE(rb);
> > >>>rb = rb_first_cached(>virtual);
> > >>>continue;
> > >>>}
> > >>>
> > >>> - if (!virtual_matches(ve, rq, engine)) {
> > >>> - rb = rb_next(rb);
> > >>> - continue;
> > >>> - }
> > >>> -
> > >>>return ve;
> > >>>}
> > >>>
> > >>> @@ -5478,7 +5473,6 @@ static void virtual_submission_tasklet(unsigned 
> > >>> long data)
> > >>>if (unlikely(!mask))
> > >>>return;
> > >>>
> > >>> - local_irq_disable();
> > >>>for (n = 0; n < ve->num_siblings; n++) {
> > >>>struct intel_engine_cs *sibling = 
> > >>> READ_ONCE(ve->siblings[n]);
> > >>>struct ve_node * const node = >nodes[sibling->id];
> > >>> @@ -5488,20 +5482,19 @@ static void virtual_submission_tasklet(unsigned 
> > >>> long data)
> > >>>if (!READ_ONCE(ve->request))
> > >>>break; /* already handled by a sibling's tasklet 
> > >>> */
> > >>>
> > >>> + spin_lock_irq(>active.lock);
> > >>> +
> > >>>if (unlikely(!(mask & sibling->mask))) {
> > >>>if (!RB_EMPTY_NODE(>rb)) {
> > >>> - spin_lock(>active.lock);
> > >>>rb_erase_cached(>rb,
> > >>>
> > >>> >execlists.virtual);
> > >>>RB_CLEAR_NODE(>rb);
> > >>> - spin_unlock(>active.lock);
> > >>>}
> > >>> - continue;
> > >>> - }
> > >>>
> > >>> - spin_lock(>active.lock);
> > >>> + goto unlock_engine;
> > >>> + }
> > >>>
> > >>> - if (!RB_EMPTY_NODE(>rb)) {
> > >>> + if (unlikely(!RB_EMPTY_NODE(>rb))) {
> > >>>/*
> > >>> * Cheat and avoid rebalancing the tree if we can
> > >>> * reuse this node in situ.
> > >>> @@ -5541,9 +5534,12 @@ static void virtual_submission_tasklet(unsigned 
> > >>> long data)
> > >>>if (first && prio >= 
> > >>> sibling->execlists.queue_priority_hint)
> > >>>tasklet_hi_schedule(>execlists.tasklet);
> > >>>
> > >>> - spin_unlock(>active.lock);
> > >>> +unlock_engine:
> > >>> + 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/selftests: Refactor sibling selection

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Refactor sibling selection
URL   : https://patchwork.freedesktop.org/series/77352/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8494_full -> Patchwork_17687_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_workarounds@suspend-resume:
- shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180]) +1 similar 
issue
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl3/igt@gem_workarou...@suspend-resume.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-kbl3/igt@gem_workarou...@suspend-resume.html

  * igt@gen9_exec_parse@allowed-all:
- shard-skl:  [PASS][3] -> [DMESG-WARN][4] ([i915#1436] / 
[i915#716])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl5/igt@gen9_exec_pa...@allowed-all.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-skl8/igt@gen9_exec_pa...@allowed-all.html

  * igt@i915_selftest@live@execlists:
- shard-skl:  [PASS][5] -> [INCOMPLETE][6] ([i915#1795] / 
[i915#1874])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl7/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-skl9/igt@i915_selftest@l...@execlists.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][7] -> [FAIL][8] ([i915#1188]) +1 similar issue
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl8/igt@kms_...@bpc-switch-dpms.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-skl8/igt@kms_...@bpc-switch-dpms.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:
- shard-skl:  [PASS][9] -> [FAIL][10] ([fdo#108145] / [i915#265])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl4/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-skl7/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_blt:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109441])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-iclb3/igt@kms_psr@psr2_sprite_blt.html

  
 Possible fixes 

  * {igt@gem_exec_schedule@pi-shared-iova@rcs0}:
- shard-tglb: [INCOMPLETE][13] ([i915#1193]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb2/igt@gem_exec_schedule@pi-shared-i...@rcs0.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-tglb8/igt@gem_exec_schedule@pi-shared-i...@rcs0.html

  * {igt@kms_atomic_transition@plane-all-transition-nonblocking@pipe-b}:
- shard-kbl:  [DMESG-WARN][15] ([i915#78]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl2/igt@kms_atomic_transition@plane-all-transition-nonblock...@pipe-b.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-kbl3/igt@kms_atomic_transition@plane-all-transition-nonblock...@pipe-b.html

  * igt@kms_cursor_crc@pipe-b-cursor-128x42-offscreen:
- shard-tglb: [FAIL][17] ([i915#1897]) -> [PASS][18] +4 similar 
issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb1/igt@kms_cursor_...@pipe-b-cursor-128x42-offscreen.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-tglb2/igt@kms_cursor_...@pipe-b-cursor-128x42-offscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen:
- shard-skl:  [FAIL][19] ([i915#54]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl4/igt@kms_cursor_...@pipe-c-cursor-64x64-onscreen.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-skl7/igt@kms_cursor_...@pipe-c-cursor-64x64-onscreen.html

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [SKIP][21] ([fdo#109349]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb4/igt@kms_dp_...@basic-dsc-enable-edp.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-iclb2/igt@kms_dp_...@basic-dsc-enable-edp.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1}:
- shard-skl:  [FAIL][23] ([i915#79]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl2/igt@kms_flip@flip-vs-expired-vblank-interrupti...@b-edp1.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17687/shard-skl6/igt@kms_flip@flip-vs-expired-vblank-interrupti...@b-edp1.html

  * 

Re: [Intel-gfx] [PATCH 7/8] drm/i915/gt: Decouple inflight virtual engines

2020-05-18 Thread Chris Wilson
Quoting Tvrtko Ursulin (2020-05-18 15:55:46)
> 
> On 18/05/2020 14:00, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2020-05-18 13:53:29)
> >>
> >> On 18/05/2020 09:14, Chris Wilson wrote:
> >>> Once a virtual engine has been bound to a sibling, it will remain bound
> >>> until we finally schedule out the last active request. We can not rebind
> >>> the context to a new sibling while it is inflight as the context save
> >>> will conflict, hence we wait. As we cannot then use any other sibliing
> >>> while the context is inflight, only kick the bound sibling while it
> >>> inflight and upon scheduling out the kick the rest (so that we can swap
> >>> engines on timeslicing if the previously bound engine becomes
> >>> oversubscribed).
> >>>
> >>> Signed-off-by: Chris Wilson 
> >>> ---
> >>>drivers/gpu/drm/i915/gt/intel_lrc.c | 30 +
> >>>1 file changed, 13 insertions(+), 17 deletions(-)
> >>>
> >>> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
> >>> b/drivers/gpu/drm/i915/gt/intel_lrc.c
> >>> index 7a5ac3375225..fe8f3518d6b8 100644
> >>> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> >>> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> >>> @@ -1398,9 +1398,8 @@ execlists_schedule_in(struct i915_request *rq, int 
> >>> idx)
> >>>static void kick_siblings(struct i915_request *rq, struct 
> >>> intel_context *ce)
> >>>{
> >>>struct virtual_engine *ve = container_of(ce, typeof(*ve), context);
> >>> - struct i915_request *next = READ_ONCE(ve->request);
> >>>
> >>> - if (next == rq || (next && next->execution_mask & 
> >>> ~rq->execution_mask))
> >>> + if (READ_ONCE(ve->request))
> >>>tasklet_hi_schedule(>base.execlists.tasklet);
> >>>}
> >>>
> >>> @@ -1821,18 +1820,14 @@ first_virtual_engine(struct intel_engine_cs 
> >>> *engine)
> >>>rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
> >>>struct i915_request *rq = READ_ONCE(ve->request);
> >>>
> >>> - if (!rq) { /* lazily cleanup after another engine handled 
> >>> rq */
> >>> + /* lazily cleanup after another engine handled rq */
> >>> + if (!rq || !virtual_matches(ve, rq, engine)) {
> >>>rb_erase_cached(rb, >virtual);
> >>>RB_CLEAR_NODE(rb);
> >>>rb = rb_first_cached(>virtual);
> >>>continue;
> >>>}
> >>>
> >>> - if (!virtual_matches(ve, rq, engine)) {
> >>> - rb = rb_next(rb);
> >>> - continue;
> >>> - }
> >>> -
> >>>return ve;
> >>>}
> >>>
> >>> @@ -5478,7 +5473,6 @@ static void virtual_submission_tasklet(unsigned 
> >>> long data)
> >>>if (unlikely(!mask))
> >>>return;
> >>>
> >>> - local_irq_disable();
> >>>for (n = 0; n < ve->num_siblings; n++) {
> >>>struct intel_engine_cs *sibling = 
> >>> READ_ONCE(ve->siblings[n]);
> >>>struct ve_node * const node = >nodes[sibling->id];
> >>> @@ -5488,20 +5482,19 @@ static void virtual_submission_tasklet(unsigned 
> >>> long data)
> >>>if (!READ_ONCE(ve->request))
> >>>break; /* already handled by a sibling's tasklet */
> >>>
> >>> + spin_lock_irq(>active.lock);
> >>> +
> >>>if (unlikely(!(mask & sibling->mask))) {
> >>>if (!RB_EMPTY_NODE(>rb)) {
> >>> - spin_lock(>active.lock);
> >>>rb_erase_cached(>rb,
> >>>
> >>> >execlists.virtual);
> >>>RB_CLEAR_NODE(>rb);
> >>> - spin_unlock(>active.lock);
> >>>}
> >>> - continue;
> >>> - }
> >>>
> >>> - spin_lock(>active.lock);
> >>> + goto unlock_engine;
> >>> + }
> >>>
> >>> - if (!RB_EMPTY_NODE(>rb)) {
> >>> + if (unlikely(!RB_EMPTY_NODE(>rb))) {
> >>>/*
> >>> * Cheat and avoid rebalancing the tree if we can
> >>> * reuse this node in situ.
> >>> @@ -5541,9 +5534,12 @@ static void virtual_submission_tasklet(unsigned 
> >>> long data)
> >>>if (first && prio >= 
> >>> sibling->execlists.queue_priority_hint)
> >>>tasklet_hi_schedule(>execlists.tasklet);
> >>>
> >>> - spin_unlock(>active.lock);
> >>> +unlock_engine:
> >>> + spin_unlock_irq(>active.lock);
> >>> +
> >>> + if (intel_context_inflight(>context))
> >>> + break;
> >>
> >> So virtual request may not be added to all siblings any longer. Will it
> >> still be able to schedule it on any if time slicing kicks in under these
> >> 

[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/4] Revert "drm/i915: Clean up dbuf debugs during .atomic_check()"

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] Revert "drm/i915: Clean up dbuf debugs 
during .atomic_check()"
URL   : https://patchwork.freedesktop.org/series/77358/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8494 -> Patchwork_17691


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@hangcheck:
- fi-cml-s:   [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cml-s/igt@i915_selftest@l...@hangcheck.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17691/fi-cml-s/igt@i915_selftest@l...@hangcheck.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-tgl-y:   [PASS][3] -> [INCOMPLETE][4] ([i915#1803])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-tgl-y/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17691/fi-tgl-y/igt@i915_selftest@l...@execlists.html
- fi-skl-6700k2:  [PASS][5] -> [INCOMPLETE][6] ([i915#1795] / 
[i915#656])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-skl-6700k2/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17691/fi-skl-6700k2/igt@i915_selftest@l...@execlists.html

  
 Possible fixes 

  * igt@i915_selftest@live@execlists:
- fi-whl-u:   [INCOMPLETE][7] ([i915#656]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-whl-u/igt@i915_selftest@l...@execlists.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17691/fi-whl-u/igt@i915_selftest@l...@execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [SKIP][9] ([fdo#109271]) -> [FAIL][10] ([i915#62] / 
[i915#95])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17691/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1795]: https://gitlab.freedesktop.org/drm/intel/issues/1795
  [i915#1803]: https://gitlab.freedesktop.org/drm/intel/issues/1803
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (51 -> 44)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8494 -> Patchwork_17691

  CI-20190529: 20190529
  CI_DRM_8494: 3d15348fde9b998e754da0b0655baf02b98e7f17 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5657: 649eae5c905a7460b44305800f95db83a6dd47cb @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17691: 0ede4a7df84889e374e588f8cf93260914a21975 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

0ede4a7df848 Revert "drm/i915: Introduce proper dbuf state"
77a3d0811ea1 Revert "drm/i915: Nuke skl_ddb_get_hw_state()"
3358451aea83 Revert "drm/i915: Move the dbuf pre/post plane update"
4de007ca5a0f Revert "drm/i915: Clean up dbuf debugs during .atomic_check()"

== Logs ==

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


Re: [Intel-gfx] [PATCH v2] drm/i915/selftests: Measure dispatch latency

2020-05-18 Thread Chris Wilson
Quoting Chris Wilson (2020-05-18 16:14:43)
> Quoting Mika Kuoppala (2020-05-18 16:07:47)
> > Chris Wilson  writes:
> > > + cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));
> > 
> > Is the dual writes here so that when you kick the semaphore, you get the
> > latest no matter which side you were on?
> 
> We wait on the first write in the CPU before releasing the semaphore. It
> was easier to copy the code, but now it can be an emit_store_dw() to
> make it clearer that we are not using it as timestamp -- and avoid the
> infinite wait if we hit CS_TIMESTAMP == 0.

diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c 
b/drivers/gpu/drm/i915/selftests/i915_request.c
index c6dff5145a3c..887171ff21a0 100644
--- a/drivers/gpu/drm/i915/selftests/i915_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_request.c
@@ -1779,7 +1779,7 @@ static int measure_busy_dispatch(struct intel_context *ce)
return PTR_ERR(cs);
}

-   cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));
+   cs = emit_store_dw(cs, offset + i * sizeof(u32), -1);
cs = emit_semaphore_poll_until(cs, offset, i);
cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));

@@ -1802,8 +1802,10 @@ static int measure_busy_dispatch(struct intel_context 
*ce)
wait_for(READ_ONCE(sema[i - 1]), 500);
semaphore_set(sema, i - 1);

-   for (i = 1; i <= COUNT; i++)
+   for (i = 1; i <= COUNT; i++) {
+   GEM_BUG_ON(sema[i] == -1);
elapsed[i - 1] = (sema[i] - elapsed[i]) << COUNT;
+   }
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/selftests: Measure dispatch latency

2020-05-18 Thread Chris Wilson
Quoting Mika Kuoppala (2020-05-18 16:07:47)
> Chris Wilson  writes:
> > + cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));
> 
> Is the dual writes here so that when you kick the semaphore, you get the
> latest no matter which side you were on?

We wait on the first write in the CPU before releasing the semaphore. It
was easier to copy the code, but now it can be an emit_store_dw() to
make it clearer that we are not using it as timestamp -- and avoid the
infinite wait if we hit CS_TIMESTAMP == 0.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/selftests: Measure dispatch latency (rev5)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Measure dispatch latency (rev5)
URL   : https://patchwork.freedesktop.org/series/77308/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8494_full -> Patchwork_17686_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gen9_exec_parse@allowed-all:
- shard-apl:  [PASS][1] -> [DMESG-WARN][2] ([i915#1436] / 
[i915#716])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-apl7/igt@gen9_exec_pa...@allowed-all.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-apl6/igt@gen9_exec_pa...@allowed-all.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [PASS][3] -> [DMESG-WARN][4] ([i915#180])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl3/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-kbl2/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][5] -> [FAIL][6] ([i915#1188]) +1 similar issue
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl8/igt@kms_...@bpc-switch-dpms.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-skl3/igt@kms_...@bpc-switch-dpms.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:
- shard-skl:  [PASS][7] -> [FAIL][8] ([fdo#108145] / [i915#265])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl4/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-skl6/igt@kms_plane_alpha_bl...@pipe-b-constant-alpha-min.html

  * igt@kms_psr@no_drrs:
- shard-iclb: [PASS][9] -> [FAIL][10] ([i915#173])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb8/igt@kms_psr@no_drrs.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-iclb1/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_sprite_blt:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109441])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-iclb5/igt@kms_psr@psr2_sprite_blt.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-skl:  [PASS][13] -> [INCOMPLETE][14] ([i915#69])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl5/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-skl3/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html

  
 Possible fixes 

  * {igt@gem_exec_schedule@pi-shared-iova@rcs0}:
- shard-tglb: [INCOMPLETE][15] ([i915#1193]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb2/igt@gem_exec_schedule@pi-shared-i...@rcs0.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-tglb2/igt@gem_exec_schedule@pi-shared-i...@rcs0.html

  * {igt@kms_atomic_transition@plane-all-transition-nonblocking@pipe-b}:
- shard-kbl:  [DMESG-WARN][17] ([i915#78]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-kbl2/igt@kms_atomic_transition@plane-all-transition-nonblock...@pipe-b.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-kbl6/igt@kms_atomic_transition@plane-all-transition-nonblock...@pipe-b.html

  * igt@kms_cursor_crc@pipe-b-cursor-128x42-offscreen:
- shard-tglb: [FAIL][19] ([i915#1897]) -> [PASS][20] +4 similar 
issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-tglb1/igt@kms_cursor_...@pipe-b-cursor-128x42-offscreen.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-tglb5/igt@kms_cursor_...@pipe-b-cursor-128x42-offscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen:
- shard-skl:  [FAIL][21] ([i915#54]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl4/igt@kms_cursor_...@pipe-c-cursor-64x64-onscreen.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-skl6/igt@kms_cursor_...@pipe-c-cursor-64x64-onscreen.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1}:
- shard-skl:  [FAIL][23] ([i915#79]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/shard-skl2/igt@kms_flip@flip-vs-expired-vblank-interrupti...@b-edp1.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17686/shard-skl7/igt@kms_flip@flip-vs-expired-vblank-interrupti...@b-edp1.html

  * {igt@kms_flip@flip-vs-suspend-interruptible@a-dp1}:
 

Re: [Intel-gfx] [PATCH v2] drm/i915/selftests: Measure dispatch latency

2020-05-18 Thread Mika Kuoppala
Chris Wilson  writes:

> A useful metric of the system's health is how fast we can tell the GPU
> to do various actions, so measure our latency.
>
> v2: Refactor all the instruction building into emitters.
>
> Signed-off-by: Chris Wilson 
> Cc: Mika Kuoppala 
> Cc: Joonas Lahtinen 
> ---
>  drivers/gpu/drm/i915/selftests/i915_request.c | 764 ++
>  1 file changed, 764 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c 
> b/drivers/gpu/drm/i915/selftests/i915_request.c
> index 6014e8dfcbb1..c6dff5145a3c 100644
> --- a/drivers/gpu/drm/i915/selftests/i915_request.c
> +++ b/drivers/gpu/drm/i915/selftests/i915_request.c
> @@ -24,16 +24,20 @@
>  
>  #include 
>  #include 
> +#include 
>  
>  #include "gem/i915_gem_pm.h"
>  #include "gem/selftests/mock_context.h"
>  
> +#include "gt/intel_engine_heartbeat.h"
>  #include "gt/intel_engine_pm.h"
>  #include "gt/intel_engine_user.h"
>  #include "gt/intel_gt.h"
> +#include "gt/intel_gt_requests.h"
>  
>  #include "i915_random.h"
>  #include "i915_selftest.h"
> +#include "igt_flush_test.h"
>  #include "igt_live_test.h"
>  #include "igt_spinner.h"
>  #include "lib_sw_fence.h"
> @@ -1524,6 +1528,765 @@ struct perf_series {
>   struct intel_context *ce[];
>  };
>  
> +#define COUNT 5
> +
> +static int cmp_u32(const void *A, const void *B)
> +{
> + const u32 *a = A, *b = B;
> +
> + return *a - *b;
> +}
> +
> +static u32 trifilter(u32 *a)
> +{
> + u64 sum;
> +
> + sort(a, COUNT, sizeof(*a), cmp_u32, NULL);
> +
> + sum = mul_u32_u32(a[2], 2);
> + sum += a[1];
> + sum += a[3];
> +
> + return (sum + 2) >> 2;
> +}
> +
> +static u64 cycles_to_ns(struct intel_engine_cs *engine, u32 cycles)
> +{
> + u64 ns = i915_cs_timestamp_ticks_to_ns(engine->i915, cycles);
> +
> + return DIV_ROUND_CLOSEST(ns, 1 << COUNT);
> +}
> +
> +static u32 *emit_timestamp_store(u32 *cs, struct intel_context *ce, u32 
> offset)
> +{
> + *cs++ = MI_STORE_REGISTER_MEM_GEN8 | MI_USE_GGTT;
> + *cs++ = i915_mmio_reg_offset(RING_TIMESTAMP((ce->engine->mmio_base)));
> + *cs++ = offset;
> + *cs++ = 0;
> +
> + return cs;
> +}
> +
> +static u32 *emit_store_dw(u32 *cs, u32 offset, u32 value)
> +{
> + *cs++ = MI_STORE_DWORD_IMM_GEN4 | MI_USE_GGTT;
> + *cs++ = offset;
> + *cs++ = 0;
> + *cs++ = value;
> +
> + return cs;
> +}
> +
> +static u32 *emit_semaphore_poll(u32 *cs, u32 mode, u32 value, u32 offset)
> +{
> + *cs++ = MI_SEMAPHORE_WAIT |
> + MI_SEMAPHORE_GLOBAL_GTT |
> + MI_SEMAPHORE_POLL |
> + mode;
> + *cs++ = value;
> + *cs++ = offset;
> + *cs++ = 0;
> +
> + return cs;
> +}
> +
> +static u32 *emit_semaphore_poll_until(u32 *cs, u32 offset, u32 value)
> +{
> + return emit_semaphore_poll(cs, MI_SEMAPHORE_SAD_EQ_SDD, value, offset);
> +}
> +
> +static void semaphore_set(u32 *sema, u32 value)
> +{
> + WRITE_ONCE(*sema, value);
> + wmb(); /* flush the update to the cache, and beyond */
> +}
> +
> +static u32 *hwsp_scratch(const struct intel_context *ce)
> +{
> + return memset32(ce->engine->status_page.addr + 1000, 0, 21);
> +}
> +
> +static u32 hwsp_offset(const struct intel_context *ce, u32 *dw)
> +{
> + return (i915_ggtt_offset(ce->engine->status_page.vma) +
> + offset_in_page(dw));
> +}
> +
> +static int measure_semaphore_response(struct intel_context *ce)
> +{
> + u32 *sema = hwsp_scratch(ce);
> + const u32 offset = hwsp_offset(ce, sema);
> + u32 elapsed[COUNT], cycles;
> + struct i915_request *rq;
> + u32 *cs;
> + int i;
> +
> + /*
> +  * Measure how many cycles it takes for the HW to detect the change
> +  * in a semaphore value.
> +  *
> +  *A: read CS_TIMESTAMP from CPU
> +  *poke semaphore
> +  *B: read CS_TIMESTAMP on GPU
> +  *
> +  * Semaphore latency: B - A
> +  */
> +
> + semaphore_set(sema, -1);
> +
> + rq = i915_request_create(ce);
> + if (IS_ERR(rq))
> + return PTR_ERR(rq);
> +
> + cs = intel_ring_begin(rq, 4 + 8 * ARRAY_SIZE(elapsed));
> + if (IS_ERR(cs)) {
> + i915_request_add(rq);
> + return PTR_ERR(cs);
> + }
> +
> + cs = emit_store_dw(cs, offset, 0);
> + for (i = 1; i <= ARRAY_SIZE(elapsed); i++) {
> + cs = emit_semaphore_poll_until(cs, offset, i);
> + cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));
> + }
> +
> + intel_ring_advance(rq, cs);
> + i915_request_add(rq);
> +
> + if (wait_for(READ_ONCE(*sema) == 0, 50)) {
> + intel_gt_set_wedged(ce->engine->gt);
> + return -EIO;
> + }
> +
> + for (i = 1; i <= ARRAY_SIZE(elapsed); i++) {
> + preempt_disable();
> + cycles = ENGINE_READ_FW(ce->engine, RING_TIMESTAMP);
> + semaphore_set(sema, i);
> + preempt_enable();
> +
> + if (wait_for(READ_ONCE(sema[i]), 50)) 

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] Revert "drm/i915: Clean up dbuf debugs during .atomic_check()"

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] Revert "drm/i915: Clean up dbuf debugs 
during .atomic_check()"
URL   : https://patchwork.freedesktop.org/series/77358/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
4de007ca5a0f Revert "drm/i915: Clean up dbuf debugs during .atomic_check()"
3358451aea83 Revert "drm/i915: Move the dbuf pre/post plane update"
77a3d0811ea1 Revert "drm/i915: Nuke skl_ddb_get_hw_state()"
0ede4a7df848 Revert "drm/i915: Introduce proper dbuf state"
-:174: CHECK:MULTIPLE_ASSIGNMENTS: multiple assignments should be avoided
#174: FILE: drivers/gpu/drm/i915/display/intel_display.c:18260:
+   dev_priv->active_pipes = cdclk_state->active_pipes = active_pipes;

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

___
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: Fix dbuf slice mask when turning off all the pipes (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: drm/i915: Fix dbuf slice mask when turning off all the pipes (rev2)
URL   : https://patchwork.freedesktop.org/series/77322/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8494 -> Patchwork_17690


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@active:
- fi-bsw-nick:[PASS][1] -> [DMESG-FAIL][2] ([i915#541])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-bsw-nick/igt@i915_selftest@l...@active.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/fi-bsw-nick/igt@i915_selftest@l...@active.html

  * igt@i915_selftest@live@execlists:
- fi-kbl-r:   [PASS][3] -> [INCOMPLETE][4] ([i915#656])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-kbl-r/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/fi-kbl-r/igt@i915_selftest@l...@execlists.html

  
 Possible fixes 

  * igt@i915_selftest@live@execlists:
- fi-whl-u:   [INCOMPLETE][5] ([i915#656]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-whl-u/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17690/fi-whl-u/igt@i915_selftest@l...@execlists.html

  
  [i915#541]: https://gitlab.freedesktop.org/drm/intel/issues/541
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (51 -> 43)
--

  Missing(8): fi-cml-u2 fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_8494 -> Patchwork_17690

  CI-20190529: 20190529
  CI_DRM_8494: 3d15348fde9b998e754da0b0655baf02b98e7f17 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5657: 649eae5c905a7460b44305800f95db83a6dd47cb @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17690: fed553859a0fa75b2dac63ac5738561c2094e1ed @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

fed553859a0f drm/i915: Fix dbuf slice mask when turning off all the pipes

== Logs ==

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


Re: [Intel-gfx] [PATCH 7/8] drm/i915/gt: Decouple inflight virtual engines

2020-05-18 Thread Tvrtko Ursulin



On 18/05/2020 14:00, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2020-05-18 13:53:29)


On 18/05/2020 09:14, Chris Wilson wrote:

Once a virtual engine has been bound to a sibling, it will remain bound
until we finally schedule out the last active request. We can not rebind
the context to a new sibling while it is inflight as the context save
will conflict, hence we wait. As we cannot then use any other sibliing
while the context is inflight, only kick the bound sibling while it
inflight and upon scheduling out the kick the rest (so that we can swap
engines on timeslicing if the previously bound engine becomes
oversubscribed).

Signed-off-by: Chris Wilson 
---
   drivers/gpu/drm/i915/gt/intel_lrc.c | 30 +
   1 file changed, 13 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 7a5ac3375225..fe8f3518d6b8 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1398,9 +1398,8 @@ execlists_schedule_in(struct i915_request *rq, int idx)
   static void kick_siblings(struct i915_request *rq, struct intel_context *ce)
   {
   struct virtual_engine *ve = container_of(ce, typeof(*ve), context);
- struct i915_request *next = READ_ONCE(ve->request);
   
- if (next == rq || (next && next->execution_mask & ~rq->execution_mask))

+ if (READ_ONCE(ve->request))
   tasklet_hi_schedule(>base.execlists.tasklet);
   }
   
@@ -1821,18 +1820,14 @@ first_virtual_engine(struct intel_engine_cs *engine)

   rb_entry(rb, typeof(*ve), nodes[engine->id].rb);
   struct i915_request *rq = READ_ONCE(ve->request);
   
- if (!rq) { /* lazily cleanup after another engine handled rq */

+ /* lazily cleanup after another engine handled rq */
+ if (!rq || !virtual_matches(ve, rq, engine)) {
   rb_erase_cached(rb, >virtual);
   RB_CLEAR_NODE(rb);
   rb = rb_first_cached(>virtual);
   continue;
   }
   
- if (!virtual_matches(ve, rq, engine)) {

- rb = rb_next(rb);
- continue;
- }
-
   return ve;
   }
   
@@ -5478,7 +5473,6 @@ static void virtual_submission_tasklet(unsigned long data)

   if (unlikely(!mask))
   return;
   
- local_irq_disable();

   for (n = 0; n < ve->num_siblings; n++) {
   struct intel_engine_cs *sibling = READ_ONCE(ve->siblings[n]);
   struct ve_node * const node = >nodes[sibling->id];
@@ -5488,20 +5482,19 @@ static void virtual_submission_tasklet(unsigned long 
data)
   if (!READ_ONCE(ve->request))
   break; /* already handled by a sibling's tasklet */
   
+ spin_lock_irq(>active.lock);

+
   if (unlikely(!(mask & sibling->mask))) {
   if (!RB_EMPTY_NODE(>rb)) {
- spin_lock(>active.lock);
   rb_erase_cached(>rb,
   >execlists.virtual);
   RB_CLEAR_NODE(>rb);
- spin_unlock(>active.lock);
   }
- continue;
- }
   
- spin_lock(>active.lock);

+ goto unlock_engine;
+ }
   
- if (!RB_EMPTY_NODE(>rb)) {

+ if (unlikely(!RB_EMPTY_NODE(>rb))) {
   /*
* Cheat and avoid rebalancing the tree if we can
* reuse this node in situ.
@@ -5541,9 +5534,12 @@ static void virtual_submission_tasklet(unsigned long 
data)
   if (first && prio >= sibling->execlists.queue_priority_hint)
   tasklet_hi_schedule(>execlists.tasklet);
   
- spin_unlock(>active.lock);

+unlock_engine:
+ spin_unlock_irq(>active.lock);
+
+ if (intel_context_inflight(>context))
+ break;


So virtual request may not be added to all siblings any longer. Will it
still be able to schedule it on any if time slicing kicks in under these
conditions?


Yes.
  

This is equivalent to the hunk in first_virtual_engine which also
removes it from all other siblings.

I guess it's inline with what the commit messages says - that new
sibling will be picked upon time slicing. I just don't quite see the
path which would do it. Only path which shuffles the siblings array
around is in dequeue, and dequeue on other that the engine which first
picked it will not happen any more. I must be missing something..


It's all on the execlists_schedule_out. During timeslicing we call
unwind_incomplete_requests which moves the requests back to the priotree
(and in this patch back to the virtual engine).

But... We cannot use the virtual request on any 

Re: [Intel-gfx] [PATCH 3/4] Revert "drm/i915: Nuke skl_ddb_get_hw_state()"

2020-05-18 Thread Lisovskiy, Stanislav
On Mon, May 18, 2020 at 03:23:02PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Dbuf slice tracking busted across runtime PM. Back to the
> drawing board.
> 
> This reverts commit 0cde0e0ff5f5ebd27507069250728c763c14ac81.
> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 7 +++
>  drivers/gpu/drm/i915/intel_pm.h | 1 +
>  2 files changed, 8 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index a92d57d9b759..cb57786fdc9f 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4315,6 +4315,12 @@ void skl_pipe_ddb_get_hw_state(struct intel_crtc *crtc,
>   intel_display_power_put(dev_priv, power_domain, wakeref);
>  }
>  
> +void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv)
> +{
> + dev_priv->dbuf.enabled_slices =
> + intel_enabled_dbuf_slices_mask(dev_priv);
> +}
> +

Reviewed-by: Stanislav Lisovskiy 

>  /*
>   * Determines the downscale amount of a plane for the purposes of watermark 
> calculations.
>   * The bspec defines downscale amount as:
> @@ -6175,6 +6181,7 @@ void skl_wm_get_hw_state(struct drm_i915_private 
> *dev_priv)
>   struct intel_crtc *crtc;
>   struct intel_crtc_state *crtc_state;
>  
> + skl_ddb_get_hw_state(dev_priv);
>   for_each_intel_crtc(_priv->drm, crtc) {
>   crtc_state = to_intel_crtc_state(crtc->base.state);
>  
> diff --git a/drivers/gpu/drm/i915/intel_pm.h b/drivers/gpu/drm/i915/intel_pm.h
> index 3fcc9b6e2cbf..9f75ac4c2bd1 100644
> --- a/drivers/gpu/drm/i915/intel_pm.h
> +++ b/drivers/gpu/drm/i915/intel_pm.h
> @@ -39,6 +39,7 @@ u8 intel_enabled_dbuf_slices_mask(struct drm_i915_private 
> *dev_priv);
>  void skl_pipe_ddb_get_hw_state(struct intel_crtc *crtc,
>  struct skl_ddb_entry *ddb_y,
>  struct skl_ddb_entry *ddb_uv);
> +void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv);
>  void skl_pipe_wm_get_hw_state(struct intel_crtc *crtc,
> struct skl_pipe_wm *out);
>  void g4x_wm_sanitize(struct drm_i915_private *dev_priv);
> -- 
> 2.26.2
> 
> ___
> 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] [PATCH 2/4] Revert "drm/i915: Move the dbuf pre/post plane update"

2020-05-18 Thread Lisovskiy, Stanislav
On Mon, May 18, 2020 at 03:23:01PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Dbuf slice tracking busted across runtime PM. Back to the
> drawing board.
> 
> This reverts commit c7c0e7ebe4d9963573f81399374e4e95f37fd8e3.
> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 41 +++-
>  drivers/gpu/drm/i915/intel_pm.c  | 37 --
>  drivers/gpu/drm/i915/intel_pm.h  |  2 -
>  3 files changed, 39 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index e1407dc28ddc..49577f19ff9c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -15207,6 +15207,43 @@ static void intel_commit_modeset_enables(struct 
> intel_atomic_state *state)
>   }
>  }
>  

Reviewed-by: Stanislav Lisovskiy 

> +static void icl_dbuf_slice_pre_update(struct intel_atomic_state *state)
> +{
> + struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> + const struct intel_dbuf_state *new_dbuf_state =
> + intel_atomic_get_new_dbuf_state(state);
> + const struct intel_dbuf_state *old_dbuf_state =
> + intel_atomic_get_old_dbuf_state(state);
> +
> + if (!new_dbuf_state ||
> + new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> + return;
> +
> + WARN_ON(!new_dbuf_state->base.changed);
> +
> + gen9_dbuf_slices_update(dev_priv,
> + old_dbuf_state->enabled_slices |
> + new_dbuf_state->enabled_slices);
> +}
> +
> +static void icl_dbuf_slice_post_update(struct intel_atomic_state *state)
> +{
> + struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> + const struct intel_dbuf_state *new_dbuf_state =
> + intel_atomic_get_new_dbuf_state(state);
> + const struct intel_dbuf_state *old_dbuf_state =
> + intel_atomic_get_old_dbuf_state(state);
> +
> + if (!new_dbuf_state ||
> + new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> + return;
> +
> + WARN_ON(!new_dbuf_state->base.changed);
> +
> + gen9_dbuf_slices_update(dev_priv,
> + new_dbuf_state->enabled_slices);
> +}
> +
>  static void skl_commit_modeset_enables(struct intel_atomic_state *state)
>  {
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> @@ -15447,7 +15484,7 @@ static void intel_atomic_commit_tail(struct 
> intel_atomic_state *state)
>   if (state->modeset)
>   intel_encoders_update_prepare(state);
>  
> - intel_dbuf_pre_plane_update(state);
> + 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);
> @@ -15502,7 +15539,7 @@ static void intel_atomic_commit_tail(struct 
> intel_atomic_state *state)
>   dev_priv->display.optimize_watermarks(state, crtc);
>   }
>  
> - intel_dbuf_post_plane_update(state);
> + 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);
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index d40d22eb65da..a92d57d9b759 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -7806,40 +7806,3 @@ int intel_dbuf_init(struct drm_i915_private *dev_priv)
>  
>   return 0;
>  }
> -
> -void intel_dbuf_pre_plane_update(struct intel_atomic_state *state)
> -{
> - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - const struct intel_dbuf_state *new_dbuf_state =
> - intel_atomic_get_new_dbuf_state(state);
> - const struct intel_dbuf_state *old_dbuf_state =
> - intel_atomic_get_old_dbuf_state(state);
> -
> - if (!new_dbuf_state ||
> - new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> - return;
> -
> - WARN_ON(!new_dbuf_state->base.changed);
> -
> - gen9_dbuf_slices_update(dev_priv,
> - old_dbuf_state->enabled_slices |
> - new_dbuf_state->enabled_slices);
> -}
> -
> -void intel_dbuf_post_plane_update(struct intel_atomic_state *state)
> -{
> - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - const struct intel_dbuf_state *new_dbuf_state =
> - intel_atomic_get_new_dbuf_state(state);
> - const struct intel_dbuf_state *old_dbuf_state =
> - intel_atomic_get_old_dbuf_state(state);
> -
> - if (!new_dbuf_state ||
> - new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> - return;
> -
> - WARN_ON(!new_dbuf_state->base.changed);
> 

[Intel-gfx] [PATCH v2] drm/i915/selftests: Measure dispatch latency

2020-05-18 Thread Chris Wilson
A useful metric of the system's health is how fast we can tell the GPU
to do various actions, so measure our latency.

v2: Refactor all the instruction building into emitters.

Signed-off-by: Chris Wilson 
Cc: Mika Kuoppala 
Cc: Joonas Lahtinen 
---
 drivers/gpu/drm/i915/selftests/i915_request.c | 764 ++
 1 file changed, 764 insertions(+)

diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c 
b/drivers/gpu/drm/i915/selftests/i915_request.c
index 6014e8dfcbb1..c6dff5145a3c 100644
--- a/drivers/gpu/drm/i915/selftests/i915_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_request.c
@@ -24,16 +24,20 @@
 
 #include 
 #include 
+#include 
 
 #include "gem/i915_gem_pm.h"
 #include "gem/selftests/mock_context.h"
 
+#include "gt/intel_engine_heartbeat.h"
 #include "gt/intel_engine_pm.h"
 #include "gt/intel_engine_user.h"
 #include "gt/intel_gt.h"
+#include "gt/intel_gt_requests.h"
 
 #include "i915_random.h"
 #include "i915_selftest.h"
+#include "igt_flush_test.h"
 #include "igt_live_test.h"
 #include "igt_spinner.h"
 #include "lib_sw_fence.h"
@@ -1524,6 +1528,765 @@ struct perf_series {
struct intel_context *ce[];
 };
 
+#define COUNT 5
+
+static int cmp_u32(const void *A, const void *B)
+{
+   const u32 *a = A, *b = B;
+
+   return *a - *b;
+}
+
+static u32 trifilter(u32 *a)
+{
+   u64 sum;
+
+   sort(a, COUNT, sizeof(*a), cmp_u32, NULL);
+
+   sum = mul_u32_u32(a[2], 2);
+   sum += a[1];
+   sum += a[3];
+
+   return (sum + 2) >> 2;
+}
+
+static u64 cycles_to_ns(struct intel_engine_cs *engine, u32 cycles)
+{
+   u64 ns = i915_cs_timestamp_ticks_to_ns(engine->i915, cycles);
+
+   return DIV_ROUND_CLOSEST(ns, 1 << COUNT);
+}
+
+static u32 *emit_timestamp_store(u32 *cs, struct intel_context *ce, u32 offset)
+{
+   *cs++ = MI_STORE_REGISTER_MEM_GEN8 | MI_USE_GGTT;
+   *cs++ = i915_mmio_reg_offset(RING_TIMESTAMP((ce->engine->mmio_base)));
+   *cs++ = offset;
+   *cs++ = 0;
+
+   return cs;
+}
+
+static u32 *emit_store_dw(u32 *cs, u32 offset, u32 value)
+{
+   *cs++ = MI_STORE_DWORD_IMM_GEN4 | MI_USE_GGTT;
+   *cs++ = offset;
+   *cs++ = 0;
+   *cs++ = value;
+
+   return cs;
+}
+
+static u32 *emit_semaphore_poll(u32 *cs, u32 mode, u32 value, u32 offset)
+{
+   *cs++ = MI_SEMAPHORE_WAIT |
+   MI_SEMAPHORE_GLOBAL_GTT |
+   MI_SEMAPHORE_POLL |
+   mode;
+   *cs++ = value;
+   *cs++ = offset;
+   *cs++ = 0;
+
+   return cs;
+}
+
+static u32 *emit_semaphore_poll_until(u32 *cs, u32 offset, u32 value)
+{
+   return emit_semaphore_poll(cs, MI_SEMAPHORE_SAD_EQ_SDD, value, offset);
+}
+
+static void semaphore_set(u32 *sema, u32 value)
+{
+   WRITE_ONCE(*sema, value);
+   wmb(); /* flush the update to the cache, and beyond */
+}
+
+static u32 *hwsp_scratch(const struct intel_context *ce)
+{
+   return memset32(ce->engine->status_page.addr + 1000, 0, 21);
+}
+
+static u32 hwsp_offset(const struct intel_context *ce, u32 *dw)
+{
+   return (i915_ggtt_offset(ce->engine->status_page.vma) +
+   offset_in_page(dw));
+}
+
+static int measure_semaphore_response(struct intel_context *ce)
+{
+   u32 *sema = hwsp_scratch(ce);
+   const u32 offset = hwsp_offset(ce, sema);
+   u32 elapsed[COUNT], cycles;
+   struct i915_request *rq;
+   u32 *cs;
+   int i;
+
+   /*
+* Measure how many cycles it takes for the HW to detect the change
+* in a semaphore value.
+*
+*A: read CS_TIMESTAMP from CPU
+*poke semaphore
+*B: read CS_TIMESTAMP on GPU
+*
+* Semaphore latency: B - A
+*/
+
+   semaphore_set(sema, -1);
+
+   rq = i915_request_create(ce);
+   if (IS_ERR(rq))
+   return PTR_ERR(rq);
+
+   cs = intel_ring_begin(rq, 4 + 8 * ARRAY_SIZE(elapsed));
+   if (IS_ERR(cs)) {
+   i915_request_add(rq);
+   return PTR_ERR(cs);
+   }
+
+   cs = emit_store_dw(cs, offset, 0);
+   for (i = 1; i <= ARRAY_SIZE(elapsed); i++) {
+   cs = emit_semaphore_poll_until(cs, offset, i);
+   cs = emit_timestamp_store(cs, ce, offset + i * sizeof(u32));
+   }
+
+   intel_ring_advance(rq, cs);
+   i915_request_add(rq);
+
+   if (wait_for(READ_ONCE(*sema) == 0, 50)) {
+   intel_gt_set_wedged(ce->engine->gt);
+   return -EIO;
+   }
+
+   for (i = 1; i <= ARRAY_SIZE(elapsed); i++) {
+   preempt_disable();
+   cycles = ENGINE_READ_FW(ce->engine, RING_TIMESTAMP);
+   semaphore_set(sema, i);
+   preempt_enable();
+
+   if (wait_for(READ_ONCE(sema[i]), 50)) {
+   intel_gt_set_wedged(ce->engine->gt);
+   return -EIO;
+   }
+
+   elapsed[i - 1] = (sema[i] - cycles) << COUNT;
+   }
+
+   cycles = 

Re: [Intel-gfx] [PATCH 4/4] Revert "drm/i915: Introduce proper dbuf state"

2020-05-18 Thread Lisovskiy, Stanislav
On Mon, May 18, 2020 at 03:23:03PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Dbuf slice tracking busted across runtime PM. Back to the
> drawing board.
> 
> This reverts commit 3cf43cdc63fbc3df19ea8398e9b8717ab44a6304.
> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c  |  67 ++-
>  .../drm/i915/display/intel_display_power.c|   8 +-
>  .../drm/i915/display/intel_display_types.h|  13 ++
>  drivers/gpu/drm/i915/i915_drv.h   |  11 +-
>  drivers/gpu/drm/i915/intel_pm.c   | 185 ++
>  drivers/gpu/drm/i915/intel_pm.h   |  22 ---
>  6 files changed, 99 insertions(+), 207 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 49577f19ff9c..d6635d649dc8 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -7579,8 +7579,6 @@ static void intel_crtc_disable_noatomic(struct 
> intel_crtc *crtc,
>   to_intel_bw_state(dev_priv->bw_obj.state);
>   struct intel_cdclk_state *cdclk_state =
>   to_intel_cdclk_state(dev_priv->cdclk.obj.state);
> - struct intel_dbuf_state *dbuf_state =
> - to_intel_dbuf_state(dev_priv->dbuf.obj.state);
>   struct intel_crtc_state *crtc_state =
>   to_intel_crtc_state(crtc->base.state);
>   enum intel_display_power_domain domain;
> @@ -7654,8 +7652,6 @@ static void intel_crtc_disable_noatomic(struct 
> intel_crtc *crtc,
>   cdclk_state->min_voltage_level[pipe] = 0;
>   cdclk_state->active_pipes &= ~BIT(pipe);
>  
> - dbuf_state->active_pipes &= ~BIT(pipe);
> -
>   bw_state->data_rate[pipe] = 0;
>   bw_state->num_active_planes[pipe] = 0;
>  }
> @@ -14012,10 +14008,10 @@ static void verify_wm_state(struct intel_crtc *crtc,
>   hw_enabled_slices = intel_enabled_dbuf_slices_mask(dev_priv);
>  
>   if (INTEL_GEN(dev_priv) >= 11 &&
> - hw_enabled_slices != dev_priv->dbuf.enabled_slices)
> + hw_enabled_slices != dev_priv->enabled_dbuf_slices_mask)
>   drm_err(_priv->drm,
>   "mismatch in DBUF Slices (expected 0x%x, got 0x%x)\n",
> - dev_priv->dbuf.enabled_slices,
> + dev_priv->enabled_dbuf_slices_mask,
>   hw_enabled_slices);
>  
>   /* planes */
> @@ -14556,7 +14552,9 @@ static int intel_modeset_checks(struct 
> intel_atomic_state *state)
>   state->modeset = true;
>   state->active_pipes = intel_calc_active_pipes(state, 
> dev_priv->active_pipes);
>  
> - if (state->active_pipes != dev_priv->active_pipes) {
> + state->active_pipe_changes = state->active_pipes ^ 
> dev_priv->active_pipes;
> +
> + if (state->active_pipe_changes) {
>   ret = _intel_atomic_lock_global_state(state);
>   if (ret)
>   return ret;
> @@ -15210,38 +15208,22 @@ static void intel_commit_modeset_enables(struct 
> intel_atomic_state *state)
>  static void icl_dbuf_slice_pre_update(struct intel_atomic_state *state)
>  {
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - const struct intel_dbuf_state *new_dbuf_state =
> - intel_atomic_get_new_dbuf_state(state);
> - const struct intel_dbuf_state *old_dbuf_state =
> - intel_atomic_get_old_dbuf_state(state);
> -
> - if (!new_dbuf_state ||
> - new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> - return;
> + u8 hw_enabled_slices = dev_priv->enabled_dbuf_slices_mask;
> + u8 required_slices = state->enabled_dbuf_slices_mask;
> + u8 slices_union = hw_enabled_slices | required_slices;
>  
> - WARN_ON(!new_dbuf_state->base.changed);
> -
> - gen9_dbuf_slices_update(dev_priv,
> - old_dbuf_state->enabled_slices |
> - new_dbuf_state->enabled_slices);
> + if (INTEL_GEN(dev_priv) >= 11 && slices_union != hw_enabled_slices)
> + gen9_dbuf_slices_update(dev_priv, slices_union);
>  }
>  
>  static void icl_dbuf_slice_post_update(struct intel_atomic_state *state)
>  {
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - const struct intel_dbuf_state *new_dbuf_state =
> - intel_atomic_get_new_dbuf_state(state);
> - const struct intel_dbuf_state *old_dbuf_state =
> - intel_atomic_get_old_dbuf_state(state);
> -
> - if (!new_dbuf_state ||
> - new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> - return;
> + u8 hw_enabled_slices = dev_priv->enabled_dbuf_slices_mask;
> + u8 required_slices = state->enabled_dbuf_slices_mask;

I guess that one opened the pandora box.. May be we shouldn't
even stick to checking against the old_dbuf_state? I mean,
this paradigm would work well only if we suppose that the last

Re: [Intel-gfx] [PATCH v6 00/16] drm/i915: Add support for HDCP 1.4 over MST connectors

2020-05-18 Thread Sean Paul
On Fri, May 15, 2020 at 10:48 AM Ramalingam C  wrote:
>
> On 2020-04-29 at 15:54:46 -0400, Sean Paul wrote:
> > From: Sean Paul 
> >
> > Changes in v6:
> > -Rebased on -tip
> > -Disabled HDCP over MST on GEN12
> > -Addressed Lyude's review comments in the QUERY_STREAM_ENCRYPTION_STATUS 
> > patch
>
> Sean,
>
> What is the test setup you have used?
>

Hi Ram,
Thanks for the feedback. To be completely honest it's really
frustrating that I'm just now getting questions and review feedback
(which I've been begging for on IRC) on this review that could have
been addressed ~5 months ago. It's super disruptive to have to keep
switching back to this after a long hiatus and many i915 refactors
complicating my rebases.

If no one wants this patchset, that's fine, please just let me know so
I don't waste any more time. If Intel is interested, could we please
stop the review trickle and lay out exactly what needs to be done to
get this landed?

Sean


> I am afraid our CI dont have the coverage for MST capability yet to provide
> the functional status of the code.
>
> -Ram.
> >
> > Sean Paul (16):
> >   drm/i915: Fix sha_text population code
> >   drm/i915: Clear the repeater bit on HDCP disable
> >   drm/i915: WARN if HDCP signalling is enabled upon disable
> >   drm/i915: Intercept Aksv writes in the aux hooks
> >   drm/i915: Use the cpu_transcoder in intel_hdcp to toggle HDCP
> > signalling
> >   drm/i915: Factor out hdcp->value assignments
> >   drm/i915: Protect workers against disappearing connectors
> >   drm/i915: Don't fully disable HDCP on a port if multiple pipes are
> > using it
> >   drm/i915: Support DP MST in enc_to_dig_port() function
> >   drm/i915: Use ddi_update_pipe in intel_dp_mst
> >   drm/i915: Factor out HDCP shim functions from dp for use by dp_mst
> >   drm/i915: Plumb port through hdcp init
> >   drm/i915: Add connector to hdcp_shim->check_link()
> >   drm/mst: Add support for QUERY_STREAM_ENCRYPTION_STATUS MST sideband
> > message
> >   drm/i915: Print HDCP version info for all connectors
> >   drm/i915: Add HDCP 1.4 support for MST connectors
> >
> >  drivers/gpu/drm/drm_dp_mst_topology.c | 142 
> >  drivers/gpu/drm/i915/Makefile |   1 +
> >  drivers/gpu/drm/i915/display/intel_ddi.c  |  29 +-
> >  drivers/gpu/drm/i915/display/intel_ddi.h  |   2 +
> >  .../drm/i915/display/intel_display_debugfs.c  |  21 +-
> >  .../drm/i915/display/intel_display_types.h|  30 +-
> >  drivers/gpu/drm/i915/display/intel_dp.c   | 654 +--
> >  drivers/gpu/drm/i915/display/intel_dp.h   |   9 +
> >  drivers/gpu/drm/i915/display/intel_dp_hdcp.c  | 743 ++
> >  drivers/gpu/drm/i915/display/intel_dp_mst.c   |  19 +
> >  drivers/gpu/drm/i915/display/intel_hdcp.c | 217 +++--
> >  drivers/gpu/drm/i915/display/intel_hdcp.h |   2 +-
> >  drivers/gpu/drm/i915/display/intel_hdmi.c |  25 +-
> >  .../drm/selftests/test-drm_dp_mst_helper.c|  17 +
> >  include/drm/drm_dp_helper.h   |   3 +
> >  include/drm/drm_dp_mst_helper.h   |  44 ++
> >  include/drm/drm_hdcp.h|   3 +
> >  17 files changed, 1235 insertions(+), 726 deletions(-)
> >  create mode 100644 drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> >
> > --
> > Sean Paul, Software Engineer, Google / Chromium OS
> >
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/4] drm/i915/params: don't expose inject_probe_failure in debugfs (rev2)

2020-05-18 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/params: don't expose 
inject_probe_failure in debugfs (rev2)
URL   : https://patchwork.freedesktop.org/series/77272/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8494 -> Patchwork_17689


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### CI changes ###

 Possible regressions 

  * boot:
- fi-kbl-8809g:   [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-kbl-8809g/boot.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-kbl-8809g/boot.html
- fi-icl-y:   [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-y/boot.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-icl-y/boot.html
- fi-icl-u2:  [PASS][5] -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-u2/boot.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-icl-u2/boot.html
- fi-cfl-8109u:   [PASS][7] -> [FAIL][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cfl-8109u/boot.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-cfl-8109u/boot.html
- fi-skl-6600u:   [PASS][9] -> [FAIL][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-skl-6600u/boot.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-skl-6600u/boot.html
- fi-cfl-8700k:   [PASS][11] -> [FAIL][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cfl-8700k/boot.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-cfl-8700k/boot.html
- fi-icl-dsi: [PASS][13] -> [FAIL][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-dsi/boot.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-icl-dsi/boot.html
- fi-whl-u:   [PASS][15] -> [FAIL][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-whl-u/boot.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-whl-u/boot.html
- fi-cml-u2:  [PASS][17] -> [FAIL][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cml-u2/boot.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-cml-u2/boot.html
- fi-skl-6700k2:  [PASS][19] -> [FAIL][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-skl-6700k2/boot.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-skl-6700k2/boot.html
- fi-cfl-guc: [PASS][21] -> [FAIL][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cfl-guc/boot.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-cfl-guc/boot.html
- fi-kbl-soraka:  [PASS][23] -> [FAIL][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-kbl-soraka/boot.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-kbl-soraka/boot.html
- fi-icl-guc: [PASS][25] -> [FAIL][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-icl-guc/boot.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-icl-guc/boot.html
- fi-cml-s:   [PASS][27] -> [FAIL][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-cml-s/boot.html
   [28]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-cml-s/boot.html
- fi-skl-lmem:[PASS][29] -> [FAIL][30]
   [29]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-skl-lmem/boot.html
   [30]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-skl-lmem/boot.html
- fi-glk-dsi: [PASS][31] -> [FAIL][32]
   [31]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-glk-dsi/boot.html
   [32]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-glk-dsi/boot.html
- fi-tgl-y:   [PASS][33] -> [FAIL][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-tgl-y/boot.html
   [34]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-tgl-y/boot.html
- fi-kbl-guc: [PASS][35] -> [FAIL][36]
   [35]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8494/fi-kbl-guc/boot.html
   [36]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17689/fi-kbl-guc/boot.html
- fi-kbl-x1275:   [PASS][37] -> 

  1   2   >