diff mbox

drm/i915: Refresh that status of MST capable connectors in ->detect()

Message ID 1477057478-29328-1-git-send-email-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ville Syrjala Oct. 21, 2016, 1:44 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Once we've determined that the sink is MST capable we never end up
running through the full detect cycle again, despite getting HPDs.
Fix tht by ripping out the incorrect piece of code responsible.

This got broken when I moved the long HPD handling to the ->detect()
hook, but failed to remove the leftover code.

Cc: Ander Conselvan de Oliveira <conselvan2@gmail.com>
Cc: drm-intel-fixes@lists.freedesktop.org
Cc: Rui Tiago Matos <tiagomatos@gmail.com>
Tested-by: Rui Tiago Matos <tiagomatos@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98323
Cc: Kirill A. Shutemov <kirill@shutemov.name>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98306
Fixes: 27d4efc5591a ("drm/i915: Move long hpd handling into the hotplug work")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 10 ----------
 1 file changed, 10 deletions(-)

Comments

Chris Wilson Oct. 21, 2016, 3:46 p.m. UTC | #1
On Fri, Oct 21, 2016 at 04:44:38PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Once we've determined that the sink is MST capable we never end up
> running through the full detect cycle again, despite getting HPDs.
> Fix tht by ripping out the incorrect piece of code responsible.

Ah, the missing magic is the call to intel_dp_configure_mst() right?

With that understood,
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Ville Syrjala Oct. 21, 2016, 3:56 p.m. UTC | #2
On Fri, Oct 21, 2016 at 04:46:38PM +0100, Chris Wilson wrote:
> On Fri, Oct 21, 2016 at 04:44:38PM +0300, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Once we've determined that the sink is MST capable we never end up
> > running through the full detect cycle again, despite getting HPDs.
> > Fix tht by ripping out the incorrect piece of code responsible.
> 
> Ah, the missing magic is the call to intel_dp_configure_mst() right?

Yeah, if the cable is still physically connected we do that. And if not
we'll take the earlier way out to inform the topology manager that
we're no longer doing MST.

> 
> With that understood,
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> -Chris
> 
> -- 
> Chris Wilson, Intel Open Source Technology Centre
Ville Syrjala Oct. 26, 2016, 8:15 a.m. UTC | #3
On Fri, Oct 21, 2016 at 02:17:00PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915: Refresh that status of MST capable connectors in ->detect()
> URL   : https://patchwork.freedesktop.org/series/14163/
> State : failure
> 
> == Summary ==
> 
> Series 14163v1 drm/i915: Refresh that status of MST capable connectors in ->detect()
> https://patchwork.freedesktop.org/api/1.0/series/14163/revisions/1/mbox/
> 
> Test drv_module_reload_basic:
>                 pass       -> DMESG-WARN (fi-skl-6700hq)
>                 pass       -> DMESG-WARN (fi-skl-6770hq)
> Test gem_busy:
>         Subgroup basic-hang-default:
>                 pass       -> DMESG-FAIL (fi-hsw-4770r)

[  109.661910] INFO: rcu_preempt detected stalls on CPUs/tasks:
[  109.661934] 	0-...: (4 GPs behind) idle=604/0/0 softirq=6034/6034 fqs=0 
[  109.661953] 	1-...: (2 GPs behind) idle=796/0/0 softirq=6234/6234 fqs=0 
[  109.661971] 	3-...: (9 GPs behind) idle=1e4/0/0 softirq=6061/6061 fqs=0 
[  109.661989] 	5-...: (1 GPs behind) idle=14a/0/0 softirq=6301/6302 fqs=0 
[  109.662007] 	7-...: (0 ticks this GP) idle=9cc/0/0 softirq=6015/6015 fqs=0 
[  109.662024] 	(detected by 2, t=65002 jiffies, g=2664, c=2663, q=271)
[  109.662047]  0000000000000020 ffffffff81e03e50 ffffffff8144d307 ffffffff81e03e80
[  109.662049]  ffffffff81815371 0000000000000004 ffffffff81ebbfe0 ffff88011ea22490
[  109.662050]  ffffffff81ebc178 ffffffff81e03ec8 ffffffff816af155 00000000000138c2
[  109.662052] Call Trace:
[  109.662057]  [<ffffffff8144d307>] ? debug_smp_processor_id+0x17/0x20
[  109.662059]  [<ffffffff81815371>] ? intel_idle+0x101/0x106
[  109.662061]  [<ffffffff816af155>] ? cpuidle_enter_state+0xf5/0x380
[  109.662062]  [<ffffffff816af402>] ? cpuidle_enter+0x12/0x20
[  109.662064]  [<ffffffff810cbd2e>] ? call_cpuidle+0x1e/0x40
[  109.662065]  [<ffffffff810cbf4b>] ? cpu_startup_entry+0x10b/0x1f0
[  109.662067]  [<ffffffff8180cc47>] ? rest_init+0x127/0x130
[  109.662070]  [<ffffffff81f77f08>] ? start_kernel+0x3f6/0x403
[  109.662072]  [<ffffffff81f7728f>] ? x86_64_start_reservations+0x2a/0x2c
[  109.662074]  [<ffffffff81f77404>] ? x86_64_start_kernel+0x173/0x186
...

