* [PATCH] drm/i915/icl: fix transcoder state readout
@ 2018-12-04 10:19 Jani Nikula
2018-12-04 11:11 ` ✓ Fi.CI.BAT: success for " Patchwork
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jani Nikula @ 2018-12-04 10:19 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Commit 2ca711caeca2 ("drm/i915/icl: Consider DSI for getting transcoder
state") clobbers the previously read TRANS_DDI_FUNC_CTL_EDP register
contents with TRANS_DDI_FUNC_CTL_DSI0 contents. Fix the state readout,
and handle DSI 1 while at it.
Use a bitmask for iterating and logging transcoders, because the allowed
combinations are a bit funky.
Fixes: 2ca711caeca2 ("drm/i915/icl: Consider DSI for getting transcoder state")
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: Madhav Chauhan <madhav.chauhan@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 48 ++++++++++++++++++++----------------
1 file changed, 27 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index a2584f977ab1..64b0ecd538fd 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9476,13 +9476,18 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
struct drm_device *dev = crtc->base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
enum intel_display_power_domain power_domain;
+ unsigned long panel_transcoder_mask = BIT(TRANSCODER_EDP);
+ unsigned long enabled_panel_transcoders = 0;
+ enum transcoder panel_transcoder;
u32 tmp;
- bool is_dsi = false;
- bool is_edp = false;
+
+ if (IS_ICELAKE(dev_priv))
+ panel_transcoder_mask |=
+ BIT(TRANSCODER_DSI_0) | BIT(TRANSCODER_DSI_1);
/*
* The pipe->transcoder mapping is fixed with the exception of the eDP
- * transcoder handled below.
+ * and DSI transcoders handled below.
*/
pipe_config->cpu_transcoder = (enum transcoder) crtc->pipe;
@@ -9490,23 +9495,22 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
* XXX: Do intel_display_power_get_if_enabled before reading this (for
* consistency and less surprising code; it's in always on power).
*/
- tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP));
- if (tmp & TRANS_DDI_FUNC_ENABLE)
- is_edp = true;
+ for_each_set_bit(panel_transcoder, &panel_transcoder_mask, 32) {
+ enum pipe trans_pipe;
- if (IS_ICELAKE(dev_priv)) {
- tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_DSI_0));
- if (tmp & TRANS_DDI_FUNC_ENABLE)
- is_dsi = true;
- }
+ tmp = I915_READ(TRANS_DDI_FUNC_CTL(panel_transcoder));
+ if (!(tmp & TRANS_DDI_FUNC_ENABLE))
+ continue;
- WARN_ON(is_edp && is_dsi);
+ /* Log all enabled ones, only use the first one */
+ enabled_panel_transcoders |= BIT(panel_transcoder);
+ if (enabled_panel_transcoders != BIT(panel_transcoder))
+ continue;
- if (is_edp || is_dsi) {
- enum pipe trans_pipe;
switch (tmp & TRANS_DDI_EDP_INPUT_MASK) {
default:
- WARN(1, "unknown pipe linked to edp transcoder\n");
+ WARN(1, "unknown pipe linked to transcoder %s\n",
+ transcoder_name(panel_transcoder));
/* fall through */
case TRANS_DDI_EDP_INPUT_A_ONOFF:
case TRANS_DDI_EDP_INPUT_A_ON:
@@ -9520,14 +9524,16 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
break;
}
- if (trans_pipe == crtc->pipe) {
- if (is_edp)
- pipe_config->cpu_transcoder = TRANSCODER_EDP;
- else if (is_dsi)
- pipe_config->cpu_transcoder = TRANSCODER_DSI_0;
- }
+ if (trans_pipe == crtc->pipe)
+ pipe_config->cpu_transcoder = panel_transcoder;
}
+ /*
+ * Valid combos: none, eDP, DSI0, DSI1, DSI0+DSI1
+ */
+ WARN_ON((enabled_panel_transcoders & BIT(TRANSCODER_EDP)) &&
+ enabled_panel_transcoders != BIT(TRANSCODER_EDP));
+
power_domain = POWER_DOMAIN_TRANSCODER(pipe_config->cpu_transcoder);
if (!intel_display_power_get_if_enabled(dev_priv, power_domain))
return false;
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 5+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915/icl: fix transcoder state readout
2018-12-04 10:19 [PATCH] drm/i915/icl: fix transcoder state readout Jani Nikula
@ 2018-12-04 11:11 ` Patchwork
2018-12-04 11:29 ` [PATCH] " Imre Deak
2018-12-04 14:54 ` ✓ Fi.CI.IGT: success for " Patchwork
2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2018-12-04 11:11 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/icl: fix transcoder state readout
URL : https://patchwork.freedesktop.org/series/53465/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5251 -> Patchwork_11009
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with Patchwork_11009 need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_11009, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/53465/revisions/1/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_11009:
### IGT changes ###
#### Warnings ####
* igt@prime_vgem@basic-fence-flip:
- fi-hsw-4770: PASS -> SKIP +2
Known issues
------------
Here are the changes found in Patchwork_11009 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_create@basic-files:
- fi-bsw-kefka: PASS -> FAIL [fdo#108656]
* igt@i915_selftest@live_contexts:
- {fi-icl-u3}: NOTRUN -> INCOMPLETE [fdo#108315]
#### Possible fixes ####
* igt@gem_exec_suspend@basic-s4-devices:
- fi-ivb-3520m: FAIL [fdo#108880] -> PASS
* igt@kms_flip@basic-flip-vs-dpms:
- {fi-icl-u3}: DMESG-WARN [fdo#108928] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315
[fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656
[fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880
[fdo#108928]: https://bugs.freedesktop.org/show_bug.cgi?id=108928
Participating hosts (46 -> 42)
------------------------------
Additional (1): fi-pnv-d510
Missing (5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
Build changes
-------------
* Linux: CI_DRM_5251 -> Patchwork_11009
CI_DRM_5251: 683a5eff4f11e1451ae069e31af4899700684553 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4737: f7271fe4e12b564c25a44ca76ee82bb5e78601b6 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_11009: 5e81788273b5908a4f6837a60f3de3ccc1e1a6fa @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
5e81788273b5 drm/i915/icl: fix transcoder state readout
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11009/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915/icl: fix transcoder state readout
2018-12-04 10:19 [PATCH] drm/i915/icl: fix transcoder state readout Jani Nikula
2018-12-04 11:11 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-12-04 11:29 ` Imre Deak
2018-12-04 17:08 ` Jani Nikula
2018-12-04 14:54 ` ✓ Fi.CI.IGT: success for " Patchwork
2 siblings, 1 reply; 5+ messages in thread
From: Imre Deak @ 2018-12-04 11:29 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Tue, Dec 04, 2018 at 12:19:26PM +0200, Jani Nikula wrote:
> Commit 2ca711caeca2 ("drm/i915/icl: Consider DSI for getting transcoder
> state") clobbers the previously read TRANS_DDI_FUNC_CTL_EDP register
> contents with TRANS_DDI_FUNC_CTL_DSI0 contents. Fix the state readout,
> and handle DSI 1 while at it.
>
> Use a bitmask for iterating and logging transcoders, because the allowed
> combinations are a bit funky.
>
> Fixes: 2ca711caeca2 ("drm/i915/icl: Consider DSI for getting transcoder state")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108928
> Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
> Cc: Madhav Chauhan <madhav.chauhan@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 48 ++++++++++++++++++++----------------
> 1 file changed, 27 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index a2584f977ab1..64b0ecd538fd 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -9476,13 +9476,18 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
> struct drm_device *dev = crtc->base.dev;
> struct drm_i915_private *dev_priv = to_i915(dev);
> enum intel_display_power_domain power_domain;
> + unsigned long panel_transcoder_mask = BIT(TRANSCODER_EDP);
> + unsigned long enabled_panel_transcoders = 0;
> + enum transcoder panel_transcoder;
> u32 tmp;
> - bool is_dsi = false;
> - bool is_edp = false;
> +
> + if (IS_ICELAKE(dev_priv))
> + panel_transcoder_mask |=
> + BIT(TRANSCODER_DSI_0) | BIT(TRANSCODER_DSI_1);
>
> /*
> * The pipe->transcoder mapping is fixed with the exception of the eDP
> - * transcoder handled below.
> + * and DSI transcoders handled below.
> */
> pipe_config->cpu_transcoder = (enum transcoder) crtc->pipe;
>
> @@ -9490,23 +9495,22 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
> * XXX: Do intel_display_power_get_if_enabled before reading this (for
> * consistency and less surprising code; it's in always on power).
> */
> - tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP));
> - if (tmp & TRANS_DDI_FUNC_ENABLE)
> - is_edp = true;
> + for_each_set_bit(panel_transcoder, &panel_transcoder_mask, 32) {
nit: BITS_PER_LONG or I915_MAX_TRANSCODERS?
> + enum pipe trans_pipe;
>
> - if (IS_ICELAKE(dev_priv)) {
> - tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_DSI_0));
> - if (tmp & TRANS_DDI_FUNC_ENABLE)
> - is_dsi = true;
> - }
> + tmp = I915_READ(TRANS_DDI_FUNC_CTL(panel_transcoder));
> + if (!(tmp & TRANS_DDI_FUNC_ENABLE))
> + continue;
>
> - WARN_ON(is_edp && is_dsi);
> + /* Log all enabled ones, only use the first one */
> + enabled_panel_transcoders |= BIT(panel_transcoder);
> + if (enabled_panel_transcoders != BIT(panel_transcoder))
> + continue;
nit: As you explained for DSI dual mode both transcoders are needed and
we don't support atm two separate DSI ports. A code comment about this
would be nice. Maybe for the two DSI port case we should also warn below.
With or without the nits:
Reviewed-by: Imre Deak <imre.deak@intel.com>
>
> - if (is_edp || is_dsi) {
> - enum pipe trans_pipe;
> switch (tmp & TRANS_DDI_EDP_INPUT_MASK) {
> default:
> - WARN(1, "unknown pipe linked to edp transcoder\n");
> + WARN(1, "unknown pipe linked to transcoder %s\n",
> + transcoder_name(panel_transcoder));
> /* fall through */
> case TRANS_DDI_EDP_INPUT_A_ONOFF:
> case TRANS_DDI_EDP_INPUT_A_ON:
> @@ -9520,14 +9524,16 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
> break;
> }
>
> - if (trans_pipe == crtc->pipe) {
> - if (is_edp)
> - pipe_config->cpu_transcoder = TRANSCODER_EDP;
> - else if (is_dsi)
> - pipe_config->cpu_transcoder = TRANSCODER_DSI_0;
> - }
> + if (trans_pipe == crtc->pipe)
> + pipe_config->cpu_transcoder = panel_transcoder;
> }
>
> + /*
> + * Valid combos: none, eDP, DSI0, DSI1, DSI0+DSI1
> + */
> + WARN_ON((enabled_panel_transcoders & BIT(TRANSCODER_EDP)) &&
> + enabled_panel_transcoders != BIT(TRANSCODER_EDP));
> +
> power_domain = POWER_DOMAIN_TRANSCODER(pipe_config->cpu_transcoder);
> if (!intel_display_power_get_if_enabled(dev_priv, power_domain))
> return false;
> --
> 2.11.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
* ✓ Fi.CI.IGT: success for drm/i915/icl: fix transcoder state readout
2018-12-04 10:19 [PATCH] drm/i915/icl: fix transcoder state readout Jani Nikula
2018-12-04 11:11 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-12-04 11:29 ` [PATCH] " Imre Deak
@ 2018-12-04 14:54 ` Patchwork
2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2018-12-04 14:54 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/icl: fix transcoder state readout
URL : https://patchwork.freedesktop.org/series/53465/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5251_full -> Patchwork_11009_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Known issues
------------
Here are the changes found in Patchwork_11009_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_schedule@pi-ringfull-bsd:
- {shard-iclb}: NOTRUN -> FAIL [fdo#103158] +3
* igt@gem_ppgtt@blt-vs-render-ctxn:
- shard-kbl: PASS -> INCOMPLETE [fdo#103665] / [fdo#106023] / [fdo#106887]
* igt@kms_atomic_transition@1x-modeset-transitions-nonblocking:
- shard-skl: PASS -> FAIL [fdo#107815] / [fdo#108228] / [fdo#108470]
* igt@kms_available_modes_crc@available_mode_test_crc:
- {shard-iclb}: NOTRUN -> FAIL [fdo#106641]
* igt@kms_busy@extended-modeset-hang-newfb-render-a:
- {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] +7
- shard-glk: NOTRUN -> DMESG-WARN [fdo#107956]
* igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
- shard-skl: NOTRUN -> DMESG-WARN [fdo#107956]
* igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-b:
- {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] / [fdo#107956]
* igt@kms_ccs@pipe-a-crc-primary-rotation-180:
- {shard-iclb}: NOTRUN -> FAIL [fdo#107725] +6
* igt@kms_chv_cursor_fail@pipe-a-256x256-left-edge:
- shard-skl: PASS -> FAIL [fdo#104671]
* igt@kms_cursor_crc@cursor-256x256-onscreen:
- shard-glk: PASS -> FAIL [fdo#103232] +1
* igt@kms_cursor_crc@cursor-64x64-suspend:
- {shard-iclb}: NOTRUN -> FAIL [fdo#103232] +15
- shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232]
* igt@kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled:
- {shard-iclb}: NOTRUN -> WARN [fdo#108336]
* igt@kms_draw_crc@draw-method-xrgb8888-mmap-cpu-ytiled:
- shard-skl: PASS -> FAIL [fdo#107791]
* igt@kms_fbcon_fbt@psr-suspend:
- {shard-iclb}: NOTRUN -> FAIL [fdo#107882] +1
* igt@kms_frontbuffer_tracking@basic:
- {shard-iclb}: PASS -> FAIL [fdo#103167] +1
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-gtt:
- {shard-iclb}: NOTRUN -> DMESG-FAIL [fdo#107724] +14
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-apl: PASS -> FAIL [fdo#103167]
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
- {shard-iclb}: NOTRUN -> FAIL [fdo#103167] +4
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
- shard-glk: PASS -> FAIL [fdo#103167] +1
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu:
- shard-skl: PASS -> FAIL [fdo#105682] +1
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-cpu:
- shard-skl: PASS -> FAIL [fdo#103167]
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
- {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] / [fdo#108336] +17
* igt@kms_frontbuffer_tracking@psr-suspend:
- {shard-iclb}: PASS -> DMESG-FAIL [fdo#103167] / [fdo#107724]
* igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence:
- shard-skl: PASS -> FAIL [fdo#103191] / [fdo#107362]
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- shard-kbl: PASS -> INCOMPLETE [fdo#103665]
* igt@kms_plane@pixel-format-pipe-c-planes:
- shard-apl: PASS -> FAIL [fdo#103166] +1
- shard-glk: PASS -> FAIL [fdo#103166]
* igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
- {shard-iclb}: NOTRUN -> FAIL [fdo#103166] +1
* igt@kms_properties@connector-properties-atomic:
- {shard-iclb}: NOTRUN -> FAIL [fdo#108642]
* igt@kms_setmode@basic:
- {shard-iclb}: NOTRUN -> FAIL [fdo#99912]
* igt@kms_universal_plane@cursor-fb-leak-pipe-b:
- shard-kbl: PASS -> DMESG-WARN [fdo#103558] / [fdo#105602] +4
* igt@kms_universal_plane@universal-plane-gen9-features-pipe-a:
- {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] +40
* igt@pm_backlight@fade_with_suspend:
- {shard-iclb}: NOTRUN -> FAIL [fdo#107847]
* igt@pm_rpm@modeset-lpsp-stress:
- {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#108654] +1
* igt@pm_rpm@modeset-stress-extra-wait:
- shard-skl: PASS -> INCOMPLETE [fdo#107807] +1
* igt@pm_rpm@pc8-residency:
- shard-skl: SKIP -> INCOMPLETE [fdo#107807]
* igt@pm_rps@reset:
- {shard-iclb}: NOTRUN -> FAIL [fdo#102250] / [fdo#108059]
* igt@pm_rps@waitboost:
- {shard-iclb}: NOTRUN -> FAIL [fdo#108344]
* {igt@runner@aborted}:
- shard-snb: NOTRUN -> FAIL [fdo#108929]
#### Possible fixes ####
* igt@i915_suspend@debugfs-reader:
- shard-skl: INCOMPLETE [fdo#104108] -> PASS
* igt@kms_ccs@pipe-b-crc-sprite-planes-basic:
- shard-glk: FAIL [fdo#108145] -> PASS
* igt@kms_cursor_crc@cursor-256x256-suspend:
- shard-snb: DMESG-WARN [fdo#102365] -> PASS
* igt@kms_cursor_crc@cursor-64x21-random:
- shard-apl: FAIL [fdo#103232] -> PASS +5
* igt@kms_cursor_crc@cursor-64x64-random:
- shard-glk: FAIL [fdo#103232] -> PASS +1
* igt@kms_flip@dpms-off-confusion:
- {shard-iclb}: DMESG-WARN [fdo#108928] -> PASS +28
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
- shard-glk: FAIL [fdo#103167] -> PASS +1
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
- shard-apl: FAIL [fdo#103167] -> PASS +3
* igt@kms_lease@lease_unleased_crtc:
- shard-kbl: DMESG-WARN [fdo#103558] / [fdo#105602] -> PASS +4
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-apl: FAIL [fdo#103166] -> PASS +4
* igt@kms_setmode@basic:
- shard-apl: FAIL [fdo#99912] -> PASS
* igt@kms_vblank@pipe-c-query-busy:
- shard-apl: DMESG-WARN [fdo#103558] / [fdo#105602] -> PASS +34
* igt@perf@rc6-disable:
- shard-kbl: FAIL [fdo#103179] -> PASS
#### Warnings ####
* igt@i915_selftest@live_contexts:
- {shard-iclb}: INCOMPLETE [fdo#108315] -> DMESG-FAIL [fdo#108569]
* igt@i915_suspend@shrink:
- shard-glk: INCOMPLETE [fdo#103359] / [fdo#106886] / [k.org#198133] -> DMESG-WARN [fdo#108784]
* igt@kms_cursor_crc@cursor-256x256-random:
- shard-apl: DMESG-FAIL [fdo#103232] / [fdo#103558] / [fdo#105602] -> FAIL [fdo#103232]
* igt@kms_plane@pixel-format-pipe-a-planes:
- shard-skl: DMESG-FAIL [fdo#103166] / [fdo#106885] -> FAIL [fdo#103166]
* igt@kms_plane@pixel-format-pipe-c-planes:
- {shard-iclb}: DMESG-FAIL [fdo#103166] / [fdo#108928] -> FAIL [fdo#103166]
* igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:
- shard-apl: DMESG-FAIL [fdo#103558] / [fdo#105602] / [fdo#108145] -> FAIL [fdo#108145]
* igt@kms_sysfs_edid_timing:
- shard-apl: DMESG-FAIL [fdo#100047] / [fdo#103558] / [fdo#105602] -> FAIL [fdo#100047]
* {igt@runner@aborted}:
- {shard-iclb}: ( 35 FAIL ) [fdo#105702] / [fdo#108924] / [fdo#108928] -> FAIL [fdo#108654] / [fdo#108928]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047
[fdo#102250]: https://bugs.freedesktop.org/show_bug.cgi?id=102250
[fdo#102365]: https://bugs.freedesktop.org/show_bug.cgi?id=102365
[fdo#103158]: https://bugs.freedesktop.org/show_bug.cgi?id=103158
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103179]: https://bugs.freedesktop.org/show_bug.cgi?id=103179
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
[fdo#104671]: https://bugs.freedesktop.org/show_bug.cgi?id=104671
[fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
[fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682
[fdo#105702]: https://bugs.freedesktop.org/show_bug.cgi?id=105702
[fdo#106023]: https://bugs.freedesktop.org/show_bug.cgi?id=106023
[fdo#106641]: https://bugs.freedesktop.org/show_bug.cgi?id=106641
[fdo#106885]: https://bugs.freedesktop.org/show_bug.cgi?id=106885
[fdo#106886]: https://bugs.freedesktop.org/show_bug.cgi?id=106886
[fdo#106887]: https://bugs.freedesktop.org/show_bug.cgi?id=106887
[fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#107725]: https://bugs.freedesktop.org/show_bug.cgi?id=107725
[fdo#107791]: https://bugs.freedesktop.org/show_bug.cgi?id=107791
[fdo#107807]: https://bugs.freedesktop.org/show_bug.cgi?id=107807
[fdo#107815]: https://bugs.freedesktop.org/show_bug.cgi?id=107815
[fdo#107847]: https://bugs.freedesktop.org/show_bug.cgi?id=107847
[fdo#107882]: https://bugs.freedesktop.org/show_bug.cgi?id=107882
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108059]: https://bugs.freedesktop.org/show_bug.cgi?id=108059
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108228]: https://bugs.freedesktop.org/show_bug.cgi?id=108228
[fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315
[fdo#108336]: https://bugs.freedesktop.org/show_bug.cgi?id=108336
[fdo#108344]: https://bugs.freedesktop.org/show_bug.cgi?id=108344
[fdo#108470]: https://bugs.freedesktop.org/show_bug.cgi?id=108470
[fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
[fdo#108642]: https://bugs.freedesktop.org/show_bug.cgi?id=108642
[fdo#108654]: https://bugs.freedesktop.org/show_bug.cgi?id=108654
[fdo#108784]: https://bugs.freedesktop.org/show_bug.cgi?id=108784
[fdo#108924]: https://bugs.freedesktop.org/show_bug.cgi?id=108924
[fdo#108928]: https://bugs.freedesktop.org/show_bug.cgi?id=108928
[fdo#108929]: https://bugs.freedesktop.org/show_bug.cgi?id=108929
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
Participating hosts (7 -> 7)
------------------------------
No changes in participating hosts
Build changes
-------------
* Linux: CI_DRM_5251 -> Patchwork_11009
CI_DRM_5251: 683a5eff4f11e1451ae069e31af4899700684553 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4737: f7271fe4e12b564c25a44ca76ee82bb5e78601b6 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_11009: 5e81788273b5908a4f6837a60f3de3ccc1e1a6fa @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11009/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915/icl: fix transcoder state readout
2018-12-04 11:29 ` [PATCH] " Imre Deak
@ 2018-12-04 17:08 ` Jani Nikula
0 siblings, 0 replies; 5+ messages in thread
From: Jani Nikula @ 2018-12-04 17:08 UTC (permalink / raw)
To: imre.deak; +Cc: intel-gfx
On Tue, 04 Dec 2018, Imre Deak <imre.deak@intel.com> wrote:
> On Tue, Dec 04, 2018 at 12:19:26PM +0200, Jani Nikula wrote:
>> Commit 2ca711caeca2 ("drm/i915/icl: Consider DSI for getting transcoder
>> state") clobbers the previously read TRANS_DDI_FUNC_CTL_EDP register
>> contents with TRANS_DDI_FUNC_CTL_DSI0 contents. Fix the state readout,
>> and handle DSI 1 while at it.
>>
>> Use a bitmask for iterating and logging transcoders, because the allowed
>> combinations are a bit funky.
>>
>> Fixes: 2ca711caeca2 ("drm/i915/icl: Consider DSI for getting transcoder state")
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108928
>
>> Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
>> Cc: Madhav Chauhan <madhav.chauhan@intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>> drivers/gpu/drm/i915/intel_display.c | 48 ++++++++++++++++++++----------------
>> 1 file changed, 27 insertions(+), 21 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index a2584f977ab1..64b0ecd538fd 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -9476,13 +9476,18 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
>> struct drm_device *dev = crtc->base.dev;
>> struct drm_i915_private *dev_priv = to_i915(dev);
>> enum intel_display_power_domain power_domain;
>> + unsigned long panel_transcoder_mask = BIT(TRANSCODER_EDP);
>> + unsigned long enabled_panel_transcoders = 0;
>> + enum transcoder panel_transcoder;
>> u32 tmp;
>> - bool is_dsi = false;
>> - bool is_edp = false;
>> +
>> + if (IS_ICELAKE(dev_priv))
>> + panel_transcoder_mask |=
>> + BIT(TRANSCODER_DSI_0) | BIT(TRANSCODER_DSI_1);
>>
>> /*
>> * The pipe->transcoder mapping is fixed with the exception of the eDP
>> - * transcoder handled below.
>> + * and DSI transcoders handled below.
>> */
>> pipe_config->cpu_transcoder = (enum transcoder) crtc->pipe;
>>
>> @@ -9490,23 +9495,22 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
>> * XXX: Do intel_display_power_get_if_enabled before reading this (for
>> * consistency and less surprising code; it's in always on power).
>> */
>> - tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP));
>> - if (tmp & TRANS_DDI_FUNC_ENABLE)
>> - is_edp = true;
>> + for_each_set_bit(panel_transcoder, &panel_transcoder_mask, 32) {
>
> nit: BITS_PER_LONG or I915_MAX_TRANSCODERS?
>
>> + enum pipe trans_pipe;
>>
>> - if (IS_ICELAKE(dev_priv)) {
>> - tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_DSI_0));
>> - if (tmp & TRANS_DDI_FUNC_ENABLE)
>> - is_dsi = true;
>> - }
>> + tmp = I915_READ(TRANS_DDI_FUNC_CTL(panel_transcoder));
>> + if (!(tmp & TRANS_DDI_FUNC_ENABLE))
>> + continue;
>>
>> - WARN_ON(is_edp && is_dsi);
>> + /* Log all enabled ones, only use the first one */
>> + enabled_panel_transcoders |= BIT(panel_transcoder);
>> + if (enabled_panel_transcoders != BIT(panel_transcoder))
>> + continue;
>
>
> nit: As you explained for DSI dual mode both transcoders are needed and
> we don't support atm two separate DSI ports. A code comment about this
> would be nice. Maybe for the two DSI port case we should also warn below.
>
> With or without the nits:
> Reviewed-by: Imre Deak <imre.deak@intel.com>
Thanks, pushed with the comment added.
BR,
Jani.
>
>>
>> - if (is_edp || is_dsi) {
>> - enum pipe trans_pipe;
>> switch (tmp & TRANS_DDI_EDP_INPUT_MASK) {
>> default:
>> - WARN(1, "unknown pipe linked to edp transcoder\n");
>> + WARN(1, "unknown pipe linked to transcoder %s\n",
>> + transcoder_name(panel_transcoder));
>> /* fall through */
>> case TRANS_DDI_EDP_INPUT_A_ONOFF:
>> case TRANS_DDI_EDP_INPUT_A_ON:
>> @@ -9520,14 +9524,16 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
>> break;
>> }
>>
>> - if (trans_pipe == crtc->pipe) {
>> - if (is_edp)
>> - pipe_config->cpu_transcoder = TRANSCODER_EDP;
>> - else if (is_dsi)
>> - pipe_config->cpu_transcoder = TRANSCODER_DSI_0;
>> - }
>> + if (trans_pipe == crtc->pipe)
>> + pipe_config->cpu_transcoder = panel_transcoder;
>> }
>>
>> + /*
>> + * Valid combos: none, eDP, DSI0, DSI1, DSI0+DSI1
>> + */
>> + WARN_ON((enabled_panel_transcoders & BIT(TRANSCODER_EDP)) &&
>> + enabled_panel_transcoders != BIT(TRANSCODER_EDP));
>> +
>> power_domain = POWER_DOMAIN_TRANSCODER(pipe_config->cpu_transcoder);
>> if (!intel_display_power_get_if_enabled(dev_priv, power_domain))
>> return false;
>> --
>> 2.11.0
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-12-04 17:08 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-04 10:19 [PATCH] drm/i915/icl: fix transcoder state readout Jani Nikula
2018-12-04 11:11 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-12-04 11:29 ` [PATCH] " Imre Deak
2018-12-04 17:08 ` Jani Nikula
2018-12-04 14:54 ` ✓ Fi.CI.IGT: success for " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).