* [PATCH] drm/i915: Don't send MST hotplugs until after resume
@ 2019-01-26 1:24 ` Lyude Paul
0 siblings, 0 replies; 9+ messages in thread
From: Lyude Paul @ 2019-01-26 1:24 UTC (permalink / raw)
To: intel-gfx
Cc: Todd Previte, Dave Airlie, Jani Nikula, Joonas Lahtinen,
Rodrigo Vivi, stable, David Airlie, Daniel Vetter, dri-devel,
linux-kernel
Turns out we are sending a lot more hotplug events then we need, and
this is causing some pretty serious issues. Currently, we call
intel_dp_mst_resume() in i915_drm_resume() well before we have any sort
of hotplugging setup. This is a pretty big problem, because in practice
it will generally result in throwing the power domain refcounts out of
wack.
For instance: On my T480s, removing a previously connected topology
before the system finishes resuming causes
drm_kms_helper_hotplug_event() to be called before HPD is setup again,
which causes us to do a connector reprobe, which then causes
intel_dp_detect() to be called on all DP devices -including- the eDP
display. From there, intel_dp_detect() is run on the eDP display which
triggers DPCD transactions. Those DPCD transactions then cause us to
call edp_panel_vdd_on(), which then causes us to grab an additional
wakeref to the relevant power wells (PORT_DDI_A_IO on this machine).
From there, this wakeref is never released which then causes the next
suspend/resume cycle to entirely fail due to the hardware not being
powered off correctly.
This sucks really badly, and I don't see any decent way to actually fix
this in intel_dp_detect() easily. Additionally, I don't even think it'd
be worth the time now since we're not expecting to handle any kind of
connector reprobing at the point in which we call intel_dp_mst_resume(),
but we also can't move intel_dp_mst_resume() any higher in the resume
process since MST topologies need to be resumed before
intel_display_resume() is called.
However, there's a light at the end of the tunnel! After reading through
a lot of code dozens of times, it occurred to me that we -never-
actually need to send hotplug events when calling
drm_dp_mst_topology_mgr_set_mst() since we send hotplug events in
drm_dp_destroy_connector_work(). Imagine that!
So, since we only seem to call intel_dp_mst_check_status() to disable
MST on the encoder in question and then send a hotplug, get rid of this
and instead just disable MST mode when a hub fails in
intel_dp_mst_resume(). From there, drm_dp_destroy_connector_work() will
eventually send the hotplug event.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Fixes: 0e32b39ceed6 ("drm/i915: add DP 1.2 MST support (v0.7)")
Cc: Todd Previte <tprevite@gmail.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v3.17+
---
drivers/gpu/drm/i915/intel_dp.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 681e88405ada..c2399acf177b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -7096,7 +7096,10 @@ void intel_dp_mst_resume(struct drm_i915_private *dev_priv)
continue;
ret = drm_dp_mst_topology_mgr_resume(&intel_dp->mst_mgr);
- if (ret)
- intel_dp_check_mst_status(intel_dp);
+ if (ret) {
+ intel_dp->is_mst = false;
+ drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
+ false);
+ }
}
}
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH] drm/i915: Don't send MST hotplugs until after resume
@ 2019-01-26 1:24 ` Lyude Paul
0 siblings, 0 replies; 9+ messages in thread
From: Lyude Paul @ 2019-01-26 1:24 UTC (permalink / raw)
To: intel-gfx
Cc: Todd Previte, Dave Airlie, Jani Nikula, Joonas Lahtinen,
Rodrigo Vivi, stable, David Airlie, Daniel Vetter, dri-devel,
linux-kernel
Turns out we are sending a lot more hotplug events then we need, and
this is causing some pretty serious issues. Currently, we call
intel_dp_mst_resume() in i915_drm_resume() well before we have any sort
of hotplugging setup. This is a pretty big problem, because in practice
it will generally result in throwing the power domain refcounts out of
wack.
For instance: On my T480s, removing a previously connected topology
before the system finishes resuming causes
drm_kms_helper_hotplug_event() to be called before HPD is setup again,
which causes us to do a connector reprobe, which then causes
intel_dp_detect() to be called on all DP devices -including- the eDP
display. From there, intel_dp_detect() is run on the eDP display which
triggers DPCD transactions. Those DPCD transactions then cause us to
call edp_panel_vdd_on(), which then causes us to grab an additional
wakeref to the relevant power wells (PORT_DDI_A_IO on this machine).
>From there, this wakeref is never released which then causes the next
suspend/resume cycle to entirely fail due to the hardware not being
powered off correctly.
This sucks really badly, and I don't see any decent way to actually fix
this in intel_dp_detect() easily. Additionally, I don't even think it'd
be worth the time now since we're not expecting to handle any kind of
connector reprobing at the point in which we call intel_dp_mst_resume(),
but we also can't move intel_dp_mst_resume() any higher in the resume
process since MST topologies need to be resumed before
intel_display_resume() is called.
However, there's a light at the end of the tunnel! After reading through
a lot of code dozens of times, it occurred to me that we -never-
actually need to send hotplug events when calling
drm_dp_mst_topology_mgr_set_mst() since we send hotplug events in
drm_dp_destroy_connector_work(). Imagine that!
So, since we only seem to call intel_dp_mst_check_status() to disable
MST on the encoder in question and then send a hotplug, get rid of this
and instead just disable MST mode when a hub fails in
intel_dp_mst_resume(). From there, drm_dp_destroy_connector_work() will
eventually send the hotplug event.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Fixes: 0e32b39ceed6 ("drm/i915: add DP 1.2 MST support (v0.7)")
Cc: Todd Previte <tprevite@gmail.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v3.17+
---
drivers/gpu/drm/i915/intel_dp.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 681e88405ada..c2399acf177b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -7096,7 +7096,10 @@ void intel_dp_mst_resume(struct drm_i915_private *dev_priv)
continue;
ret = drm_dp_mst_topology_mgr_resume(&intel_dp->mst_mgr);
- if (ret)
- intel_dp_check_mst_status(intel_dp);
+ if (ret) {
+ intel_dp->is_mst = false;
+ drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
+ false);
+ }
}
}
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915: Don't send MST hotplugs until after resume
2019-01-26 1:24 ` Lyude Paul
(?)
@ 2019-01-26 2:40 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2019-01-26 2:40 UTC (permalink / raw)
To: Lyude Paul; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Don't send MST hotplugs until after resume
URL : https://patchwork.freedesktop.org/series/55763/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5488 -> Patchwork_12049
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/55763/revisions/1/mbox/
Known issues
------------
Here are the changes found in Patchwork_12049 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g: PASS -> DMESG-WARN [fdo#108965]
* igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] +1
#### Possible fixes ####
* igt@kms_busy@basic-flip-a:
- fi-gdg-551: FAIL [fdo#103182] -> PASS
* igt@kms_chamelium@dp-edid-read:
- fi-kbl-7500u: WARN -> PASS
* igt@kms_pipe_crc_basic@read-crc-pipe-a:
- fi-byt-clapper: FAIL [fdo#107362] -> PASS
* igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +1
* igt@pm_rpm@module-reload:
- fi-skl-6770hq: FAIL [fdo#108511] -> 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#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
[fdo#108654]: https://bugs.freedesktop.org/show_bug.cgi?id=108654
[fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
Participating hosts (44 -> 40)
------------------------------
Missing (4): fi-kbl-soraka fi-ilk-m540 fi-byt-squawks fi-bsw-cyan
Build changes
-------------
* Linux: CI_DRM_5488 -> Patchwork_12049
CI_DRM_5488: f13eede6ea3e780d900c5220bf09d764a80a3a8f @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4790: dcdf4b04e16312f8f52ad389388d834f9d74b8f0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_12049: 1418cd83041b37deeb0d3d383c3ed492231a9d0b @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
1418cd83041b drm/i915: Don't send MST hotplugs until after resume
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12049/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* ✗ Fi.CI.IGT: failure for drm/i915: Don't send MST hotplugs until after resume
2019-01-26 1:24 ` Lyude Paul
(?)
(?)
@ 2019-01-26 7:18 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2019-01-26 7:18 UTC (permalink / raw)
To: Lyude Paul; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Don't send MST hotplugs until after resume
URL : https://patchwork.freedesktop.org/series/55763/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_5488_full -> Patchwork_12049_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_12049_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_12049_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_12049_full:
### IGT changes ###
#### Possible regressions ####
* igt@prime_busy@hang-render:
- shard-hsw: PASS -> FAIL
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* {igt@runner@aborted}:
- shard-kbl: ( 5 FAIL ) -> ( 4 FAIL )
Known issues
------------
Here are the changes found in Patchwork_12049_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_isolation@bcs0-s3:
- shard-kbl: PASS -> INCOMPLETE [fdo#103665]
* igt@kms_busy@extended-modeset-hang-newfb-render-a:
- shard-snb: NOTRUN -> DMESG-WARN [fdo#107956]
* igt@kms_color@pipe-a-degamma:
- shard-apl: PASS -> FAIL [fdo#104782] / [fdo#108145]
* igt@kms_cursor_crc@cursor-256x256-random:
- shard-glk: PASS -> FAIL [fdo#103232]
* igt@kms_cursor_crc@cursor-64x64-dpms:
- shard-apl: PASS -> FAIL [fdo#103232] +3
* igt@kms_flip@modeset-vs-vblank-race:
- shard-glk: PASS -> FAIL [fdo#103060]
* igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb:
- shard-kbl: NOTRUN -> FAIL [fdo#108145]
* igt@kms_plane_multiple@atomic-pipe-b-tiling-none:
- shard-glk: PASS -> FAIL [fdo#103166] +1
#### Possible fixes ####
* igt@kms_color@pipe-c-degamma:
- shard-apl: FAIL [fdo#104782] -> PASS
* igt@kms_cursor_crc@cursor-64x21-onscreen:
- shard-glk: FAIL [fdo#103232] -> PASS
* igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
- shard-glk: FAIL [fdo#103166] -> PASS +1
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-apl: FAIL [fdo#103166] -> PASS +2
#### Warnings ####
* igt@i915_suspend@shrink:
- shard-snb: INCOMPLETE [fdo#105411] / [fdo#106886] -> DMESG-WARN [fdo#109244]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103060]: https://bugs.freedesktop.org/show_bug.cgi?id=103060
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
[fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411
[fdo#106886]: https://bugs.freedesktop.org/show_bug.cgi?id=106886
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#109244]: https://bugs.freedesktop.org/show_bug.cgi?id=109244
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
Participating hosts (7 -> 5)
------------------------------
Missing (2): shard-skl shard-iclb
Build changes
-------------
* Linux: CI_DRM_5488 -> Patchwork_12049
CI_DRM_5488: f13eede6ea3e780d900c5220bf09d764a80a3a8f @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4790: dcdf4b04e16312f8f52ad389388d834f9d74b8f0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_12049: 1418cd83041b37deeb0d3d383c3ed492231a9d0b @ 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_12049/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915: Don't send MST hotplugs until after resume (rev2)
2019-01-26 1:24 ` Lyude Paul
` (2 preceding siblings ...)
(?)
@ 2019-01-26 23:49 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2019-01-26 23:49 UTC (permalink / raw)
To: Lyude Paul; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Don't send MST hotplugs until after resume (rev2)
URL : https://patchwork.freedesktop.org/series/55763/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5489 -> Patchwork_12053
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/55763/revisions/2/mbox/
Known issues
------------
Here are the changes found in Patchwork_12053 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_busy@basic-flip-b:
- fi-bxt-j4205: PASS -> FAIL [fdo#103182]
* igt@kms_frontbuffer_tracking@basic:
- fi-byt-clapper: PASS -> FAIL [fdo#103167]
* igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362]
#### Possible fixes ####
* igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +1
* igt@pm_rpm@module-reload:
- fi-skl-6770hq: FAIL [fdo#108511] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[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#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
[fdo#108915]: https://bugs.freedesktop.org/show_bug.cgi?id=108915
Participating hosts (42 -> 39)
------------------------------
Additional (1): fi-icl-y
Missing (4): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-bdw-samus
Build changes
-------------
* Linux: CI_DRM_5489 -> Patchwork_12053
CI_DRM_5489: 08f37be937e0f3c2904d4250b0858e9ea9d72623 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4790: dcdf4b04e16312f8f52ad389388d834f9d74b8f0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_12053: 0cd82ab105fd225cf3ede5b1845dbcd24387a1ef @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
0cd82ab105fd drm/i915: Don't send MST hotplugs until after resume
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12053/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* ✗ Fi.CI.IGT: failure for drm/i915: Don't send MST hotplugs until after resume (rev2)
2019-01-26 1:24 ` Lyude Paul
` (3 preceding siblings ...)
(?)
@ 2019-01-27 0:42 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2019-01-27 0:42 UTC (permalink / raw)
To: Lyude Paul; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Don't send MST hotplugs until after resume (rev2)
URL : https://patchwork.freedesktop.org/series/55763/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_5489_full -> Patchwork_12053_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_12053_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_12053_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_12053_full:
### IGT changes ###
#### Possible regressions ####
* igt@prime_busy@hang-vebox:
- shard-hsw: PASS -> FAIL
#### Warnings ####
* igt@gem_eio@in-flight-contexts-10ms:
- shard-glk: DMESG-WARN -> DMESG-FAIL
Known issues
------------
Here are the changes found in Patchwork_12053_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_eio@in-flight-internal-1us:
- shard-glk: PASS -> FAIL [fdo#107799]
* igt@kms_cursor_crc@cursor-128x128-suspend:
- shard-glk: PASS -> INCOMPLETE [fdo#103359] / [k.org#198133]
* igt@kms_cursor_crc@cursor-64x21-sliding:
- shard-apl: PASS -> FAIL [fdo#103232]
* igt@kms_cursor_crc@cursor-64x64-suspend:
- shard-glk: PASS -> FAIL [fdo#103232] +1
* igt@kms_plane@plane-position-covered-pipe-c-planes:
- shard-apl: PASS -> FAIL [fdo#103166] +1
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-glk: PASS -> FAIL [fdo#103166]
* igt@kms_setmode@basic:
- shard-apl: PASS -> FAIL [fdo#99912]
- shard-hsw: PASS -> FAIL [fdo#99912]
#### Possible fixes ####
* igt@gem_eio@in-flight-suspend:
- shard-snb: FAIL [fdo#103375] -> PASS
* igt@kms_cursor_crc@cursor-128x128-suspend:
- shard-apl: FAIL [fdo#103191] / [fdo#103232] -> PASS
* igt@kms_cursor_crc@cursor-256x256-random:
- shard-glk: FAIL [fdo#103232] -> PASS
* igt@kms_flip@2x-flip-vs-expired-vblank:
- shard-hsw: FAIL [fdo#102887] -> PASS
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
- shard-glk: FAIL [fdo#105363] -> PASS
* igt@kms_flip@modeset-vs-vblank-race:
- shard-glk: FAIL [fdo#103060] -> PASS
* igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
- shard-glk: FAIL [fdo#103166] -> PASS
* igt@kms_plane_multiple@atomic-pipe-c-tiling-y:
- shard-apl: FAIL [fdo#103166] -> PASS
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-apl: DMESG-FAIL [fdo#108950] -> PASS
* igt@prime_vgem@fence-wait-bsd:
- shard-apl: INCOMPLETE [fdo#103927] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#102887]: https://bugs.freedesktop.org/show_bug.cgi?id=102887
[fdo#103060]: https://bugs.freedesktop.org/show_bug.cgi?id=103060
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[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#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
[fdo#107799]: https://bugs.freedesktop.org/show_bug.cgi?id=107799
[fdo#108950]: https://bugs.freedesktop.org/show_bug.cgi?id=108950
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109373]: https://bugs.freedesktop.org/show_bug.cgi?id=109373
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
[k.org#202321]: https://bugzilla.kernel.org/show_bug.cgi?id=202321
Participating hosts (7 -> 5)
------------------------------
Missing (2): shard-skl shard-iclb
Build changes
-------------
* Linux: CI_DRM_5489 -> Patchwork_12053
CI_DRM_5489: 08f37be937e0f3c2904d4250b0858e9ea9d72623 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4790: dcdf4b04e16312f8f52ad389388d834f9d74b8f0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_12053: 0cd82ab105fd225cf3ede5b1845dbcd24387a1ef @ 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_12053/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Don't send MST hotplugs until after resume
2019-01-26 1:24 ` Lyude Paul
` (4 preceding siblings ...)
(?)
@ 2019-01-28 12:44 ` Imre Deak
-1 siblings, 0 replies; 9+ messages in thread
From: Imre Deak @ 2019-01-28 12:44 UTC (permalink / raw)
To: Lyude Paul
Cc: intel-gfx, Todd Previte, David Airlie, dri-devel, linux-kernel,
stable, Dave Airlie
On Fri, Jan 25, 2019 at 08:24:35PM -0500, Lyude Paul wrote:
> Turns out we are sending a lot more hotplug events then we need, and
> this is causing some pretty serious issues. Currently, we call
> intel_dp_mst_resume() in i915_drm_resume() well before we have any sort
> of hotplugging setup.
We call hpd_irq_setup() before calling intel_dp_mst_resume(). The only
purpose of that part (lifted out from intel_hpd_init()) is to provide
the short HPD interrupt functionality MST AUX transfers need.
But you are right in that - as a side-effect - we'll also enable generic
hotplug functionality that is independent of the above MST requirement.
Doing that kind of generic hotplug processing before
intel_display_resume() is probably not a good idea, it can interfere at
least with the mode restore in __intel_display_resume().
> This is a pretty big problem, because in practice it will generally
> result in throwing the power domain refcounts out of wack.
>
> For instance: On my T480s, removing a previously connected topology
> before the system finishes resuming causes
> drm_kms_helper_hotplug_event() to be called before HPD is setup again,
> which causes us to do a connector reprobe, which then causes
> intel_dp_detect() to be called on all DP devices -including- the eDP
> display. From there, intel_dp_detect() is run on the eDP display which
> triggers DPCD transactions. Those DPCD transactions then cause us to
> call edp_panel_vdd_on(), which then causes us to grab an additional
> wakeref to the relevant power wells (PORT_DDI_A_IO on this machine).
> From there, this wakeref is never released which then causes the next
> suspend/resume cycle to entirely fail due to the hardware not being
> powered off correctly.
>
> This sucks really badly, and I don't see any decent way to actually fix
> this in intel_dp_detect() easily. Additionally, I don't even think it'd
> be worth the time now since we're not expecting to handle any kind of
> connector reprobing at the point in which we call intel_dp_mst_resume(),
> but we also can't move intel_dp_mst_resume() any higher in the resume
> process since MST topologies need to be resumed before
> intel_display_resume() is called.
>
> However, there's a light at the end of the tunnel! After reading through
> a lot of code dozens of times, it occurred to me that we -never-
> actually need to send hotplug events when calling
> drm_dp_mst_topology_mgr_set_mst() since we send hotplug events in
> drm_dp_destroy_connector_work(). Imagine that!
>
> So, since we only seem to call intel_dp_mst_check_status() to disable
> MST on the encoder in question and then send a hotplug, get rid of this
> and instead just disable MST mode when a hub fails in
> intel_dp_mst_resume(). From there, drm_dp_destroy_connector_work() will
> eventually send the hotplug event.
>
> Signed-off-by: Lyude Paul <lyude@redhat.com>
> Fixes: 0e32b39ceed6 ("drm/i915: add DP 1.2 MST support (v0.7)")
> Cc: Todd Previte <tprevite@gmail.com>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v3.17+
Not knowing enough about the MST code, but we do need to prevent
generic hotplug processing at this point:
Acked-by: Imre Deak <imre.deak@intel.com>
> ---
> drivers/gpu/drm/i915/intel_dp.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 681e88405ada..c2399acf177b 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -7096,7 +7096,10 @@ void intel_dp_mst_resume(struct drm_i915_private *dev_priv)
> continue;
>
> ret = drm_dp_mst_topology_mgr_resume(&intel_dp->mst_mgr);
> - if (ret)
> - intel_dp_check_mst_status(intel_dp);
> + if (ret) {
> + intel_dp->is_mst = false;
> + drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
> + false);
> + }
> }
> }
> --
> 2.20.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] drm/i915: Don't send MST hotplugs until after resume
2019-01-26 1:24 ` Lyude Paul
` (5 preceding siblings ...)
(?)
@ 2019-01-29 0:35 ` Sasha Levin
-1 siblings, 0 replies; 9+ messages in thread
From: Sasha Levin @ 2019-01-29 0:35 UTC (permalink / raw)
To: Sasha Levin, Lyude Paul; +Cc: Todd Previte, intel-gfx, stable, Dave Airlie
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 0e32b39ceed6 drm/i915: add DP 1.2 MST support (v0.7).
The bot has tested the following trees: v4.20.5, v4.19.18, v4.14.96, v4.9.153, v4.4.172, v3.18.133.
v4.20.5: Build OK!
v4.19.18: Build OK!
v4.14.96: Failed to apply! Possible dependencies:
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
v4.9.153: Failed to apply! Possible dependencies:
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
v4.4.172: Failed to apply! Possible dependencies:
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
61642ff03523 ("drm/i915: Inspect subunit states on hangcheck")
ca82580c9cea ("drm/i915: Do not call API requiring struct_mutex where it is not available")
cbdc12a9fc9d ("drm/i915: make A0 wa's applied to A1")
e28e404c3e93 ("drm/i915: tidy up a few leftovers")
e2f80391478a ("drm/i915: Rename local struct intel_engine_cs variables")
e87a005d90c3 ("drm/i915: add helpers for platform specific revision id range checks")
ed54c1a1d11c ("drm/i915: abolish separate per-ring default_context pointers")
ef712bb4b700 ("drm/i915: remove parens around revision ids")
fac5e23e3c38 ("drm/i915: Mass convert dev->dev_private to to_i915(dev)")
fffda3f4fb49 ("drm/i915/bxt: add revision id for A1 stepping and use it")
v3.18.133: Failed to apply! Possible dependencies:
08524a9ffa39 ("drm/i915/skl: Restore pipe B/C interrupts")
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
2363d8c97f87 ("drm/i915: Restore resume irq ordering comment")
2aeb7d3a4d42 ("drm/i915: s/pm._irqs_disabled/pm.irqs_enabled/")
2eb5252e2fff ("drm/i915: disable rps irqs earlier during suspend/unload")
8a8b009d1337 ("drm/i915/skl: Skylake shares the interrupt logic with Broadwell")
970104fac6ca ("drm/i915: Remove intel_modeset_suspend_hw")
9c065a7d5b67 ("drm/i915: Extract intel_runtime_pm.c")
b963291cf9af ("drm/i915: Use dev_priv instead of dev in irq setup functions")
d2dee86cece9 ("drm/i915: extract intel_init_fbc()")
fac6adb06a53 ("drm/i915: fix RPS on runtime suspend")
How should we proceed with this patch?
--
Thanks,
Sasha
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] drm/i915: Don't send MST hotplugs until after resume
2019-01-26 1:24 ` Lyude Paul
` (6 preceding siblings ...)
(?)
@ 2019-01-29 0:35 ` Sasha Levin
-1 siblings, 0 replies; 9+ messages in thread
From: Sasha Levin @ 2019-01-29 0:35 UTC (permalink / raw)
To: Sasha Levin, Lyude Paul; +Cc: Todd Previte, intel-gfx, stable, Dave Airlie
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 0e32b39ceed6 drm/i915: add DP 1.2 MST support (v0.7).
The bot has tested the following trees: v4.20.5, v4.19.18, v4.14.96, v4.9.153, v4.4.172, v3.18.133.
v4.20.5: Build OK!
v4.19.18: Build OK!
v4.14.96: Failed to apply! Possible dependencies:
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
v4.9.153: Failed to apply! Possible dependencies:
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
v4.4.172: Failed to apply! Possible dependencies:
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
61642ff03523 ("drm/i915: Inspect subunit states on hangcheck")
ca82580c9cea ("drm/i915: Do not call API requiring struct_mutex where it is not available")
cbdc12a9fc9d ("drm/i915: make A0 wa's applied to A1")
e28e404c3e93 ("drm/i915: tidy up a few leftovers")
e2f80391478a ("drm/i915: Rename local struct intel_engine_cs variables")
e87a005d90c3 ("drm/i915: add helpers for platform specific revision id range checks")
ed54c1a1d11c ("drm/i915: abolish separate per-ring default_context pointers")
ef712bb4b700 ("drm/i915: remove parens around revision ids")
fac5e23e3c38 ("drm/i915: Mass convert dev->dev_private to to_i915(dev)")
fffda3f4fb49 ("drm/i915/bxt: add revision id for A1 stepping and use it")
v3.18.133: Failed to apply! Possible dependencies:
08524a9ffa39 ("drm/i915/skl: Restore pipe B/C interrupts")
1a4313d13b69 ("drm/i915: Rewrite mst suspend/resume in terms of encoders")
2363d8c97f87 ("drm/i915: Restore resume irq ordering comment")
2aeb7d3a4d42 ("drm/i915: s/pm._irqs_disabled/pm.irqs_enabled/")
2eb5252e2fff ("drm/i915: disable rps irqs earlier during suspend/unload")
8a8b009d1337 ("drm/i915/skl: Skylake shares the interrupt logic with Broadwell")
970104fac6ca ("drm/i915: Remove intel_modeset_suspend_hw")
9c065a7d5b67 ("drm/i915: Extract intel_runtime_pm.c")
b963291cf9af ("drm/i915: Use dev_priv instead of dev in irq setup functions")
d2dee86cece9 ("drm/i915: extract intel_init_fbc()")
fac6adb06a53 ("drm/i915: fix RPS on runtime suspend")
How should we proceed with this patch?
--
Thanks,
Sasha
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-01-29 0:35 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-26 1:24 [PATCH] drm/i915: Don't send MST hotplugs until after resume Lyude Paul
2019-01-26 1:24 ` Lyude Paul
2019-01-26 2:40 ` ✓ Fi.CI.BAT: success for " Patchwork
2019-01-26 7:18 ` ✗ Fi.CI.IGT: failure " Patchwork
2019-01-26 23:49 ` ✓ Fi.CI.BAT: success for drm/i915: Don't send MST hotplugs until after resume (rev2) Patchwork
2019-01-27 0:42 ` ✗ Fi.CI.IGT: failure " Patchwork
2019-01-28 12:44 ` [Intel-gfx] [PATCH] drm/i915: Don't send MST hotplugs until after resume Imre Deak
2019-01-29 0:35 ` Sasha Levin
2019-01-29 0:35 ` Sasha Levin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.