From: Aaron Esau <aaron1esau@gmail.com>
To: intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
jani.nikula@linux.intel.com, rodrigo.vivi@intel.com,
joonas.lahtinen@linux.intel.com, tursulin@ursulin.net,
mika.kahola@intel.com, stable@vger.kernel.org,
Aaron Esau <aaron1esau@gmail.com>
Subject: [PATCH 0/3] drm/i915/cx0: fix PLL enable failure handling on Meteor Lake
Date: Sat, 9 May 2026 11:24:04 -0500 [thread overview]
Message-ID: <20260509162407.510539-1-aaron1esau@gmail.com> (raw)
On Meteor Lake with a hybrid Intel/NVIDIA GPU setup, s2idle resume can
leave the CX0 PHY MSGBUS unresponsive. When this happens, the PLL
enable sequence silently fails: register writes via MSGBUS are dropped,
the PLL never locks, but the driver marks it as enabled and proceeds to
drive the pipe.
The root cause of the MSGBUS becoming unresponsive appears to be the
NVIDIA dGPU not participating in S0ix (addressed via the
NVreg_EnableS0ixPowerManagement module parameter). However, the i915
driver should handle PLL enable failures gracefully regardless of the
trigger.
This series:
1. Fixes intel_cx0_pll_is_enabled() to check the hardware ACK bit,
not just the driver-set REQUEST bit, so a PLL that failed to lock
is correctly reported as disabled.
2. Adds error propagation through the DPLL enable path: changes the
.enable callback to return int, threads errors through
_intel_enable_shared_dpll() and intel_dpll_enable(), and checks
the result in hsw_crtc_enable() and ilk_pch_enable().
3. Makes the CX0 PLL enable path return -ETIMEDOUT when the PHY
fails to come out of reset or the PLL fails to lock.
Found on a Lenovo ThinkPad with Intel Ultra 7 155H and NVIDIA RTX 2000
Ada. Kernel traces before each crash:
i915: Failed to bring PHY A to idle.
i915: PHY A Read 0c70 failed after 3 retries.
i915: Timeout waiting for DDI BUF A to get active
i915: [CRTC:149:pipe A] flip_done timed out
Aaron Esau (3):
drm/i915/cx0: check PLL ACK bit in intel_cx0_pll_is_enabled()
drm/i915/dpll: add error propagation to DPLL enable path
drm/i915/cx0: return errors from CX0 PLL enable on failure
drivers/gpu/drm/i915/display/intel_cx0_phy.c | 54 ++++++++----
drivers/gpu/drm/i915/display/intel_cx0_phy.h | 6 +-
drivers/gpu/drm/i915/display/intel_display.c | 10 ++-
drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 87 ++++++++++++++-----
drivers/gpu/drm/i915/display/intel_dpll_mgr.h | 2 +-
.../gpu/drm/i915/display/intel_pch_display.c | 7 +-
6 files changed, 117 insertions(+), 49 deletions(-)
--
2.54.0
next reply other threads:[~2026-05-10 10:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-09 16:24 Aaron Esau [this message]
2026-05-09 16:24 ` [PATCH 1/3] drm/i915/cx0: check PLL ACK bit in intel_cx0_pll_is_enabled() Aaron Esau
2026-05-09 16:24 ` [PATCH 2/3] drm/i915/dpll: add error propagation to DPLL enable path Aaron Esau
2026-05-09 16:24 ` [PATCH 3/3] drm/i915/cx0: return errors from CX0 PLL enable on failure Aaron Esau
2026-05-11 8:03 ` [PATCH 0/3] drm/i915/cx0: fix PLL enable failure handling on Meteor Lake Imre Deak
2026-05-11 8:11 ` Saarinen, Jani
2026-05-11 9:33 ` Jani Nikula
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=20260509162407.510539-1-aaron1esau@gmail.com \
--to=aaron1esau@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=mika.kahola@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=stable@vger.kernel.org \
--cc=tursulin@ursulin.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox