drm/i915: Introduce execlist_port_* accessors
Subsystems (2)
PATCH 1/3 drm/i915: Introduce execlist_port_* accessors
From: Mika Kuoppala <[email protected]>
Instead of trusting that first available port is at index 0, use accessor to hide this. This is a preparation for a following patches where head can be at arbitrary location in the port array.
v2: improved commit message, elsp_ready readability (Chris)
v3: s/execlist_port_index/execlist_port (Chris)
v4: rebase to new naming
v5: fix port_next indexing
v6: adapt to preempt
v7: improved _port_next (Chris)
v8: whitespace, for loop (Chris),
find_first_unset and GEM_BUG_ON after next_port in guc submission
--- drivers/gpu/drm/i915/i915_gpu_error.c | 5 +- drivers/gpu/drm/i915/intel_engine_cs.c | 18 +++++--- drivers/gpu/drm/i915/intel_guc_submission.c | 71 ++++++++++++++++++++--------- drivers/gpu/drm/i915/intel_lrc.c | 55 +++++++++++++--------- drivers/gpu/drm/i915/intel_ringbuffer.h | 44 +++++++++++++++++- 5 files changed, 139 insertions(+), 54 deletions(-)
drivers/gpu/drm/i915/i915_gpu_error.c +3 -2
@@ -1350,11 +1350,12 @@ static void engine_record_requests(struct intel_engine_cs *engine,static void error_record_engine_execlists (struct intel_engine_cs *engine,struct drm_i915_error_engine *ee) { -const struct intel_engine_execlists *const execlists = &engine->execlists; +struct intel_engine_execlists *const execlists = &engine->execlists;unsigned int n;for (n =0 ; n <execlists_num_ports (execlists); n++) { -struct drm_i915_gem_request *rq =port_request (&execlists->port[n]); +struct drm_i915_gem_request *rq = +port_request (execlists_port (execlists, n));if (!rq)break ;
drivers/gpu/drm/i915/intel_engine_cs.c +11 -7
@@ -1669,7 +1669,7 @@ static void print_request(struct drm_printer *m,void intel_engine_dump (struct intel_engine_cs *engine,struct drm_printer *m) {struct intel_breadcrumbs *const b = &engine->breadcrumbs; -const struct intel_engine_execlists *const execlists = &engine->execlists; +struct intel_engine_execlists *const execlists = &engine->execlists;struct i915_gpu_error *const error = &engine->i915->gpu_error;struct drm_i915_private *dev_priv = engine->i915;struct drm_i915_gem_request *rq;
@@ -1782,16 +1782,20 @@ void intel_engine_dump(struct intel_engine_cs *engine, struct drm_printer *m)rcu_read_lock ();for (idx =0 ; idx <execlists_num_ports (execlists); idx++) { -unsigned int count; +struct execlist_port *port; +unsigned int count, idx_abs; + + port =execlists_port (execlists, idx); + idx_abs =port_index (port, execlists); - rq =port_unpack (&execlists->port[idx], &count); + rq =port_unpack (port, &count);if (rq) { -drm_printf (m,"\t\tELSP[%d] count=%d, " , - idx, count); +drm_printf (m,"\t\tELSP[%d:%d] count=%d, " , + idx, idx_abs, count);print_request (m, rq,"rq: " ); }else { -drm_printf (m,"\t\tELSP[%d] idle\n" , - idx); +drm_printf (m,"\t\tELSP[%d:%d] idle\n" , + idx, idx_abs); } }drm_printf (m,"\t\tHW active? 0x%x\n" , execlists->active);
drivers/gpu/drm/i915/intel_guc_submission.c +50 -21
132 lines not on this page · raw message
drivers/gpu/drm/i915/intel_lrc.c +33 -22
168 lines not on this page · raw message
drivers/gpu/drm/i915/intel_ringbuffer.h +42 -2
62 lines not on this page · raw message
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 2/3 drm/i915: Move execlists port head instead of memmoving array
From: Mika Kuoppala <[email protected]>
As all our access to execlist ports are through head and tail helpers, we can now move the head instead of memmoving the array.
v2: use memset (Chris)
--- drivers/gpu/drm/i915/intel_ringbuffer.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/gpu/drm/i915/intel_ringbuffer.h +5 -5
@@ -685,13 +685,13 @@ static inline struct execlist_port * execlists_head_complete(struct intel_engine_execlists * const execlists, struct execlist_port * const port) { -const unsigned int m = execlists->port_mask; - -GEM_BUG_ON (port_index (port, execlists) !=0 ); + GEM_BUG_ON(port_index(port, execlists) != execlists->port_head); +GEM_BUG_ON (!port_isset (port));GEM_BUG_ON (!execlists_is_active (execlists,EXECLISTS_ACTIVE_USER )); -memmove (port, port +1 , m *sizeof (struct execlist_port )); -memset (port + m,0 ,sizeof (struct execlist_port )); +memset (port,0 ,sizeof (*port)); + + execlists->port_head =port_head_add (execlists,1 );return execlists_port_head (execlists); }
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 3/3 HAX Enable GuC Submission for CI
In reply to Mika KuoppalaFrom: Michał Winiarski <[email protected]>
Also:
Revert "drm/i915/guc: Assert that we switch between known ggtt->invalidate functions"
This reverts commit 04f7b24eccdfae680a36e9825fe0d61dcd5ed528.
--- drivers/gpu/drm/i915/i915_gem_gtt.c | 8 ++------ drivers/gpu/drm/i915/i915_params.h | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-)
drivers/gpu/drm/i915/i915_gem_gtt.c +2 -6
@@ -3590,17 +3590,13 @@ int i915_ggtt_enable_hw(struct drm_i915_private *dev_priv)void i915_ggtt_enable_guc (struct drm_i915_private *i915) { -GEM_BUG_ON (i915->ggtt.invalidate != gen6_ggtt_invalidate); - i915->ggtt.invalidate = guc_ggtt_invalidate; }void i915_ggtt_disable_guc (struct drm_i915_private *i915) { -/* We should only be called after i915_ggtt_enable_guc() */ -GEM_BUG_ON (i915->ggtt.invalidate != guc_ggtt_invalidate); - - i915->ggtt.invalidate = gen6_ggtt_invalidate; +if (i915->ggtt.invalidate == guc_ggtt_invalidate) + i915->ggtt.invalidate = gen6_ggtt_invalidate; }void i915_gem_restore_gtt_mappings (struct drm_i915_private *dev_priv)
drivers/gpu/drm/i915/i915_params.h +2 -2
@@ -42,8 +42,8 @@ param(int, disable_power_well, -1) \ param(int, enable_ips, 1) \ param(int, invert_brightness, 0) \ - param(int, enable_guc_loading, 0) \ - param(int, enable_guc_submission, 0) \ + param(int, enable_guc_loading, 1) \ + param(int, enable_guc_submission, 1) \ param(int, guc_log_level, -1) \ param(char *, guc_firmware_path, NULL) \param (char *, huc_firmware_path, NULL) \
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.BAT: failure for series starting with [CI,1/3] drm/i915: Introduce execlist_port_* accessors
In reply to Mika Kuoppala== Series Details ==
== Series Details ==
Series: series starting with [CI,1/3] drm/i915: Introduce execlist_port_* accessors
URL : https://patchwork.freedesktop.org/series/34685/
State : failure
== Summary ==
Series 34685v1 series starting with [CI,1/3] drm/i915: Introduce execlist_port_* accessors
https://patchwork.freedesktop.org/api/1.0/series/34685/revisions/1/mbox/
Test debugfs_test:
Subgroup read_all_entries:
pass -> DMESG-WARN (fi-skl-6260u)
pass -> DMESG-WARN (fi-skl-6600u)
pass -> DMESG-WARN (fi-skl-6700hq)
pass -> DMESG-WARN (fi-skl-6700k)
pass -> DMESG-WARN (fi-skl-6770hq)
pass -> DMESG-WARN (fi-skl-gvtdvm)
pass -> DMESG-WARN (fi-bxt-dsi)
pass -> DMESG-WARN (fi-bxt-j4205)
pass -> DMESG-WARN (fi-kbl-7500u) fdo#103285
pass -> DMESG-WARN (fi-kbl-7560u)
pass -> DMESG-WARN (fi-kbl-7567u)
pass -> DMESG-WARN (fi-kbl-r)
pass -> DMESG-WARN (fi-glk-1)
Test gem_exec_suspend:
Subgroup basic-s3:
pass -> DMESG-FAIL (fi-skl-6700k)
Subgroup basic-s4-devices:
pass -> SKIP (fi-skl-6700k)
Test gem_linear_blits:
Subgroup basic:
pass -> SKIP (fi-skl-6700k)
Test gem_render_linear_blits:
Subgroup basic:
pass -> SKIP (fi-skl-6700k)
Test gem_render_tiled_blits:
Subgroup basic:
pass -> SKIP (fi-skl-6700k)
Test gem_ringfill:
Subgroup basic-default:
pass -> SKIP (fi-skl-6700k)
Subgroup basic-default-interruptible:
pass -> SKIP (fi-skl-6700k)
Subgroup basic-default-forked:
pass -> SKIP (fi-skl-6700k)
Subgroup basic-default-fd:
pass -> SKIP (fi-skl-6700k)
Subgroup basic-default-hang:
pass -> DMESG-WARN (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Test gem_sync:
Subgroup basic-all:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Subgroup basic-each:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Subgroup basic-many-each:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Subgroup basic-store-all:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Subgroup basic-store-each:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Test gem_tiled_blits:
Subgroup basic:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Test gem_tiled_fence_blits:
Subgroup basic:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Test gem_wait:
Subgroup basic-busy-all:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Subgroup basic-wait-all:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Subgroup basic-await-all:
pass -> SKIP (fi-elk-e7500)
pass -> SKIP (fi-skl-6700k)
Test gem_workarounds:
Subgroup basic-read:
pass -> SKIP (fi-skl-6700k)
Test kms_busy:
Subgroup basic-flip-a:
dmesg-warn -> SKIP (fi-elk-e7500) fdo#103989 +3
pass -> SKIP (fi-skl-6700k)
Subgroup basic-flip-b:
pass -> SKIP (fi-skl-6700k)
Subgroup basic-flip-c:
pass -> SKIP (fi-skl-6700k)
Test kms_chamelium:
Subgroup common-hpd-after-suspend:
pass -> DMESG-WARN (fi-skl-6700k)
Test kms_cursor_legacy:
Subgroup basic-busy-flip-before-cursor-atomic:
pass -> SKIP (fi-skl-6700k)
Subgroup basic-busy-flip-before-cursor-legacy:
pass -> SKIP (fi-skl-6700k)
Test kms_frontbuffer_tracking:
Subgroup basic:
pass -> SKIP (fi-skl-6700k) fdo#103735WARNING: Long output truncated
0c2cf368f9fbb26cdf4e355f01c7ddf16e65d25a drm-tip: 2017y-11m-30d-15h-54m-58s UTC integration manifest a39595105d3b HAX Enable GuC Submission for CIcf01db25c2fc drm/i915: Move execlists port head instead of memmoving array df93ca89010e drm/i915: Introduce execlist_port_* accessors
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7379/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: ✗ Fi.CI.BAT: failure for series starting with [CI,1/3] drm/i915: Introduce execlist_port_* accessors
Quoted 12 lines · Patchwork
== Series Details ==
Series: series starting with [CI,1/3] drm/i915: Introduce execlist_port_* accessors
URL : https://patchwork.freedesktop.org/series/34685/
State : failure== Summary ==
Series 34685v1 series starting with [CI,1/3] drm/i915: Introduce execlist_port_* accessors
https://patchwork.freedesktop.org/api/1.0/series/34685/revisions/1/mbox/Test
debugfs_test:
Quoted 9 lines
Subgroup read_all_entries:
pass -> DMESG-WARN (fi-skl-6260u)
pass -> DMESG-WARN (fi-skl-6600u)
pass -> DMESG-WARN (fi-skl-6700hq)
pass -> DMESG-WARN (fi-skl-6700k)
pass -> DMESG-WARN (fi-skl-6770hq)
pass -> DMESG-WARN (fi-skl-gvtdvm)
pass -> DMESG-WARN (fi-bxt-dsi)
pass -> DMESG-WARN (fi-bxt-j4205)These are similar of:
The lockdep is not fully tamed?
Daniel, halp!
-Mika
Quoted 89 lines
pass -> DMESG-WARN (fi-kbl-7500u) fdo#103285 pass -> DMESG-WARN (fi-kbl-7560u) pass -> DMESG-WARN (fi-kbl-7567u) pass -> DMESG-WARN (fi-kbl-r) pass -> DMESG-WARN (fi-glk-1) Test gem_exec_suspend: Subgroup basic-s3: pass -> DMESG-FAIL (fi-skl-6700k) Subgroup basic-s4-devices: pass -> SKIP (fi-skl-6700k) Test gem_linear_blits: Subgroup basic: pass -> SKIP (fi-skl-6700k) Test gem_render_linear_blits: Subgroup basic: pass -> SKIP (fi-skl-6700k) Test gem_render_tiled_blits: Subgroup basic: pass -> SKIP (fi-skl-6700k) Test gem_ringfill: Subgroup basic-default: pass -> SKIP (fi-skl-6700k) Subgroup basic-default-interruptible: pass -> SKIP (fi-skl-6700k) Subgroup basic-default-forked: pass -> SKIP (fi-skl-6700k) Subgroup basic-default-fd: pass -> SKIP (fi-skl-6700k) Subgroup basic-default-hang: pass -> DMESG-WARN (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Test gem_sync: Subgroup basic-all: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Subgroup basic-each: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Subgroup basic-many-each: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Subgroup basic-store-all: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Subgroup basic-store-each: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Test gem_tiled_blits: Subgroup basic: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Test gem_tiled_fence_blits: Subgroup basic: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Test gem_wait: Subgroup basic-busy-all: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Subgroup basic-wait-all: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Subgroup basic-await-all: pass -> SKIP (fi-elk-e7500) pass -> SKIP (fi-skl-6700k) Test gem_workarounds: Subgroup basic-read: pass -> SKIP (fi-skl-6700k) Test kms_busy: Subgroup basic-flip-a: dmesg-warn -> SKIP (fi-elk-e7500) fdo#103989 +3 pass -> SKIP (fi-skl-6700k) Subgroup basic-flip-b: pass -> SKIP (fi-skl-6700k) Subgroup basic-flip-c: pass -> SKIP (fi-skl-6700k) Test kms_chamelium: Subgroup common-hpd-after-suspend: pass -> DMESG-WARN (fi-skl-6700k) Test kms_cursor_legacy: Subgroup basic-busy-flip-before-cursor-atomic: pass -> SKIP (fi-skl-6700k) Subgroup basic-busy-flip-before-cursor-legacy: pass -> SKIP (fi-skl-6700k) Test kms_frontbuffer_tracking: Subgroup basic: pass -> SKIP (fi-skl-6700k) fdo#103735WARNING: Long output truncated
Quoted 8 lines
0c2cf368f9fbb26cdf4e355f01c7ddf16e65d25adrm-tip: 2017y-11m-30d-15h-54m-58s UTC integration manifesta39595105d3bHAX Enable GuC Submission for CIcf01db25c2fcdrm/i915: Move execlists port head instead of memmoving arraydf93ca89010edrm/i915: Introduce execlist_port_* accessors== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7379/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx