drm/i915/icl: Add TypeC ports only if VBT is present

Submitted by Imre Deak on Jan. 25, 2019, 2:34 p.m.

Details

Message ID 20190125143441.15121-1-imre.deak@intel.com
State New
Headers show
Series "drm/i915/icl: Add TypeC ports only if VBT is present" ( rev: 1 ) in Intel GFX

Not browsing as part of any series.

Commit Message

Imre Deak Jan. 25, 2019, 2:34 p.m.
We can't safely probe Type C ports, whether they are a legacy or a
USB/Thunderbolt DP Alternate Type C port. This would require performing
the TypeC connect sequence - as described by the specification - but
that may have unwanted side-effects. These side-effects include at least
- without completeness - timeouts during AUX power well enabling and
subsequent PLL enabling errors.

To safely identify these ports we really need VBT, which has the proper
flag for this (ddi_vbt_port_info::supports_typec_usb, supports_tbt).
Based on the above disable Type C ports if we can't load VBT for some
reason.

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Jose Roberto de Souza <jose.souza@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/intel_bios.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 561a4f9f044c..270e7f0ad5cd 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1662,10 +1662,12 @@  init_vbt_missing_defaults(struct drm_i915_private *dev_priv)
 	for (port = PORT_A; port < I915_MAX_PORTS; port++) {
 		struct ddi_vbt_port_info *info =
 			&dev_priv->vbt.ddi_port_info[port];
+		bool is_tc_port = intel_port_is_tc(dev_priv, port);
 
-		info->supports_dvi = (port != PORT_A && port != PORT_E);
+		info->supports_dvi = (port != PORT_A && port != PORT_E &&
+				      !is_tc_port);
 		info->supports_hdmi = info->supports_dvi;
-		info->supports_dp = (port != PORT_E);
+		info->supports_dp = (port != PORT_E && !is_tc_port);
 	}
 }
 

Comments

On Fri, Jan 25, 2019 at 03:49:07PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915/icl: Add TypeC ports only if VBT is present
> URL   : https://patchwork.freedesktop.org/series/55733/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_5484 -> Patchwork_12040
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with Patchwork_12040 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in Patchwork_12040, 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/55733/revisions/1/mbox/
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in Patchwork_12040:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@gem_exec_suspend@basic-s3:
>     - fi-icl-y:           NOTRUN -> DMESG-WARN

Starting with a state mismatch error after:
<7>[   93.724187] [drm:pipe_config_err [i915]] mismatch in cpu_transcoder (expected 0, found 3)
<7>[   93.724221] [drm:pipe_config_err [i915]] mismatch in lane_count (expected 0, found 2)
...
and then
<3>[   97.765551] [drm:intel_dp_start_link_train [i915]] *ERROR* failed to enable link training

but more importantly after this patch the status changed from NOTRUN to
runnable. So far no tests were run on this machine due to a kernel taint
during boot:
<4>[   10.967912] WARN_ON(dig_port->tc_legacy_port)

This patch gets rid of the above WARN and taint, so the tests will be run.

> 
>   * igt@i915_selftest@live_contexts:
>     - fi-icl-y:           NOTRUN -> DMESG-FAIL

This is in existing issue seen on all ICLs.

>   * igt@i915_selftest@live_hangcheck:
>     - fi-kbl-r:           PASS -> INCOMPLETE

Unrelated platform.

>     - fi-icl-y:           NOTRUN -> INCOMPLETE

Not sure if this one is seen on other ICLs, but it's a GEM test and
looks unrelated to the change in this patch.

> 
>   
> #### Suppressed ####
> 
>   The following results come from untrusted machines, tests, or statuses.
>   They do not affect the overall result.
> 
>   * igt@kms_flip@basic-flip-vs-modeset:
>     - fi-icl-y:           NOTRUN -> {SKIP} +79
> 
>   
> Known issues
> ------------
> 
>   Here are the changes found in Patchwork_12040 that come from known issues:
> 
> ### IGT changes ###
> 
> #### Issues hit ####
> 
>   * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
>     - fi-byt-clapper:     PASS -> FAIL [fdo#103191] / [fdo#107362] +1
> 
>   * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
>     - fi-blb-e6850:       PASS -> INCOMPLETE [fdo#107718]
> 
>   
> #### Possible fixes ####
> 
>   * igt@kms_busy@basic-flip-b:
>     - fi-gdg-551:         FAIL [fdo#103182] -> PASS
> 
>   
>   {name}: This element is suppressed. This means it is ignored when computing
>           the status of the difference (SUCCESS, WARNING, or FAILURE).
> 
>   [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
>   [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
>   [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
>   [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
>   [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
>   [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
> 
> 
> Participating hosts (44 -> 41)
> ------------------------------
> 
>   Additional (1): fi-bsw-n3050 
>   Missing    (4): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan 
> 
> 
> Build changes
> -------------
> 
>     * Linux: CI_DRM_5484 -> Patchwork_12040
> 
>   CI_DRM_5484: 9f66ac94341eb12501097f9f8991c86aee70981c @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGT_4790: dcdf4b04e16312f8f52ad389388d834f9d74b8f0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
>   Patchwork_12040: 4165b2121372a06987a76a8291b95eacb204f212 @ git://anongit.freedesktop.org/gfx-ci/linux
> 
> 
> == Linux commits ==
> 
> 4165b2121372 drm/i915/icl: Add TypeC ports only if VBT is present
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12040/
On Fri, 2019-01-25 at 16:34 +0200, Imre Deak wrote:
> We can't safely probe Type C ports, whether they are a legacy or a
> USB/Thunderbolt DP Alternate Type C port. This would require
> performing
> the TypeC connect sequence - as described by the specification - but
> that may have unwanted side-effects. These side-effects include at
> least
> - without completeness - timeouts during AUX power well enabling and
> subsequent PLL enabling errors.
> 

Makes sense, behaps there is a bug open with this timeouts and errors
to link to?

> To safely identify these ports we really need VBT, which has the
> proper
> flag for this (ddi_vbt_port_info::supports_typec_usb, supports_tbt).
> Based on the above disable Type C ports if we can't load VBT for some
> reason.


Reviewed-by: José Roberto de Souza <jose.souza@intel.com>

> 
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Cc: Jose Roberto de Souza <jose.souza@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_bios.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_bios.c
> b/drivers/gpu/drm/i915/intel_bios.c
> index 561a4f9f044c..270e7f0ad5cd 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -1662,10 +1662,12 @@ init_vbt_missing_defaults(struct
> drm_i915_private *dev_priv)
>  	for (port = PORT_A; port < I915_MAX_PORTS; port++) {
>  		struct ddi_vbt_port_info *info =
>  			&dev_priv->vbt.ddi_port_info[port];
> +		bool is_tc_port = intel_port_is_tc(dev_priv, port);

Nit:

if (intel_port_is_tc(dev_priv, port))
	continue;

instead?

>  
> -		info->supports_dvi = (port != PORT_A && port !=
> PORT_E);
> +		info->supports_dvi = (port != PORT_A && port != PORT_E
> &&
> +				      !is_tc_port);
>  		info->supports_hdmi = info->supports_dvi;
> -		info->supports_dp = (port != PORT_E);
> +		info->supports_dp = (port != PORT_E && !is_tc_port);
>  	}
>  }
>
On Fri, Jan 25, 2019 at 11:16:08PM +0200, Souza, Jose wrote:
> On Fri, 2019-01-25 at 16:34 +0200, Imre Deak wrote:
> > We can't safely probe Type C ports, whether they are a legacy or a
> > USB/Thunderbolt DP Alternate Type C port. This would require
> > performing
> > the TypeC connect sequence - as described by the specification - but
> > that may have unwanted side-effects. These side-effects include at
> > least
> > - without completeness - timeouts during AUX power well enabling and
> > subsequent PLL enabling errors.
> > 
> 
> Makes sense, behaps there is a bug open with this timeouts and errors
> to link to?

There's no specific bug for these issues as we don't try to detect the
mode.

> 
> > To safely identify these ports we really need VBT, which has the
> > proper
> > flag for this (ddi_vbt_port_info::supports_typec_usb, supports_tbt).
> > Based on the above disable Type C ports if we can't load VBT for some
> > reason.
> 
> 
> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
> 
> > 
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > Cc: Jose Roberto de Souza <jose.souza@intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_bios.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_bios.c
> > b/drivers/gpu/drm/i915/intel_bios.c
> > index 561a4f9f044c..270e7f0ad5cd 100644
> > --- a/drivers/gpu/drm/i915/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/intel_bios.c
> > @@ -1662,10 +1662,12 @@ init_vbt_missing_defaults(struct
> > drm_i915_private *dev_priv)
> >  	for (port = PORT_A; port < I915_MAX_PORTS; port++) {
> >  		struct ddi_vbt_port_info *info =
> >  			&dev_priv->vbt.ddi_port_info[port];
> > +		bool is_tc_port = intel_port_is_tc(dev_priv, port);
> 
> Nit:
> 
> if (intel_port_is_tc(dev_priv, port))
> 	continue;
> 
> instead?

Yep, makes sense, thanks for noticing.

> 
> >  
> > -		info->supports_dvi = (port != PORT_A && port !=
> > PORT_E);
> > +		info->supports_dvi = (port != PORT_A && port != PORT_E
> > &&
> > +				      !is_tc_port);
> >  		info->supports_hdmi = info->supports_dvi;
> > -		info->supports_dp = (port != PORT_E);
> > +		info->supports_dp = (port != PORT_E && !is_tc_port);
> >  	}
> >  }
> >
On Mon, Jan 28, 2019 at 08:29:51PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915/icl: Add TypeC ports only if VBT is present (rev2)
> URL   : https://patchwork.freedesktop.org/series/55733/
> State : success

Pushed to -dinq, thanks for the review.

> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_5494_full -> Patchwork_12058_full
> ====================================================
> 
> Summary
> -------
> 
>   **SUCCESS**
> 
>   No regressions found.
> 
>   
> 
> Known issues
> ------------
> 
>   Here are the changes found in Patchwork_12058_full that come from known issues:
> 
> ### IGT changes ###
> 
> #### Issues hit ####
> 
>   * igt@gem_eio@in-flight-contexts-10ms:
>     - shard-apl:          NOTRUN -> DMESG-WARN [fdo#109467]
> 
>   * igt@gem_eio@wait-immediate:
>     - shard-kbl:          PASS -> FAIL [fdo#105957]
> 
>   * igt@kms_available_modes_crc@available_mode_test_crc:
>     - shard-apl:          PASS -> FAIL [fdo#106641]
> 
>   * igt@kms_ccs@pipe-b-crc-sprite-planes-basic:
>     - shard-glk:          PASS -> FAIL [fdo#108145]
> 
>   * igt@kms_plane_multiple@atomic-pipe-b-tiling-x:
>     - shard-hsw:          PASS -> DMESG-WARN [fdo#102614]
> 
>   * igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
>     - shard-glk:          PASS -> FAIL [fdo#103166] +2
> 
>   * igt@prime_vgem@basic-fence-flip:
>     - shard-kbl:          PASS -> FAIL [fdo#104008]
> 
>   
> #### Possible fixes ####
> 
>   * igt@kms_cursor_crc@cursor-64x21-sliding:
>     - shard-apl:          FAIL [fdo#103232] -> PASS
> 
>   * igt@kms_flip@flip-vs-expired-vblank:
>     - shard-apl:          INCOMPLETE [fdo#103927] -> PASS
> 
>   * igt@kms_plane@plane-position-covered-pipe-a-planes:
>     - shard-glk:          FAIL [fdo#103166] -> PASS
> 
>   * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
>     - shard-glk:          FAIL [fdo#108145] -> PASS
> 
>   * igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
>     - shard-apl:          FAIL [fdo#103166] -> PASS +2
> 
>   * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
>     - shard-kbl:          FAIL [fdo#109016] -> PASS
> 
>   * igt@kms_vblank@pipe-b-ts-continuation-modeset-hang:
>     - shard-snb:          {SKIP} [fdo#109271] -> PASS
> 
>   * igt@prime_busy@hang-bsd:
>     - shard-hsw:          FAIL [fdo#108807] -> PASS
> 
>   
> #### Warnings ####
> 
>   * igt@gem_eio@in-flight-immediate:
>     - shard-kbl:          DMESG-FAIL [fdo#109467] -> DMESG-WARN [fdo#109467]
> 
>   
>   {name}: This element is suppressed. This means it is ignored when computing
>           the status of the difference (SUCCESS, WARNING, or FAILURE).
> 
>   [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
>   [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
>   [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
>   [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
>   [fdo#104008]: https://bugs.freedesktop.org/show_bug.cgi?id=104008
>   [fdo#105957]: https://bugs.freedesktop.org/show_bug.cgi?id=105957
>   [fdo#106641]: https://bugs.freedesktop.org/show_bug.cgi?id=106641
>   [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
>   [fdo#108807]: https://bugs.freedesktop.org/show_bug.cgi?id=108807
>   [fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
>   [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
>   [fdo#109467]: https://bugs.freedesktop.org/show_bug.cgi?id=109467
> 
> 
> Participating hosts (6 -> 5)
> ------------------------------
> 
>   Missing    (1): shard-skl 
> 
> 
> Build changes
> -------------
> 
>     * Linux: CI_DRM_5494 -> Patchwork_12058
> 
>   CI_DRM_5494: 543c074ff6a401b2bca5333234a9c13c4b0a5152 @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGT_4795: 031715e369cf01aecbe293910211e80e51995ffb @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
>   Patchwork_12058: cfbebb24056d36048d2eef0c934c85ef4a4695c0 @ 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_12058/