From nobody Mon Feb 9 10:27:29 2026 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA03C21A443 for ; Fri, 24 Jan 2025 11:14:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717277; cv=none; b=BynGocLTZwhNbak/thCQmYvEZWYRQp41sSDlnLeylnniWC+om3gQrost7Lru+MoHp2Jfi9AJJobrzGuJfkKT0XqvvM+qjFAIWQggMrh6lND84WJrkHUaQuK+vJQN/cpt+NEqZGDJRQZjCQU+XKYYT5Ulgv4/y/nnC7MfmdyF1FU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717277; c=relaxed/simple; bh=4R2TAjvRhPbl5nWb6SOSqQ5SIwkmWTVcXua85X57qZA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AsRlBgKO2TrRdP5Yw9X0X4xW33Wt8vThg74SA39eFp/3QgIr3m0anC25/67ZcBKEg5KujOnpyLqTzTnvpZK2cx7YEFGxmsgYIkkgCjBQbl4Dam7ZY6zvY/ZQzn6bZxTzm/OyRvxk3AiiM7OG0s+CridBbRaoAc89o8q1BoMCEhw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=NJhJ6SbL; arc=none smtp.client-ip=209.85.208.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="NJhJ6SbL" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-30613037309so19740231fa.3 for ; Fri, 24 Jan 2025 03:14:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737717273; x=1738322073; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KQumNHb0czdV26nphZSgSBzfVIc/sINg5yBNO6XQGak=; b=NJhJ6SbLchWQvHr8KdN5slyHJO43wvGl2baqfVKfQfJTPgl/Es9eqZSukEnRBXwBqG z9tZKwJCJBpq1RNPonQMNSYZ5A7gE34fAfvLDiecPO4SkIyJiw7nzpZ6X/ZiwS7KcUpT tLbwgpdqf5cXxhAMacPxLU3YNzkltlOlyOC0zic0TdlSlEyc1H9gT+IG44nCKiND/T7G kHtt4zu7hYTAwPoUsdZsKfJvc/W3WCvBQggj6IBa7bwcIvWRCV852Aw/lDNh5wL01NYp WW13+KHsq/RejykauQHperi7Qs+oUcR1V+3BdOKwvJ8LrJNa6QxN69v2HN07eL/ma3zA 0l/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737717273; x=1738322073; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KQumNHb0czdV26nphZSgSBzfVIc/sINg5yBNO6XQGak=; b=JXNZF2QCQjPQp6tkTtou6wuBqIBDrILAE/j4cXnzNS+ZnABOhgkNM7NQulToXEB0Ty zjEmVn7f2Cg+SWcOZliLMvc8iV1tyupos2pBubAWRTRc5rL0XK4zb6xRJ8gS7WeXIgsI oGlSWsX5w5+38eQh2z02rHS7QIN1qHT/HbnuVMY7vrXHtTigsNRZ/dO+AujNarspiux8 4ryCW4hiX30snrwcm5w1OS7keHqe/G9ynEURHvFxp6PfSiFPBOwWrLLlTejirlYpsVgu lyhh/5RVRNHWe8RReL2L1tShlaSINaANHVNgpDQgjWeeCc6bOUFUuiwcBYyCrksZiD4I WHNQ== X-Forwarded-Encrypted: i=1; AJvYcCWUmjfgY12w6MZl1KhqFveY4QC9ht2auA0T5Vfva2rZFnE0Ps8Lca8a2eRtkP/fubfyr8Zt7UqjB6I78Cw=@vger.kernel.org X-Gm-Message-State: AOJu0YwvSjUJT7yfPCUyJ8/733rhe3yIcaye7bCVdLsAuLgKIhZqqhhs EwCW5SbPQTEzkNAqUk0GBtVR8otxMCP1EVucAdWD3F1N+Os4HxBrc1lYgIiqqFU= X-Gm-Gg: ASbGnctyNUTRZZR3o0a9OoBzsDdkFeKTo/qURMOvx3HwmEWHKA7TT+gMY4lBMXJnGbE 5C/kj/Y8Y3FOtX5B35/9cuQyl9yD4pB75ozp9yAGnpe8JlQudKNFPRvbY8isu8usrUN1bWt5ejR NWKLwAX2NHKBGGnu++PM08qsV0WcGKSvJGa7bOrPwYSOoDcYadZBG+40ErzZJHn9cSiPoc6pxdm 3KXUDCf+p7AhV/Gob+K1kLUOD2jotT6XgERf1P1hWQTpXs+3bvhrmIuuTGCsZxxzsS+b22kApeW 99akZHQcVguj X-Google-Smtp-Source: AGHT+IGY2wva+MkPCdRgK1/XNjI/82GaXQEwsVxES2OrmcmMYbeyl0REkjsBdSaqM3fqWG9eRyRhsw== X-Received: by 2002:a05:651c:1611:b0:300:3778:4dbb with SMTP id 38308e7fff4ca-3072ca60c5emr122341211fa.1.1737717272797; Fri, 24 Jan 2025 03:14:32 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bacba5esm3289701fa.36.2025.01.24.03.14.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 03:14:31 -0800 (PST) From: Dmitry Baryshkov Date: Fri, 24 Jan 2025 13:14:19 +0200 Subject: [PATCH 1/6] drm/atomic-helper: add atomic_needs_modeset callbacks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250124-atomic-needs-modeset-v1-1-b0c05c9eda0f@linaro.org> References: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> In-Reply-To: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Jocelyn Falempe , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Kalyan Thota Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8241; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=4R2TAjvRhPbl5nWb6SOSqQ5SIwkmWTVcXua85X57qZA=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ/rkMpFJsYka4Z9WvN3MmWi9d9k0jT2adv2u66NZTtzdx d5gL1XbyWjMwsDIxSArpsjiU9AyNWZTctiHHVPrYQaxMoFMYeDiFICJaKSx/0+1thHwuKvL9dnl NGtW2dNH9QzqLSIXYg5lB8uvOWL2+rlhg9nFLQ2hNs2cecLzM5NUl/J/0m0O5vcOE46d86Du/yG BP1e3+JoZrg4XTMw8tqnlk/XLut33DN91X93L67NXRZxB7bnvxCvW+8Scq1//tdLVvWUrpDR/72 ujQpEJYQeMONOPLronJbxUtu8gk1jMNftvsS+dQu5PskyakdXSuyUx2/ls39XklafOl2QWXLRuP O+rlBrG3fw4bLmlNlPFLeMJ796t2jRr5r6dS24e8ZrwX4SPO9Hy5fauaE6+06UzXbzulss5mF8s cu06tGNq0nelhOkzNdQd9RjfcEXMbeWWt5SQmsQ5za8WAA== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Despite drm_atomic_helper_check_modeset() and drm_atomic_helper_check() documenting that the function should be run again if atomic_check() callback changes drm_crtc_state.mode_changed some drivers ignore it and don't rerun the helpers. To simplify such drivers and remove the need to rerun the helper functions provide additional set of callbacks, atomic_needs_modeset(). These callbacks are executed at a proper time, they return a boolean which signifies that corresponding CRTC should undergo a full modeset. This way the atomic_check() callbacks can stop updating the drm_crtc_state.mode_changed. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 59 ++++++++++++++++++++ include/drm/drm_modeset_helper_vtables.h | 92 ++++++++++++++++++++++++++++= ++++ 2 files changed, 151 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 3034ba09c0ee5791ffd2f4130bd84b4cc4676fae..1f689ccd9b0d7f655c6a49e642d= 652b815a0e8e1 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -649,6 +649,8 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, struct drm_crtc_state *old_crtc_state, *new_crtc_state; struct drm_connector *connector; struct drm_connector_state *old_connector_state, *new_connector_state; + struct drm_plane *plane; + struct drm_plane_state *new_plane_state, *old_plane_state; int i, ret; unsigned int connectors_mask =3D 0, user_connectors_mask =3D 0; =20 @@ -708,6 +710,9 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, =20 for_each_oldnew_connector_in_state(state, connector, old_connector_state,= new_connector_state, i) { const struct drm_connector_helper_funcs *funcs =3D connector->helper_pri= vate; + struct drm_encoder *encoder =3D new_connector_state->best_encoder; + const struct drm_encoder_helper_funcs *enc_funcs =3D + encoder ? encoder->helper_private : NULL; =20 WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex)); =20 @@ -734,6 +739,25 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, new_crtc_state->connectors_changed =3D true; } =20 + if ((funcs->atomic_needs_modeset && + funcs->atomic_needs_modeset(connector, state)) || + (enc_funcs && enc_funcs->atomic_needs_modeset && + enc_funcs->atomic_needs_modeset(encoder, state))) { + if (new_connector_state->crtc) { + new_crtc_state =3D + drm_atomic_get_new_crtc_state(state, + new_connector_state->crtc); + new_crtc_state->mode_changed =3D true; + } + + if (old_connector_state->crtc) { + new_crtc_state =3D + drm_atomic_get_new_crtc_state(state, + old_connector_state->crtc); + new_crtc_state->mode_changed =3D true; + } + } + if (funcs->atomic_check) ret =3D funcs->atomic_check(connector, state); if (ret) { @@ -746,6 +770,29 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, connectors_mask |=3D BIT(i); } =20 + for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_s= tate, i) { + const struct drm_plane_helper_funcs *funcs; + + funcs =3D plane->helper_private; + if (!funcs || !funcs->atomic_needs_modeset) + continue; + + if (!funcs->atomic_needs_modeset(plane, state)) + continue; + + if (new_plane_state->crtc) { + new_crtc_state =3D drm_atomic_get_new_crtc_state(state, + new_plane_state->crtc); + new_crtc_state->mode_changed =3D true; + } + + if (old_plane_state->crtc) { + new_crtc_state =3D drm_atomic_get_new_crtc_state(state, + old_plane_state->crtc); + new_crtc_state->mode_changed =3D true; + } + } + /* * After all the routing has been prepared we need to add in any * connector which is itself unchanged, but whose CRTC changes its @@ -753,6 +800,18 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, * crtc only changed its mode but has the same set of connectors. */ for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { + const struct drm_crtc_helper_funcs *funcs; + + if (!new_crtc_state->crtc) + continue; + + funcs =3D crtc->helper_private; + if (!funcs || !funcs->atomic_needs_modeset) + continue; + + if (funcs->atomic_needs_modeset(crtc, state)) + new_crtc_state->mode_changed =3D true; + if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) continue; =20 diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_mod= eset_helper_vtables.h index b62f41f489625e5177bdc05eef950e6c18c219fd..a83999109a49321536956c8b1b9= 3fb4b0d0f7ce2 100644 --- a/include/drm/drm_modeset_helper_vtables.h +++ b/include/drm/drm_modeset_helper_vtables.h @@ -304,6 +304,29 @@ struct drm_crtc_helper_funcs { */ void (*disable)(struct drm_crtc *crtc); =20 + /** + * @atomic_needs_modeset: + * + * This function is called at the beginning of + * drm_atomic_helper_check_modeset() to verify whether the CRTC needs a + * full mode set or not. + * + * This hook is optional. + * + * NOTE: + * + * This function is called in the check phase of an atomic update. The + * driver is not allowed to change anything outside of the + * &drm_atomic_state update tracking structure passed in. + * + * RETURNS: + * + * True if the corresponding CRTC should undergo a full modeset, False + * otherwise. + */ + bool (*atomic_needs_modeset)(struct drm_crtc *crtc, + struct drm_atomic_state *state); + /** * @atomic_check: * @@ -800,6 +823,29 @@ struct drm_encoder_helper_funcs { */ void (*enable)(struct drm_encoder *encoder); =20 + /* + * @atomic_needs_modeset: + * + * This function is called at the beginning of + * drm_atomic_helper_check_modeset() to verify whether the connected + * CRTC needs a full mode set or not. + * + * This hook is optional. + * + * NOTE: + * + * This function is called in the check phase of an atomic update. The + * driver is not allowed to change anything outside of the + * &drm_atomic_state update tracking structure passed in. + * + * RETURNS: + * + * True if the corresponding CRTC should undergo a full modeset, False + * otherwise. + */ + bool (*atomic_needs_modeset)(struct drm_encoder *encoder, + struct drm_atomic_state *state); + /** * @atomic_check: * @@ -1067,6 +1113,29 @@ struct drm_connector_helper_funcs { struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connecto= r, struct drm_atomic_state *state); =20 + /** + * @atomic_needs_modeset: + * + * This function is called at the beginning of + * drm_atomic_helper_check_modeset() to verify whether the connected + * CRTC needs a full mode set or not. + * + * This hook is optional. + * + * NOTE: + * + * This function is called in the check phase of an atomic update. The + * driver is not allowed to change anything outside of the + * &drm_atomic_state update tracking structure passed in. + * + * RETURNS: + * + * True if the corresponding CRTC should undergo a full modeset, False + * otherwise. + */ + bool (*atomic_needs_modeset)(struct drm_connector *connector, + struct drm_atomic_state *state); + /** * @atomic_check: * @@ -1284,6 +1353,29 @@ struct drm_plane_helper_funcs { */ void (*end_fb_access)(struct drm_plane *plane, struct drm_plane_state *ne= w_plane_state); =20 + /** + * @atomic_needs_modeset: + * + * This function is called at the beginning of + * drm_atomic_helper_check_modeset() to verify whether the connected + * CRTC needs a full mode set or not. + * + * This hook is optional. + * + * NOTE: + * + * This function is called in the check phase of an atomic update. The + * driver is not allowed to change anything outside of the + * &drm_atomic_state update tracking structure passed in. + * + * RETURNS: + * + * True if the corresponding CRTC should undergo a full modeset, False + * otherwise. + */ + bool (*atomic_needs_modeset)(struct drm_plane *plane, + struct drm_atomic_state *state); + /** * @atomic_check: * --=20 2.39.5 From nobody Mon Feb 9 10:27:29 2026 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3599A21ADB2 for ; Fri, 24 Jan 2025 11:14:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717279; cv=none; b=R6ZaI7cp/DhamKiXBY9uV77JVl3AjxLvsxTrdXU0Of6wkh4RqsltfN7JqOZ5UrEpEc8s0PUVdoRpFBCUm3x8jS4w2dtXx/MfatmSH5G4909QMhLQ89zGX5PFNsC+Vov3+tyWUx6fq4NyZ3xbyM0VFyH01cVYlnzMemqygv0cMfY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717279; c=relaxed/simple; bh=pwmtWNrqDVg2rI64aHz+boP7gTDUq9GICL0T2h/DMTk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iZEmJ8ffiihZrM2+Vwq70lZVF35noQmhZeCnKDbAyNp7yf2WUitLHjF8qfOpySLuRlgt2iyQMaE+0dMpJoruVkvZBlg1cHCu48+37IKYZuYWSySgsgepSJ7fECZFQDVSljYm1YBkE3UWfMWvtjlk9QysEAhPUxkwBMYKXrmnv90= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=s9AGiUyR; arc=none smtp.client-ip=209.85.208.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="s9AGiUyR" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-30613037309so19740551fa.3 for ; Fri, 24 Jan 2025 03:14:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737717275; x=1738322075; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=0sacSme45d+zAHAZW9ym+kv+4dwtO/HOlcohR4MIv7o=; b=s9AGiUyR9RSKyIQ2Iq/PPd6RwbUlStFvZ2GdGLI1AHZOy4+t6ph0i7pizjxjGu8TfD 60g5jzWvUykd9cUBJOJNhzxmRzaswXH0yZz1HiBi+9HuQCMy1cxr47K00cPL3MtGyQvo bkMo/ry09H7mx6Lu9PEp/JPO4f8S3oNOzKpE4WhOlCa0EIjay2F4e8HByb+aCCHMzSmZ oRUmIbFat1L8DB2nswvkmqyL13sOlsLD6KCGzRBtIDDlqI59jwHq2gf0r46K6u7jlYJr KMhQIcBpgO6ueJVX3er6dDYP2Y2Ji9UhV9sxNkrwiUMNdGewzcfDl8oNKC59S/SGgA8A J8aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737717275; x=1738322075; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0sacSme45d+zAHAZW9ym+kv+4dwtO/HOlcohR4MIv7o=; b=eHvVJoWz3ulO0HOG1c0Xv5KHnYaCdOirswKiWN55DGs0mIrdVpE23lmpKvsv01u8x6 6qsQXnKb6mDB8SwWSu/U9DvkvbuxedP4SJfbABADck3GDO1cJNW8t89FBPaFa+ncmegY kxYWEAgwqGyf4ctI7IJlalGC0oHVVkljKsA6t4sgmmUPOYT9EmR0sSQlh3l4ufunvXtu toANcOTY36eL4sEb7XrHWnILDCECyVaSQtZzqvvUKs48W/AfNVcs93z1lwxPyLLL4vmK 4ntohHayXf6Gixf6lhhRCfWH/WTHvIAZhPJ6GmNxhqvWBarivAd6mYVXH83o7wqNw08f kx2Q== X-Forwarded-Encrypted: i=1; AJvYcCV+2KzeRS1CC3tre/JRLYCFDzCiXkZPGpVdesWLWR1V33V9RMFewBXoXDdd53PyAA8LsWs+mAh2KCfmapA=@vger.kernel.org X-Gm-Message-State: AOJu0YwGK3aH5qsXBh8xzCorL1+/8/CqjyYg7YHSHh9IvtfeVwpnmB4I ze2RQ2aHehd7Q7cvWkPbc83NrpqXuY7DfB/6Pa3eRXE+tIDZW33emfEARan9NOk= X-Gm-Gg: ASbGncs16LDOUERV0wSqS2ErxM5x8XxrZT6fRoQGEzNaRqPaQOlLi5WOWsSUSNCJeT1 d5J+7Zp4TQ1k5OnOFDz12VqPGqbJZ1VruycGtlLB3n8zgLpMKQa3N1Dovi3v24PUPRZBLc09QLt 0dymC7LEJ33nAsZV0D3cdDa/ROT917dRDc0onmKBbjtARASlRFZgog5hMoLMBJc6WVu+1q6qKyA uhPuTn0CpG3E0x20aB6K4jHBplpEdqI4XnDVV9LKpqm7CCeW3+2M1NwcR29flFh5x1G7GKMbML6 i9bYP+dJCn5b X-Google-Smtp-Source: AGHT+IEKsI1FHKsU/oq63Owrwj/AxIolbDVcCg9fk2AcSbkPZFLWwNFBfl+vzCRP0IAnp1mAghhfXQ== X-Received: by 2002:a2e:a901:0:b0:2ff:cfbb:c893 with SMTP id 38308e7fff4ca-3072ca60a30mr114304741fa.6.1737717275242; Fri, 24 Jan 2025 03:14:35 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bacba5esm3289701fa.36.2025.01.24.03.14.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 03:14:34 -0800 (PST) From: Dmitry Baryshkov Date: Fri, 24 Jan 2025 13:14:20 +0200 Subject: [PATCH 2/6] drm/mgag200: move format check to drm_plane_helper.atomic_needs_modeset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250124-atomic-needs-modeset-v1-2-b0c05c9eda0f@linaro.org> References: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> In-Reply-To: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Jocelyn Falempe , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Kalyan Thota Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3634; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=pwmtWNrqDVg2rI64aHz+boP7gTDUq9GICL0T2h/DMTk=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnk3YURWUWU01A6XqaUSIWW8FOy+qff+XjWYSkZ 56VP0FXSWeJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ5N2FAAKCRCLPIo+Aiko 1cFHB/4xZMU+AzbdxZr6M/tEKI3BPADtj3wkgUMr8+GsJt3pS5i0aL+uSRnAQ0w90ahY+xj1NGR ydwByJx+LU6dcZ9VBukcBNtjs+jW36FmNm4n2ATCuO7G1j7UtnUw446vYER8Y9XKYuMEL8YcUo+ 3OilKZKQLU3Is/wYwRtbcix/JeDmw34ZFQkpFSlOn95EopH6vBbOVDxz3k69cW1x1QFvMJYnYRH bBSgj/YBG+RkwVoBwxO/hgkj/MsUWdVdqp4mzFYQOnC49PetFw7e7kvpieLlz0C4X4CQy4jmyO3 W3kgVzYd+wz73NA+9RiEMUfMwT3WubiRVFl9c+y+CzZ9qUqX X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A For the mgag200 driver if the format of the plane changes, then the PLL rate needs to be changed. This requires performing a full CRTC modeset. Current code sets drm_crtc_state.mode_changed from the plane's atomic_check() callback and then doesn't call drm_atomic_helper_check() again. It works for the mgag200 driver, but it breaks calling convention of the drm_atomic_helper_check() function. Move the check to the new atomic_needs_modeset() callback, removing the need to set the flag in the atomic_check(). Note: this also checks the check to compare format to the old_plane_state->fb->format instead of using plane->state->fb->format. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/mgag200/mgag200_drv.h | 2 ++ drivers/gpu/drm/mgag200/mgag200_mode.c | 27 ++++++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag20= 0/mgag200_drv.h index 0608fc63e588bb60f1b087d263a34cfd11624b52..42cf0826ed14e0e9e4ed1b79204= 86bda008a0f99 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.h +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h @@ -354,6 +354,8 @@ extern const uint32_t mgag200_primary_plane_formats[]; extern const size_t mgag200_primary_plane_formats_size; extern const uint64_t mgag200_primary_plane_fmtmods[]; =20 +bool mgag200_primary_plane_helper_atomic_needs_modeset(struct drm_plane *p= lane, + struct drm_atomic_state *new_state); int mgag200_primary_plane_helper_atomic_check(struct drm_plane *plane, struct drm_atomic_state *new_state); void mgag200_primary_plane_helper_atomic_update(struct drm_plane *plane, diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag2= 00/mgag200_mode.c index fb71658c3117b25311f19276d6f4ffdee157ac17..63285b356326a13b465387e5d7a= c90ec9fe867cf 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -463,12 +463,31 @@ const uint64_t mgag200_primary_plane_fmtmods[] =3D { DRM_FORMAT_MOD_INVALID }; =20 +bool mgag200_primary_plane_helper_atomic_needs_modeset(struct drm_plane *p= lane, + struct drm_atomic_state *new_state) +{ + struct drm_plane_state *new_plane_state =3D drm_atomic_get_new_plane_stat= e(new_state, plane); + struct drm_plane_state *old_plane_state =3D drm_atomic_get_old_plane_stat= e(new_state, plane); + struct drm_framebuffer *new_fb =3D new_plane_state->fb; + struct drm_framebuffer *fb =3D NULL; + + if (old_plane_state) + fb =3D old_plane_state->fb; + + if (!new_fb) + return false; + + if (!fb || (fb->format !=3D new_fb->format)) + return true; + + return false; +} + int mgag200_primary_plane_helper_atomic_check(struct drm_plane *plane, struct drm_atomic_state *new_state) { struct drm_plane_state *new_plane_state =3D drm_atomic_get_new_plane_stat= e(new_state, plane); struct drm_framebuffer *new_fb =3D new_plane_state->fb; - struct drm_framebuffer *fb =3D NULL; struct drm_crtc *new_crtc =3D new_plane_state->crtc; struct drm_crtc_state *new_crtc_state =3D NULL; struct mgag200_crtc_state *new_mgag200_crtc_state; @@ -486,12 +505,6 @@ int mgag200_primary_plane_helper_atomic_check(struct d= rm_plane *plane, else if (!new_plane_state->visible) return 0; =20 - if (plane->state) - fb =3D plane->state->fb; - - if (!fb || (fb->format !=3D new_fb->format)) - new_crtc_state->mode_changed =3D true; /* update PLL settings */ - new_mgag200_crtc_state =3D to_mgag200_crtc_state(new_crtc_state); new_mgag200_crtc_state->format =3D new_fb->format; =20 --=20 2.39.5 From nobody Mon Feb 9 10:27:29 2026 Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF91021B18B for ; Fri, 24 Jan 2025 11:14:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717280; cv=none; b=eYJSpuXC6a2rklE0EY0fx7++gOvTw2tsXU7kKhDOMNDQGxODChY/EtKsopV2ptuqWA9h2JCSWSPctSqXijac7nzOInf4TDRjsBtI2dzwDJ70oS4HyGx1tTaEEuZdecgdnDb74HiXinH10ZFKLFW28iAnTFulcclt5Qd1oIhS5zE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717280; c=relaxed/simple; bh=nTNh12sSi+bFS767UAWn/EcHJvQRJYETlDdgdnAZ+xY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W/PKYemuWQuC9vF4UcLNEUsJrz+lFdXn+iNbchXB0cu4NqtrDuL3sx7222Qj8o2PAobPJHMd1x+1szkXpl/DMb09peyGc/upo1C9Ohsu5/CVCFRH5mFg6AlxZ+jH1cNctH/8M42yjcZaHn2iuVP1IHxAC4RgR4YTLTzmCSpH2gw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=A3Mb60em; arc=none smtp.client-ip=209.85.208.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="A3Mb60em" Received: by mail-lj1-f179.google.com with SMTP id 38308e7fff4ca-30227c56b11so18503671fa.3 for ; Fri, 24 Jan 2025 03:14:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737717277; x=1738322077; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=49SRE7UkGSC+0Ssj+5USiH7s/Cegkl8gvGe0j5unkHA=; b=A3Mb60emP5W3G3OFdfBglig6kiydW23J8eh8lcU9gqaMGBL7anXfx+qiixrkX0RIJj v5EN6PN33b9JaIGIpsmj5eBo4dw3rQ1cob+v33601VM/wgTH/61EZ3YavUz5QOfbSMl+ c2OdQgStN+QO4b1EWrPIIZl7NKv2kCmgLGx1Cd9XvVgAnRYL0nRROeH45ZYvUzHKxtwU wRfWSX2qOodXh429bodU8iIOOiitgUL9mkzRidWsfPuHgCw6/jz1RuCqc6EWbJ8c69e6 OHikwY/j8tfKyHVI/jKGuHUpDNRLfJh3Adf6KfAjlfvKMUGMF/Bi3nnfEyr35OjuZI3j uoMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737717277; x=1738322077; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=49SRE7UkGSC+0Ssj+5USiH7s/Cegkl8gvGe0j5unkHA=; b=SeJvIDHXog4K7/c0oysqIlZwVJVAkHdha8WCzqZ6G9nExEyXao1WZl96Uqzi1barax NdShEvgXSued0M45654CmQLU12DaWVtrLTHeTY2gw1sWi66c+lSv9qcj3OPAPXOLubk2 X6uNNgYGvjOp5MhTXXVexZfE+3mx1MTHWxeawGcNfCZVCQfVikx4miQ9vHnviH34uCMk K6mqbphL6xrm1W/p1ElD/BIkvi4zUtq3JEQL17vX8CK+8kpcL2Nq8WXAa/46ZwCKu8YW tj/094u9JJTR/myTunq3s9byNRxKhA+8TnHUYO4MuoO3KXmOk4ORod5xgtuxaDmzV+q5 j6/A== X-Forwarded-Encrypted: i=1; AJvYcCV3nEsH+u/hommS02d/Ee3ZQZMEvdtskLe/UBL0O+gVDCpsE32l6RDw6is5PsPc7iUXH0GnKv28A2sz+4A=@vger.kernel.org X-Gm-Message-State: AOJu0YyCc3ENHZfTjghBvoJt3PtltKS2Fy4CETmsXsILjFktNMQ0JiOu ptvB/a60g/nf2+vBko+RBsLO5Gb7C4v1Aa1o0+xgZR3KbfQ9lnDo8HJNzEHT7oE= X-Gm-Gg: ASbGnct8P5M0Al5TviPwCbGltBDiIBz0KX1E1jdnNGBLn6gfsTHceBXuYEFtaTHuOYE 34ib0aiqrFGH3CDUcign70wxaHYIFFdaGsIscnO8zOjO55gd2Bw8MCVy2c7hYAaBBPsfqbCYmu0 WEYjIvLL9rYH9lo//jWxGy21LKTL5TF1CubO89EjRBKH7M1p3KUDvxMWJUi61rdClNRHFkcOnlQ NcyV2OURUj6ezl7XVr9vP0r4QIrfvQudycm/s7/63DM4+59MEoxC/iJbNBC8DmqGPlSEbpy63KC Z6dn6+K6pz1p X-Google-Smtp-Source: AGHT+IHvm/UlHmhJYepFpY9+XAqem3yxGy84kPFrHVQOs3BnnMkbppx70vdw9RjWnl6viFsEaAv8ig== X-Received: by 2002:a05:651c:1309:b0:300:3a15:8f0d with SMTP id 38308e7fff4ca-3072cb284e5mr104974551fa.34.1737717276912; Fri, 24 Jan 2025 03:14:36 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bacba5esm3289701fa.36.2025.01.24.03.14.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 03:14:35 -0800 (PST) From: Dmitry Baryshkov Date: Fri, 24 Jan 2025 13:14:21 +0200 Subject: [PATCH 3/6] drm/msm/dpu: stop upgrading commits by enabling allow_modeset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250124-atomic-needs-modeset-v1-3-b0c05c9eda0f@linaro.org> References: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> In-Reply-To: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Jocelyn Falempe , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Kalyan Thota Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Simona Vetter X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2696; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=nTNh12sSi+bFS767UAWn/EcHJvQRJYETlDdgdnAZ+xY=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnk3YVkHVEQzO2H42gTfxsWoNpxy0mROcV3oEz4 AyfFaZyJYWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ5N2FQAKCRCLPIo+Aiko 1boSB/9Fjf0rWskLkp1CRYYrfV8Hxc3Cp6gZ4ThZcniTvGGLG+/0McgLdqyk+A11cU2jzsLNM4g +V2aI4HtslMp1QD6fmTapUdo998Shgg1k7IDk7lObsiKVwfP9CQln2bLNyPqcpo4AQEBdk4vKIT +KPBXsjDxBOCrTTfaI9JHj3JX8J35I+7K+U4bA5DBcCdhc5zIExDoAxr7RnL8yin2eWp0JkMiTY 4kaQLwdPGFFr2tuzRbiV8wUm2x2kT/Oj8qSFKezc8VLG5XLzIM3AXGX1Qrg70eHCTL50IlzF6gx sGbZtPmwyIMNkDV2Jck3IckCAc6KtpDzcDv/6Uj0iyBx1UgW X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A As pointed out by the commit c5e3306a424b ("drm/atomic: clarify the rules around drm_atomic_state->allow_modeset"), the drivers are now allowed to set the drm_atomic_state.allow_modeset flag, as it might break userspace API. Stop upgrading the commit to full modeset. Instead set the drm_crtc_state.mode_changed if modeset is allowed and if CTM has been enabled or disabled AND check that DSPPs are assigned to the CRTC if CTM is enabled. NOTE: This change has userspace impact, as now non-modeset commits which enable CTM will fail. Fixes: 82836692d5d7 ("drm/msm/dpu: manage DPU resources if CTM is requested= ") Reported-by: Simona Vetter Closes: https://lore.kernel.org/r/20231010170746.617366-1-daniel.vetter@ffw= ll.ch/ Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 9 +++++++++ drivers/gpu/drm/msm/msm_atomic.c | 10 ++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index a24fedb5ba4f1c84777b71c669bac0241acdd421..84313bc1f9888452914612fab55= 9b390cf38c705 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -828,6 +828,15 @@ static int dpu_encoder_virt_atomic_check( global_state, crtc_state); } =20 + if (crtc_state->ctm) { + struct dpu_crtc_state *cstate =3D to_dpu_crtc_state(crtc_state); + int i; + + for (i =3D 0; i < cstate->num_mixers; i++) + if (!cstate->mixers[i].hw_dspp) + return -EINVAL; + } + trace_dpu_enc_atomic_check_flags(DRMID(drm_enc), adj_mode->flags); =20 return ret; diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_ato= mic.c index 5c8c0661cfcd85445950e0f273b8879e7f077727..fdbe49edf2e1506ebeab500e782= d456d77ba4fcf 100644 --- a/drivers/gpu/drm/msm/msm_atomic.c +++ b/drivers/gpu/drm/msm/msm_atomic.c @@ -189,17 +189,11 @@ int msm_atomic_check(struct drm_device *dev, struct d= rm_atomic_state *state) struct drm_crtc *crtc; int i, ret =3D 0; =20 - /* - * FIXME: stop setting allow_modeset and move this check to the DPU - * driver. - */ for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { - if ((old_crtc_state->ctm && !new_crtc_state->ctm) || - (!old_crtc_state->ctm && new_crtc_state->ctm)) { + if ((!!old_crtc_state->ctm !=3D !!new_crtc_state->ctm) && + state->allow_modeset) new_crtc_state->mode_changed =3D true; - state->allow_modeset =3D true; - } } =20 if (kms && kms->funcs && kms->funcs->check_mode_changed) --=20 2.39.5 From nobody Mon Feb 9 10:27:29 2026 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7339021B1BF for ; Fri, 24 Jan 2025 11:14:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717282; cv=none; b=LG4D7P7j7PpY9kjhdHMMn7b1b88rrBhTzaMYQHLmQ/Al32wjBDmd2YSEGcIhFjjgQvhhQTkX71jjmsq7ZoFucNiQ3Lwbup9+F3b3Ov6+AEDTZiR7vyODAeeDXa4GQIYhrXetZbZnttsFvO2pLRr0YKZun+UG/9l0Fxmvin+UTzo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717282; c=relaxed/simple; bh=YiER9uGGuMLloEwX06ETqf8kcBguXBtNB7NcpB3/rSM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=juk7OlYTG8TFMPNQWHHdfOmsfQt68YsEzFCs9RusTIysR/eoPc9g2CejviUVAn4ASrs6ISTcbnl+YeyEAnhhuKxHca8+eyZPbJajcsEoGXaGDBFCQ4iHXl8VzCJljfhEXLFWOL6BPfshEPTuW7jc+rM2xbsxdry8w0lN78GyXFU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=uyHm/SHz; arc=none smtp.client-ip=209.85.208.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="uyHm/SHz" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-30034ad2ca3so14459991fa.1 for ; Fri, 24 Jan 2025 03:14:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737717278; x=1738322078; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Fwj+mo5UAroSLJxp5Ewzj53zIrMhEzrxypv3EzqL7vc=; b=uyHm/SHzNgu8qrMipfl6NIGlqpZSnpfVSC8I5ecAg8mYKOC76eNasIkI4PARAQiJe3 5e+6dAdspZVF0Pz23IM0VM12olZD4X3D03CKkE282h9vF2MmUSqG8o9Bow32S1UjYYGU BdpzpfhhVCLxYnfDRpvtPWjTxY+iqcTrQ32wNmn/4x4H/X4Zr0oxUO7+5qyx3d0yfAab jyAkASrdY948+J6F0ZD5yN9eDEIoM6m7EDks54sU21HgZHFwTbpZHERgjP1uy2x5QM/J glX5wLr1sjuug7lda8PJQRZpDaTyCt2SymIrreizQywuCx2cGMqsNjTI2HiICVJEj0tN d+XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737717278; x=1738322078; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fwj+mo5UAroSLJxp5Ewzj53zIrMhEzrxypv3EzqL7vc=; b=LdwQiuRND/Bi8nmU3hWOn7sS0+Wi/tfaHNS1HOzCyhv2rKef5nI4iRTLeaoDvZVuMO nLL8sV1WAjPiawN2jXNmX7CDPAWrCXFNXweTL+xdhhkc4m960zmZvjqE0tv6hdBiU0eo Z7t3i8s/B5+lW1UH4U/ej4vwmKaKlIl1coBBT/Gp2HPOsjnRGxe6MCgottT6bpz6LxlK kW2lqzqNHuJ9kcA+yMeVvqxlCh7jbPA/OXEFNcwU8mrWHPeIj11Nnr/dfTl8Dp1G2NUm eH9G6DjgEJj1mWWY9S6D73ehNPYQU14hfafiby+FqUcprzi6NQPGsL+bglm88zg9AcRd XsMg== X-Forwarded-Encrypted: i=1; AJvYcCUciu43Wp5iCBMdLrlp5r6O04ZoPomGwYpcB3CbxYjOyalRnyZh9GSutzsq7G43hu8FUDnXiNci3mACUMk=@vger.kernel.org X-Gm-Message-State: AOJu0YyZ7wpG0wVDwIMvkMEKuNOeTp5eFC2mFkTs/JtEvDaD2B/Wb+W8 /XOKLOIbX8j70xqTsrxKp91PLMzJEbU2lYvamOjXamRueoe19jAkvvh1OG0c+Sg= X-Gm-Gg: ASbGnctVjahJl8V5zhpKPL5PY4yVERZqOkmgBO1dwPqwuS4ukqrrKrwaoeRRNRkKoha RYE+zlVfg6An0TKy4pS+RPg+WAtduVlVQUclNs3ju0A/ZYE43potpAva2BW8QI1JymU0lrZesKL WsdlLTTcnuNMxYx7yDavK70fen6c+W4qk0BVvqdZ2U72/UFZ2akxhA2ShYsQ+qt+gbaIea/DC6e uisA3Ceu3bl1uxJRDXcX2PGoWKR0n8snGYBie+KhNsTFThj4Wek3NR7oAWo8ypQyMpXqq13S+N6 EDx+uhwh0z11 X-Google-Smtp-Source: AGHT+IF+hU0ZazCKVSv6vYDDyjuO4CTENcYUETOBAM8LkY/QMiYkhDEDR5ndt0J3TA6a6cqVWwwrEQ== X-Received: by 2002:a2e:a4b8:0:b0:307:2b3e:a4a9 with SMTP id 38308e7fff4ca-3072ca9c335mr96093661fa.20.1737717278457; Fri, 24 Jan 2025 03:14:38 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bacba5esm3289701fa.36.2025.01.24.03.14.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 03:14:37 -0800 (PST) From: Dmitry Baryshkov Date: Fri, 24 Jan 2025 13:14:22 +0200 Subject: [PATCH 4/6] drm/msm/dpu: move CTM check to drm_crtc_helper.atomic_needs_modeset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250124-atomic-needs-modeset-v1-4-b0c05c9eda0f@linaro.org> References: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> In-Reply-To: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Jocelyn Falempe , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Kalyan Thota Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2997; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=YiER9uGGuMLloEwX06ETqf8kcBguXBtNB7NcpB3/rSM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnk3YV5nq8F9m0El+GSJKXaPPIb12nQcNBZmQDv tOzihmqah2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ5N2FQAKCRCLPIo+Aiko 1e4cCACDuTp4Lz5Xz6+mOmcEorb5i8LjmnEd0GHFi0favS9T4leDhX3UvxN1wnDqIT7/IbQ14KA IvYZOrh5j7JLlzZhKJaGSwbv7qEZqsD/OULP/+gTbyTEjwZjY4kOKBzoSdAv8gEZMwEdYkrlOzU 9FKe5VDy46cVYMrr2ekbdX0RNBD1qNrRLCZisI/vxIoZlWCSV/NX8jQvYxcbZLCyJ8F5biUbQn/ HlN9vXvPj/9esINrbv3gKi4aC5LKw1oiPVnJJS40HeyQ1u0dY+UwAnxvEnsMJsZZitQi08XsZL8 a3rVkeRPgkEvPL6XVJxU5yeXZ68SW5WD1rr2TipPVLU3Rttd X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A For the msm/dpu driver if the CTM gets enabled or disabled, the CRTC should perform resource reallocation (to get or to free the DSPP). This requires performing a full CRTC modeset. Current code sets drm_crtc_state.mode_changed from the msm_atomic_check(), from the generic code path. Move the check to the new atomic_needs_modeset() callback, removing the need to set the flag from the generic code path. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 15 +++++++++++++++ drivers/gpu/drm/msm/msm_atomic.c | 11 +---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm= /disp/dpu1/dpu_crtc.c index 65e33eba61726929b740831c95330756b2817e28..9a990386570e037f2b1c994a014= 0f2b7c4c84669 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -1189,6 +1189,20 @@ static bool dpu_crtc_needs_dirtyfb(struct drm_crtc_s= tate *cstate) return false; } =20 +static bool dpu_crtc_atomic_needs_modeset(struct drm_crtc *crtc, + struct drm_atomic_state *state) +{ + struct drm_crtc_state *old_crtc_state, *new_crtc_state; + + if (!state->allow_modeset) + return false; + + old_crtc_state =3D drm_atomic_get_old_crtc_state(state, crtc); + new_crtc_state =3D drm_atomic_get_new_crtc_state(state, crtc); + + return !!old_crtc_state->ctm !=3D !!new_crtc_state->ctm; +} + static int dpu_crtc_reassign_planes(struct drm_crtc *crtc, struct drm_crtc= _state *crtc_state) { int total_planes =3D crtc->dev->mode_config.num_total_plane; @@ -1535,6 +1549,7 @@ static const struct drm_crtc_funcs dpu_crtc_funcs =3D= { static const struct drm_crtc_helper_funcs dpu_crtc_helper_funcs =3D { .atomic_disable =3D dpu_crtc_disable, .atomic_enable =3D dpu_crtc_enable, + .atomic_needs_modeset =3D dpu_crtc_atomic_needs_modeset, .atomic_check =3D dpu_crtc_atomic_check, .atomic_begin =3D dpu_crtc_atomic_begin, .atomic_flush =3D dpu_crtc_atomic_flush, diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_ato= mic.c index fdbe49edf2e1506ebeab500e782d456d77ba4fcf..4377233bd6447060b1300cc0d68= 77b6a777b1edb 100644 --- a/drivers/gpu/drm/msm/msm_atomic.c +++ b/drivers/gpu/drm/msm/msm_atomic.c @@ -185,16 +185,7 @@ int msm_atomic_check(struct drm_device *dev, struct dr= m_atomic_state *state) { struct msm_drm_private *priv =3D dev->dev_private; struct msm_kms *kms =3D priv->kms; - struct drm_crtc_state *old_crtc_state, *new_crtc_state; - struct drm_crtc *crtc; - int i, ret =3D 0; - - for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, - new_crtc_state, i) { - if ((!!old_crtc_state->ctm !=3D !!new_crtc_state->ctm) && - state->allow_modeset) - new_crtc_state->mode_changed =3D true; - } + int ret =3D 0; =20 if (kms && kms->funcs && kms->funcs->check_mode_changed) ret =3D kms->funcs->check_mode_changed(kms, state); --=20 2.39.5 From nobody Mon Feb 9 10:27:29 2026 Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 006A321B8E1 for ; Fri, 24 Jan 2025 11:14:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717284; cv=none; b=Q0GGNi7K+a1SXCJG0TC4perPwjLwzOtrlyN1+pZ0x2L9608D4a+kumnaPXANwjCPmNOzbG45WQClffN9zdMEEnPwdWAso1y/LMw4jOBLnNjtAU2l3YRlQC14lU5dMEgZPkrp4JpbZe8L1xPK9S5PnMMJwuQ/7f0Fk7qww2WDa4Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717284; c=relaxed/simple; bh=RJbY2Rc5XWEYm7DVDGShoSdkiZEDKvsZ6ViiD3b/p6s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vElmn2DjFQO1F5WTCo8IXPpcs5lezjfI28iKVSNe9jxwCImqGkK5cM4Dtnx2/qXgjDm4eo2ELs6f/e6YovWr/naWUpufbzY3C/KdcJCOOiV1u0s9F4ckpCSPZFjllzh0c0GyPzCCf9ols/BdZnaCxC2GrwTMXDl6TSSlAqOU9Yk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=fjAcbiaL; arc=none smtp.client-ip=209.85.208.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fjAcbiaL" Received: by mail-lj1-f179.google.com with SMTP id 38308e7fff4ca-304e4562516so19475541fa.1 for ; Fri, 24 Jan 2025 03:14:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737717281; x=1738322081; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=O/oxMMFfQ3I3pEj54pjtnXmmwf3LThN/3TdVC/t7tnw=; b=fjAcbiaLNhdXnt9XbkKh5ErFmjH+ozVF2+XEK9zMGQBCNXKkU5Zs2ntkrDBQo6VgvW HvnDl6aXEGLpuu3j01o29Yq8znG7C61DokMT9Vwn473fXunslJ9ANGiiX1QG0g/FMim5 uNnD8g/jXiDqcbqx2U5UP131jC1hvHIwwI/mhjwutHiSvYB4CZhFCcyzL3QOQq3JksX0 aB7eyhEotXAaCH6IXTwuJb+8oUi99lg0S443AZK+ZKZVP9Okz5HL3adZZIdN8CeWWVH6 9xiZvgddv2J5g7BjagDzKxnGFvwSUgzHndCYGnn5s7mxd1n4t+eZ2HDG0nBnhOgBiX17 20EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737717281; x=1738322081; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O/oxMMFfQ3I3pEj54pjtnXmmwf3LThN/3TdVC/t7tnw=; b=JAyBTSZ1jssmH/sP05uCmE6kvnAStCwWKIFF07oV/z8cSl4Kfre3pRGMvSu4eUFC+B SPg7AAvmLMB6r6V6kDQKkdCwFu5Aj0u3K4GPxzRW1Zcszn/NtL8U6lDSLxDdjqeFr2CQ 70BGkrG36QPMwBB3PXcFtthdGY5PPFd5Yp8qP6TZ2Zro4dZRi7I7L3NkfYEB16EZRbBb lbT/6uQKX18VgOzuSyfs1K5RdZJIQ+46IJFAdkvmJgbsaat1WHz0Yj+uFHoXwVf1g5wb CdNi8/4DqkCwOeSfRMxltOuGbSMDfEE1X7TKL2sU6WoFfJmXaY0GqArJNMgdZDhB533e N/qw== X-Forwarded-Encrypted: i=1; AJvYcCWp8IoRqP3no3wqt0HYkVui5ZlG/eOzsY5qPW/0ZRLPLCP7HbVJrdYS3X+MIXEm6yBvyJBCJ4p/7DSAfVw=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0N4yMIsZaQtSgZfP46oTwjT3f4UjmnqWVX462D4xjlCt4H0rL 1NoGXHXw0Rw0T+/loWRdPubDtxOt5blpvgGftdsjghhR/zj4weEQdDjjwtcpyxI= X-Gm-Gg: ASbGnctnZgeVnDk3l0U1Cd8cVF8cBC3hlySeNsvZx4hrbmM3zS1tj4fcFQXF4Pkcwn1 Umo+LkzEQUO3sjg+N4x3qEO6GPLx+PGbEioE3chmSHxRryaDkDsCYdoNwHY7Pn/QEyIDeB/s1/W 1K3Gqwe4g8PIbggsOtlz38W/zgAL0WLtWzTVCO1YA5KlgSkfgRTGWhRG0axuvVlM+WBcIMNWh3p n6lbx9bx2aGvPJExuAMPzuLHoETdRia567/+BWRhv418dgRCaeZWX9meO7hotdC1fxmleUy6hVL EGYKA5oCgUSJ X-Google-Smtp-Source: AGHT+IHVMKQAcRvAe8Ru8jqcnZYt30PR8+TeSYcOpinNZ1wtFZ71833jO2mo4HCWThadfs6F2ffqfw== X-Received: by 2002:a2e:bcc5:0:b0:306:5c3:b4d0 with SMTP id 38308e7fff4ca-30761b8ba44mr32377961fa.2.1737717280986; Fri, 24 Jan 2025 03:14:40 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bacba5esm3289701fa.36.2025.01.24.03.14.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 03:14:39 -0800 (PST) From: Dmitry Baryshkov Date: Fri, 24 Jan 2025 13:14:23 +0200 Subject: [PATCH 5/6] drm/msm/dpu: use atomic_needs_modeset for CDM check Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250124-atomic-needs-modeset-v1-5-b0c05c9eda0f@linaro.org> References: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> In-Reply-To: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Jocelyn Falempe , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Kalyan Thota Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5402; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=RJbY2Rc5XWEYm7DVDGShoSdkiZEDKvsZ6ViiD3b/p6s=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnk3YVhnfHs7IeTGIT9ZCw63TSM0or1W73RRqCO jM4PlE72l+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ5N2FQAKCRCLPIo+Aiko 1SfjB/4pjKjgrLihmXFuc8/lEhY++xtfarlvxvtlPF7NNTAt8TD2ODkbq65HkGUq3BJhjyWFTg3 7jjR6lN0Qurx1jhFXRgAaLmwbwhmP1bsNPcdmhkqENq5DwRwoll/5z/6wrfExcbvmypMWhOs4mq F1fDmj8fZXSExioEAARKLBBzNzIpFvE9ne8GpThEhuJ/lHuWSlqqbh7u0eSYi9j6PHumwwYVK76 Z16KvZ6td5a/UJG0JV3k+NUHGtokspzUvmh8h844NmsjDB1soVBgHcvWiCFCNJ8lHof6IFX1muy aZ4qXkbEy9LoU7Es/aKBoJ4QF6nQFwyM5M6gd5LygTSMm3F/ X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Rework the CDM check into using the new atomic_needs_modeset() callbacks. This removes a need for the dpu-specific check_mode_changed() callback in the msm_kms_funcs structure. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 35 +++++++++++++++++--------= ---- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 4 ---- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 26 --------------------- 3 files changed, 21 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index 84313bc1f9888452914612fab559b390cf38c705..d09a5c682031b840d486cf48871= 964e395226d33 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -753,32 +753,38 @@ static void dpu_encoder_assign_crtc_resources(struct = dpu_kms *dpu_kms, cstate->num_mixers =3D num_lm; } =20 -/** - * dpu_encoder_virt_check_mode_changed: check if full modeset is required - * @drm_enc: Pointer to drm encoder structure - * @crtc_state: Corresponding CRTC state to be checked - * @conn_state: Corresponding Connector's state to be checked - * - * Check if the changes in the object properties demand full mode set. - */ -int dpu_encoder_virt_check_mode_changed(struct drm_encoder *drm_enc, - struct drm_crtc_state *crtc_state, - struct drm_connector_state *conn_state) +static bool dpu_encoder_virt_atomic_needs_modeset(struct drm_encoder *drm_= enc, + struct drm_atomic_state *state) { struct dpu_encoder_virt *dpu_enc =3D to_dpu_encoder_virt(drm_enc); + struct drm_connector *connector; + struct drm_connector_state *conn_state; + struct drm_crtc_state *crtc_state; struct msm_display_topology topology; =20 DPU_DEBUG_ENC(dpu_enc, "\n"); =20 + connector =3D drm_atomic_get_new_connector_for_encoder(state, drm_enc); + if (!connector) + return false; + + conn_state =3D drm_atomic_get_new_connector_state(state, connector); + if (!conn_state || !conn_state->crtc) + return false; + + crtc_state =3D drm_atomic_get_new_crtc_state(state, conn_state->crtc); + if (!crtc_state) + return false; + /* Using mode instead of adjusted_mode as it wasn't computed yet */ topology =3D dpu_encoder_get_topology(dpu_enc, &crtc_state->mode, crtc_st= ate, conn_state); =20 if (topology.needs_cdm && !dpu_enc->cur_master->hw_cdm) - crtc_state->mode_changed =3D true; + return true; else if (!topology.needs_cdm && dpu_enc->cur_master->hw_cdm) - crtc_state->mode_changed =3D true; + return true; =20 - return 0; + return false; } =20 static int dpu_encoder_virt_atomic_check( @@ -2658,6 +2664,7 @@ static const struct drm_encoder_helper_funcs dpu_enco= der_helper_funcs =3D { .atomic_mode_set =3D dpu_encoder_virt_atomic_mode_set, .atomic_disable =3D dpu_encoder_virt_atomic_disable, .atomic_enable =3D dpu_encoder_virt_atomic_enable, + .atomic_needs_modeset =3D dpu_encoder_virt_atomic_needs_modeset, .atomic_check =3D dpu_encoder_virt_atomic_check, }; =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.h index da133ee4701a329f566f6f9a7255f2f6d050f891..92b5ee390788d16e85e195a6644= 17896a2bf1cae 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h @@ -88,8 +88,4 @@ void dpu_encoder_cleanup_wb_job(struct drm_encoder *drm_e= nc, =20 bool dpu_encoder_is_valid_for_commit(struct drm_encoder *drm_enc); =20 -int dpu_encoder_virt_check_mode_changed(struct drm_encoder *drm_enc, - struct drm_crtc_state *crtc_state, - struct drm_connector_state *conn_state); - #endif /* __DPU_ENCODER_H__ */ diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/= disp/dpu1/dpu_kms.c index 9748d24b3ffde45992d28b697a88db5992b00c69..97e9cb8c2b099f4757169cadf7e= 941148d2bfb16 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -446,31 +446,6 @@ static void dpu_kms_disable_commit(struct msm_kms *kms) pm_runtime_put_sync(&dpu_kms->pdev->dev); } =20 -static int dpu_kms_check_mode_changed(struct msm_kms *kms, struct drm_atom= ic_state *state) -{ - struct drm_crtc_state *new_crtc_state; - struct drm_connector *connector; - struct drm_connector_state *new_conn_state; - int i; - - for_each_new_connector_in_state(state, connector, new_conn_state, i) { - struct drm_encoder *encoder; - - WARN_ON(!!new_conn_state->best_encoder !=3D !!new_conn_state->crtc); - - if (!new_conn_state->crtc || !new_conn_state->best_encoder) - continue; - - new_crtc_state =3D drm_atomic_get_new_crtc_state(state, new_conn_state->= crtc); - - encoder =3D new_conn_state->best_encoder; - - dpu_encoder_virt_check_mode_changed(encoder, new_crtc_state, new_conn_st= ate); - } - - return 0; -} - static void dpu_kms_flush_commit(struct msm_kms *kms, unsigned crtc_mask) { struct dpu_kms *dpu_kms =3D to_dpu_kms(kms); @@ -1087,7 +1062,6 @@ static const struct msm_kms_funcs kms_funcs =3D { .irq =3D dpu_core_irq, .enable_commit =3D dpu_kms_enable_commit, .disable_commit =3D dpu_kms_disable_commit, - .check_mode_changed =3D dpu_kms_check_mode_changed, .flush_commit =3D dpu_kms_flush_commit, .wait_flush =3D dpu_kms_wait_flush, .complete_commit =3D dpu_kms_complete_commit, --=20 2.39.5 From nobody Mon Feb 9 10:27:29 2026 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6781821C19D for ; Fri, 24 Jan 2025 11:14:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717286; cv=none; b=qVITECleNbWqKDitlJvLDOglrU+u+xQp/cPRDBz4HuM88BvwLyHe/Q5YADY3Uk9nJ6Q4XAq7oHnBv7HhHM94My/wavy6fNB2xCyD4MRHJvDghWi2dI32YrpnrYekfCaOQM0/3ROvsjR5tHUn7Nep/s86/BiI9v5Lftj6ASSWuDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737717286; c=relaxed/simple; bh=STSqFPRboB3sQ4e2j7TOcKj/UooNkL+QUHC/wJG4nEI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qZrjzTaRhG+TmueWr/Lc6HxrLaj6N4yHHl8oqZwqr1nRBUiL5qzQ5iTG9BimmuFDumgypmvVF+sjqB2LidXWBlW3jU1xdwFl5eEPFjk1TjcP5nZfXsNesn47q1rFGelUXusuzu+0Uypq8BxiGaHI7cFEpcvALwB8k68asMznnbg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=f64vMJOJ; arc=none smtp.client-ip=209.85.208.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="f64vMJOJ" Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-30616d71bb0so20958571fa.3 for ; Fri, 24 Jan 2025 03:14:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737717282; x=1738322082; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=HqZJP4iufIhevyvAoHW7Eu6OisyxKDYbF5HtjUMC78k=; b=f64vMJOJenUgonIf6YHmkafetXnnjP5F7VDzrw/BxpVbhVq9SSolu3R0z1j3Bvh3sp 36BJfdGGuRzcoDtRitp4sbkCVZ7p5+6Ti6woo43ipfKnDafinDPOawoKHvt/tCG51BsF E7DKMrZDfE7xhQYq/BkI0bWanCj4pFRe+wmjf0SccwS8btcJiv4R981hAV9K+zFObv5n ipKyCrrNxH7hLWSqBjmT8RFFOXAwA4HmFM9V7Mu07ldtZ5U82JPYAaHI8MQMW7hmSyLZ tnjEPBUgOP6alm32eXwCoMWLt+YuAvYXxKUKq79CbcxPcnDQmy8poHQrvpREVtTvPRx0 1g+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737717282; x=1738322082; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HqZJP4iufIhevyvAoHW7Eu6OisyxKDYbF5HtjUMC78k=; b=Sf02dgjwNxKAetM6PrcIVfTP2PKJkADfeX9O6HvE/uZeETkLSBHLI0keiOLTpf4//U lnRjLC74F6YRN1Shf6kQP8ir+U25oeFV79XopqaWFSlmMrZHu9V4dQS071l5kgbkCpQs 8vrnSpooYdtk/OpQ5Cxm6cuJtAroNiQOnyV7GUJkPZi+ogfrW9yL5CGTOIio2r6Fs44B 33bSZixo8c15U1a9y0txy25fb/S/jdkmeoS9XR6sLWi4MhoNfq8QMKNaLJDNLprMo6Pn ExKTWiyOqVAtVq6QpGZTp+gErIikbFsPCmRz00yccuwf6oxonnX2WICzye4MMYE4tRHe I1ig== X-Forwarded-Encrypted: i=1; AJvYcCUsH0tFa/SpXpeuqCRzPlJmKtbhXDv/RpYneQLeMOrsUIAEU9G5R1kmpqv+QlQJAwP0bl+fRPc8bLDGdno=@vger.kernel.org X-Gm-Message-State: AOJu0YzSQh4CKsdxwvao+pM/opSw80NSB0Z5XsxHiG26XFZiliEUsI7g xBz7ovz0mgkG3wkgauSRpkMryPmc0C8YrSC/w8trPRpbsikjLXiPqhZILfkI0Ks= X-Gm-Gg: ASbGncsGpFM8ZtKke9k3eTQiNYkVAAZTUcKa4bQblxm/KttZ3ZnYShYLmDYAWV9myh9 EXv5w8WZN9+YpLzxkepzuvSNtWVuVYJkWPXm0SFeXJRtE+XPSAnK4OfIop0n0CAvH4DuvaQLoen F/an9jYjZZwDtafoivD97URw2e27oYlOH773WK6Tn7OVNsEYHZJl74lP68o6642ltW0K5xOVtG5 xxZb/G5av22Ft5Sms/JlooWO06qTQWQqLJSakcLxmEYdFl1Hdc5RjO23fIGCo9ptF1mvV1HnfVj v+6F1vmouxAA X-Google-Smtp-Source: AGHT+IGbygDMYFkk0NHDouJWb1lGgESCNIcAMGqnoMkLcYKm6hxwcjQGKts6Rc3SjiI4FqcEWgmtng== X-Received: by 2002:a05:651c:888:b0:302:4115:acc with SMTP id 38308e7fff4ca-3072cb133d6mr127175271fa.26.1737717282519; Fri, 24 Jan 2025 03:14:42 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bacba5esm3289701fa.36.2025.01.24.03.14.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 03:14:42 -0800 (PST) From: Dmitry Baryshkov Date: Fri, 24 Jan 2025 13:14:24 +0200 Subject: [PATCH 6/6] drm/msm: drop msm_atomic_check wrapper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250124-atomic-needs-modeset-v1-6-b0c05c9eda0f@linaro.org> References: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> In-Reply-To: <20250124-atomic-needs-modeset-v1-0-b0c05c9eda0f@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Jocelyn Falempe , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Kalyan Thota Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3359; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=STSqFPRboB3sQ4e2j7TOcKj/UooNkL+QUHC/wJG4nEI=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnk3YVzfyLXqMiGQiguLsbAbNz16n03nkZg3A86 jritelnE+SJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ5N2FQAKCRCLPIo+Aiko 1ZfHB/0TLEmivajMQxYP83XdMY/7B2Y1Mw8PXawKgnfObCHfQq/5J523H4HSRJOCN16gkYtXIgi DG+J71a51F3+tTe5P2KMApNtGaO8VHbgbB5MArsHLgKf0ne1ii8aMTPWoBUDqTPHi3Fe/ojPhDC T/RnSmXAjEiZDr+fUnUgaLfw9FhASwWi8ONjNGgSMtx6fc9iELeKTHx2icUnyNdbuRgqzvXR2i3 hjxzM4vtFQ/ALQof/kfBO+tZt7ZEzws81M3gas+UpTWPSL+dNlxYUioN52zwCpheknppTVzGasH NQetVf0FO8fyyA3JRLc9DrI0yV00vsBbO/pDkmB8yzE6eBRU X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A With the CTM and CDM checks now being handled by the component callbacks there is no need for additional wrappers around drm_atomic_helper_check() wrapper. Drop the msm_atomic_check() function and use the helper directly. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_atomic.c | 14 -------------- drivers/gpu/drm/msm/msm_drv.h | 1 - drivers/gpu/drm/msm/msm_kms.c | 2 +- drivers/gpu/drm/msm/msm_kms.h | 7 ------- 4 files changed, 1 insertion(+), 23 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_ato= mic.c index 4377233bd6447060b1300cc0d6877b6a777b1edb..550bcc77acb0426df1f06b08032= 307c0deef6c4c 100644 --- a/drivers/gpu/drm/msm/msm_atomic.c +++ b/drivers/gpu/drm/msm/msm_atomic.c @@ -181,20 +181,6 @@ static unsigned get_crtc_mask(struct drm_atomic_state = *state) return mask; } =20 -int msm_atomic_check(struct drm_device *dev, struct drm_atomic_state *stat= e) -{ - struct msm_drm_private *priv =3D dev->dev_private; - struct msm_kms *kms =3D priv->kms; - int ret =3D 0; - - if (kms && kms->funcs && kms->funcs->check_mode_changed) - ret =3D kms->funcs->check_mode_changed(kms, state); - if (ret) - return ret; - - return drm_atomic_helper_check(dev, state); -} - void msm_atomic_commit_tail(struct drm_atomic_state *state) { struct drm_device *dev =3D state->dev; diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index fee31680a6d540d87cada67342bd5bee721662df..321f3c1f4932434e7fb6d18548f= 27df13c56eb71 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -232,7 +232,6 @@ int msm_atomic_init_pending_timer(struct msm_pending_ti= mer *timer, struct msm_kms *kms, int crtc_idx); void msm_atomic_destroy_pending_timer(struct msm_pending_timer *timer); void msm_atomic_commit_tail(struct drm_atomic_state *state); -int msm_atomic_check(struct drm_device *dev, struct drm_atomic_state *stat= e); struct drm_atomic_state *msm_atomic_state_alloc(struct drm_device *dev); =20 int msm_crtc_enable_vblank(struct drm_crtc *crtc); diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index 4cfad12f4dc1f91a78b36572f6643ac135e00067..2d934fc0fcfd90a67f934d01fd9= b194d4eb97609 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -22,7 +22,7 @@ =20 static const struct drm_mode_config_funcs mode_config_funcs =3D { .fb_create =3D msm_framebuffer_create, - .atomic_check =3D msm_atomic_check, + .atomic_check =3D drm_atomic_helper_check, .atomic_commit =3D drm_atomic_helper_commit, }; =20 diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index ec2a75af89b09754faef1a07adc9338f7d78161e..e60162744c669773b6e5aef824a= 173647626ab4e 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -59,13 +59,6 @@ struct msm_kms_funcs { void (*enable_commit)(struct msm_kms *kms); void (*disable_commit)(struct msm_kms *kms); =20 - /** - * @check_mode_changed: - * - * Verify if the commit requires a full modeset on one of CRTCs. - */ - int (*check_mode_changed)(struct msm_kms *kms, struct drm_atomic_state *s= tate); - /** * Prepare for atomic commit. This is called after any previous * (async or otherwise) commit has completed. --=20 2.39.5