Not sure what that was about. I don't think HSW has been show to suffer from
the "GPU hogs the bus when it hangs in a bad way" type of think we'd seen
with SNB/IVB?

> Test gem_exec_suspend:
>         Subgroup basic-s3:
>                 dmesg-warn -> PASS       (fi-skl-6700hq)
> Test kms_flip:
>         Subgroup basic-flip-vs-dpms:
>                 pass       -> DMESG-WARN (fi-skl-6770hq)

[  316.343964] [drm:skl_set_cdclk [i915]] *ERROR* failed to inform PCU about cdclk change

https://bugs.freedesktop.org/show_bug.cgi?id=97929

> Test kms_force_connector_basic:
>         Subgroup force-load-detect:
>                 pass       -> DMESG-WARN (fi-ivb-3770)

[  343.433798] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 181

https://bugs.freedesktop.org/show_bug.cgi?id=98228

> Test kms_pipe_crc_basic:
>         Subgroup suspend-read-crc-pipe-a:
>                 dmesg-warn -> PASS       (fi-skl-6700hq)
>         Subgroup suspend-read-crc-pipe-b:
>                 dmesg-warn -> PASS       (fi-skl-6700hq)
>         Subgroup suspend-read-crc-pipe-c:
>                 dmesg-warn -> PASS       (fi-skl-6700hq)
> 
> fi-bdw-5557u     total:246  pass:231  dwarn:0   dfail:0   fail:0   skip:15 
> fi-bsw-n3050     total:246  pass:204  dwarn:0   dfail:0   fail:0   skip:42 
> fi-bxt-t5700     total:246  pass:216  dwarn:0   dfail:0   fail:0   skip:30 
> fi-byt-j1900     total:246  pass:215  dwarn:0   dfail:0   fail:0   skip:31 
> fi-byt-n2820     total:246  pass:211  dwarn:0   dfail:0   fail:0   skip:35 
> fi-hsw-4770      total:246  pass:224  dwarn:0   dfail:0   fail:0   skip:22 
> fi-hsw-4770r     total:246  pass:223  dwarn:0   dfail:1   fail:0   skip:22 
> fi-ilk-650       total:246  pass:185  dwarn:0   dfail:0   fail:1   skip:60 
> fi-ivb-3520m     total:246  pass:221  dwarn:0   dfail:0   fail:0   skip:25 
> fi-ivb-3770      total:246  pass:220  dwarn:1   dfail:0   fail:0   skip:25 
> fi-kbl-7200u     total:246  pass:222  dwarn:0   dfail:0   fail:0   skip:24 
> fi-skl-6260u     total:246  pass:232  dwarn:0   dfail:0   fail:0   skip:14 
> fi-skl-6700hq    total:246  pass:222  dwarn:1   dfail:0   fail:0   skip:23 
> fi-skl-6700k     total:246  pass:222  dwarn:1   dfail:0   fail:0   skip:23 
> fi-skl-6770hq    total:246  pass:229  dwarn:3   dfail:0   fail:0   skip:14 
> fi-snb-2520m     total:246  pass:210  dwarn:0   dfail:0   fail:0   skip:36 
> fi-snb-2600      total:246  pass:209  dwarn:0   dfail:0   fail:0   skip:37 
> 
> Results at /archive/results/CI_IGT_test/Patchwork_2787/
> 
> 0af2197c61d3de189a02e400fb9cb8a900361b18 drm-intel-nightly: 2016y-10m-21d-13h-15m-26s UTC integration manifest
> 1008dc0 drm/i915: Refresh that status of MST capable connectors in ->detect()
Ville Syrjala Oct. 26, 2016, 8:57 a.m. UTC | #4
On Fri, Oct 21, 2016 at 04:46:38PM +0100, Chris Wilson wrote:
> On Fri, Oct 21, 2016 at 04:44:38PM +0300, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Once we've determined that the sink is MST capable we never end up
> > running through the full detect cycle again, despite getting HPDs.
> > Fix tht by ripping out the incorrect piece of code responsible.
> 
> Ah, the missing magic is the call to intel_dp_configure_mst() right?
> 
> With that understood,
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

Pushed to dinq. Thanks for the review.

> -Chris
> 
> -- 
> Chris Wilson, Intel Open Source Technology Centre
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f30db8f2425e..80db8a3ac38f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4492,21 +4492,11 @@  static enum drm_connector_status
 intel_dp_detect(struct drm_connector *connector, bool force)
 {
 	struct intel_dp *intel_dp = intel_attached_dp(connector);
-	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
-	struct intel_encoder *intel_encoder = &intel_dig_port->base;
 	enum drm_connector_status status = connector->status;
 
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
 		      connector->base.id, connector->name);
 
-	if (intel_dp->is_mst) {
-		/* MST devices are disconnected from a monitor POV */
-		intel_dp_unset_edid(intel_dp);
-		if (intel_encoder->type != INTEL_OUTPUT_EDP)
-			intel_encoder->type = INTEL_OUTPUT_DP;
-		return connector_status_disconnected;
-	}
-
 	/* If full detect is not performed yet, do a full detect */
 	if (!intel_dp->detect_done)
 		status = intel_dp_long_pulse(intel_dp->attached_connector);