From: sashiko-bot@kernel.org
To: "Nicolas Frattaroli" <nicolas.frattaroli@collabora.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH RFC 03/25] drm/atomic-helper: Set mode_changed on vrr_enabled change
Date: Mon, 21 Sep 2026 16:13:38 +0000 [thread overview]
Message-ID: <20260921161338.772241F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260921-vrr-limiter-uapi-v1-3-2fcd7d011646@collabora.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/atomic: mode_changed forced on VRR toggle adds all planes breaking fastsets
- [High] drm/amd/display: multi-display VRR toggle causes unintended modesets via DSC check
--
commit e5fcd3be2834f5245a6d72ea14c2fd1ffcde525f
Author: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
drm/atomic-helper: Set mode_changed on vrr_enabled change
This commit modifies the DRM atomic core to set the mode_changed flag when
the vrr_enabled property changes on a CRTC. This approach intertwines VRR
toggles with mode changes to replace ad-hoc driver implementations.
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 9d006f98413a5..0664d57792826 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -694,6 +694,12 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
> new_crtc_state->active_changed = true;
> }
>
> + if (old_crtc_state->vrr_enabled != new_crtc_state->vrr_enabled) {
> + drm_dbg_atomic(dev, "[CRTC:%d:%s] VRR changed\n",
> + crtc->base.id, crtc->name);
> + new_crtc_state->mode_changed = true;
^^^^
[Severity: High]
Does setting mode_changed to true here destroy fast-path performance by
adding all planes to the atomic state?
Because new_crtc_state->mode_changed is true, drm_atomic_crtc_needs_modeset()
evaluates to true. Later in drm_atomic_helper_check_modeset(), this triggers:
ret = drm_atomic_add_affected_planes(state, crtc);
This unconditionally adds all planes attached to the CRTC to the atomic state
and acquires their locks. Toggling VRR now forces the driver's commit tail
to process all planes, which significantly increases overhead and causes
unnecessary lock contention across all drivers using this helper.
[Severity: High]
Can this also cause unintended modesets in the AMD display driver when
multiple displays are connected and a DSC check occurs?
During amdgpu_dm_atomic_check(), the forced mode_changed value is cached:
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:amdgpu_dm_atomic_check() {
...
dm_new_crtc_state->mode_changed_independent_from_dsc = new_crtc_state->mode_changed;
...
}
The AMD driver correctly identifies the VRR toggle as a fastset and clears
new_crtc_state->mode_changed to false. However, if another CRTC triggers a
modeset, lock_and_validation_needed becomes true, invoking
compute_mst_dsc_configs_for_state().
For the VRR CRTC, pre_compute_mst_dsc_configs_for_state() observes no timing
changes and erroneously restores the cached true value:
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c:pre_compute_mst_dsc_configs_for_state() {
...
dm_new_crtc_state->base.mode_changed = dm_new_crtc_state->mode_changed_independent_from_dsc;
...
}
This incorrectly flags the VRR CRTC for a full modeset. This causes unexpected
screen blanking on the VRR display, and if userspace did not provide the
DRM_MODE_ATOMIC_ALLOW_MODESET flag (expecting a fastset), the atomic commit
will be rejected with -EINVAL.
> + }
> +
> if (new_crtc_state->enable != has_connectors) {
> drm_dbg_atomic(dev, "[CRTC:%d:%s] enabled/connectors mismatch (%d/%d)\n",
> crtc->base.id, crtc->name,
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260921-vrr-limiter-uapi-v1-0-2fcd7d011646@collabora.com?part=3
next prev parent reply other threads:[~2026-09-21 16:13 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 15:51 [PATCH RFC 00/25] VRR Target Rate Limiter KMS uAPI and Implementation Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 01/25] drm/edid: Add a query for vrr range Nicolas Frattaroli
2026-09-21 16:08 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 02/25] drm: Add VRR state Nicolas Frattaroli
2026-09-24 6:55 ` Vidith Madhu
2026-09-21 15:51 ` [PATCH RFC 03/25] drm/atomic-helper: Set mode_changed on vrr_enabled change Nicolas Frattaroli
2026-09-21 16:13 ` sashiko-bot [this message]
2026-09-21 21:59 ` Leo Li
2026-09-22 12:53 ` Nicolas Frattaroli
2026-09-22 13:22 ` Maxime Ripard
2026-09-24 6:45 ` Vidith Madhu
2026-09-21 22:01 ` Leo Li
2026-09-21 15:51 ` [PATCH RFC 04/25] video/hdmi: Add VTEM EMP packing Nicolas Frattaroli
2026-09-21 16:07 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 05/25] drm/bridge: Add VTEM EMP support Nicolas Frattaroli
2026-09-21 16:01 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 06/25] drm/connector: hdmi: Add VTEM EMP generation Nicolas Frattaroli
2026-09-21 16:13 ` sashiko-bot
2026-09-25 3:48 ` Vidith Madhu
2026-09-25 10:42 ` Daniel Stone
2026-09-25 11:11 ` Jani Nikula
2026-09-26 11:03 ` Nicolas Frattaroli
2026-09-29 18:55 ` Vidith Madhu
2026-09-30 7:50 ` Michel Dänzer
2026-09-21 15:51 ` [PATCH RFC 07/25] drm/crtc-helper: Add VRR helper functions Nicolas Frattaroli
2026-09-21 16:05 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 08/25] drm/bridge: synopsys: Add VTEM EMP support Nicolas Frattaroli
2026-09-21 16:06 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 09/25] drm/connector: Add drm_display_info_is_vrr_capable Nicolas Frattaroli
2026-09-21 16:04 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 10/25] drm/rockchip: dw_hdmi_qp: Add VRR support Nicolas Frattaroli
2026-09-21 16:09 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 11/25] drm/rockchip: vop2: Enable VRR Nicolas Frattaroli
2026-09-21 16:16 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 12/25] drm/edid: Parse CinemaVRR flag from HDMI SCDS Nicolas Frattaroli
2026-09-21 16:13 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 13/25] drm: Add VRR target frame rate properties Nicolas Frattaroli
2026-09-21 16:14 ` sashiko-bot
2026-09-21 22:23 ` Leo Li
2026-09-22 15:26 ` Nicolas Frattaroli
2026-09-25 18:42 ` Leo Li
2026-09-26 12:13 ` Nicolas Frattaroli
2026-09-28 8:10 ` Michel Dänzer
2026-09-29 14:34 ` Leo Li
2026-09-29 16:00 ` Michel Dänzer
2026-09-29 18:14 ` Nicolas Frattaroli
2026-09-29 18:24 ` Nicolas Frattaroli
2026-09-23 9:51 ` Michel Dänzer
2026-09-23 9:54 ` Michel Dänzer
2026-09-23 14:39 ` Nicolas Frattaroli
2026-09-24 7:01 ` Vidith Madhu
2026-09-24 12:10 ` Nicolas Frattaroli
2026-09-29 19:16 ` Vidith Madhu
2026-09-29 19:55 ` Nicolas Frattaroli
2026-09-29 21:05 ` Vidith Madhu
2026-09-29 22:21 ` Xaver Hugl
2026-09-21 15:51 ` [PATCH RFC 14/25] drm: Implement VRR rate limiting Nicolas Frattaroli
2026-09-21 16:17 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 15/25] drm/edid: Parse QMS flag from HDMI SCDS Nicolas Frattaroli
2026-09-21 16:18 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 16/25] drm/edid: Parse QMS TFR min/max flags " Nicolas Frattaroli
2026-09-21 16:19 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 17/25] drm/connector: Add "qms_enabled" drm property Nicolas Frattaroli
2026-09-21 16:20 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 18/25] video/hdmi: Add support for QMS in VTEM EMP packing Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 19/25] drm/connector: hdmi: Add QMS to VTEM EMP generation Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 20/25] drm/connector: hdmi: Add QMS state validation and computation Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 21/25] drm/rockchip: dw_hdmi_qp: Add QMS support Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 22/25] drm/tests: hdmi: Add "Game Mode" VRR tests Nicolas Frattaroli
2026-09-21 16:26 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 23/25] drm/tests: hdmi: Add Fixed/Constrained rate " Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 24/25] drm/tests: hdmi: Add Quick Media Switching tests Nicolas Frattaroli
2026-09-21 16:26 ` sashiko-bot
2026-09-21 15:51 ` [PATCH RFC 25/25] drm/atomic: Disable VRR in helper_set_config Nicolas Frattaroli
2026-09-21 16:26 ` sashiko-bot
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=20260921161338.772241F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=nicolas.frattaroli@collabora.com \
--cc=sashiko-reviews@lists.linux.dev \
/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