From: Marco Nenciarini <mnencia@kcore.it>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org, ville.syrjala@linux.intel.com,
imre.deak@intel.com, jani.nikula@linux.intel.com,
lyude@redhat.com, xiaolu.xie@intel.com
Subject: Re: [PATCH] drm/i915/dp: clear and restore MSTM_CTRL around MST DPMS off/on
Date: Mon, 19 Oct 2026 14:40:34 +0200 [thread overview]
Message-ID: <atYPws4_nSEKU_O6@spark.kcore.it> (raw)
In-Reply-To: <20261014081448.2320363-1-xiaolu.xie@intel.com>
I hit the problem the automated review pointed out. It did not cause a
black screen here, but the MST topology was torn down during DPMS off.
Same setup as my Tested-by (Dell Pro Max 16, WD19DC, two monitors, i915
over TBT-alt, drm.debug=0x10e), now on Debian kernel 7.2.9 with the
patch applied.
I ran one DPMS off/on cycle each of 30 s, 60 s and 120 s. The 30 s and
60 s runs were clean: no connector probe during the off period, link
and topology kept. In the 120 s run i915 runtime-suspended 14 s into
the DPMS off and resumed 5 s later. The resume probed every connector,
with no user space probe at that point. intel_dp_detect() read
MSTM_CTRL as 0 (the value written by the new clear in
intel_ddi_post_disable_dp()):
intel_dp_detect: MST support: port: yes, sink: MST, modparam: yes
-> enable: MST
drm_dp_dpcd_read: AUX USBC4/DDI TC4/PHY TC4: 0x00111 AUX
-> (ret= 1) 00
intel_dp_mst_verify_dpcd_state: [CONNECTOR:554:DP-4]
[ENCODER:553:DDI TC4/PHY TC4] MST mode got reset, removing
topology (ret=1, ctrl=0x00)
The topology was removed and the three MST connectors DP-5, DP-6 and
DP-7 were unregistered. The hotplug event made user space probe again
4 s later. That wrote 0x111 <- 07, sent CLEAR_PAYLOAD_ID_TABLE and
LINK_ADDRESS, and the topology came back as DP-5, DP-10 and DP-11.
MSTM_CTRL then stayed set while the hub was in D3, for the remaining
98 s, and the wake was still normal: link training passed at 810000 x4
on the sink and both LTTPRs, payloads allocated, both monitors
enabled. GNOME dropped the external monitors and added them back while
blanked, and logged logical monitor assertion failures.
My earlier 120 s run for the Tested-by did not hit this. It needs a
connector probe while MSTM_CTRL is 0. The patch does not change
intel_dp_mst_verify_dpcd_state(). Its only caller is
intel_dp_detect(), and it expects MST_EN | UP_REQ_EN |
UPSTREAM_IS_SRC whenever is_mst is set.
One way to avoid it: accept MSTM_CTRL == 0 in that function when no
MST stream is active, since that is the window where the patch clears
it on purpose, and the re-enable writes it again. No new flag is
needed. I have not tried it. I can test a v2 with that or any other
approach.
The log of the 120 s run is available if you want it.
Marco
next prev parent reply other threads:[~2026-10-20 7:36 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 8:14 [PATCH] drm/i915/dp: clear and restore MSTM_CTRL around MST DPMS off/on Xiao Lu
2026-10-14 8:40 ` sashiko-bot
2026-10-14 8:54 ` ✓ CI.KUnit: success for " Patchwork
2026-10-14 9:41 ` ✗ i915.CI.BAT: failure " Patchwork
2026-10-14 9:55 ` [PATCH] " Marco Nenciarini
2026-10-14 15:09 ` ✓ Xe.CI.BAT: success for " Patchwork
2026-10-15 2:38 ` ✓ Xe.CI.FULL: " Patchwork
2026-10-19 12:40 ` Marco Nenciarini [this message]
2026-10-20 2:17 ` [PATCH v2] " Xiao Lu
2026-10-20 7:18 ` Marco Nenciarini
2026-10-20 8:11 ` Jani Nikula
2026-10-20 8:12 ` sashiko-bot
2026-10-20 11:04 ` [PATCH v3] " Xiao Lu
2026-10-20 11:26 ` sashiko-bot
2026-10-20 2:28 ` ✓ CI.KUnit: success for drm/i915/dp: clear and restore MSTM_CTRL around MST DPMS off/on (rev2) Patchwork
2026-10-20 3:05 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-20 3:06 ` ✓ i915.CI.BAT: " Patchwork
2026-10-20 6:30 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-10-20 11:02 ` ✓ i915.CI.Full: success " Patchwork
2026-10-20 12:17 ` ✓ i915.CI.BAT: success for drm/i915/dp: clear and restore MSTM_CTRL around MST DPMS off/on (rev3) Patchwork
2026-10-20 13:20 ` ✓ CI.KUnit: " Patchwork
2026-10-20 14:00 ` ✓ Xe.CI.BAT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=atYPws4_nSEKU_O6@spark.kcore.it \
--to=mnencia@kcore.it \
--cc=dri-devel@lists.freedesktop.org \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=lyude@redhat.com \
--cc=ville.syrjala@linux.intel.com \
--cc=xiaolu.xie@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.