From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 71B022F9D8E; Tue, 30 Sep 2025 11:00:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759230004; cv=none; b=bbExXTsfBcFu4hPNBQfoJPzQGWK6D48mdUkrZ0o6e/jCfTt/MTIXKv4MQTGedigz5GR8tmYeqgMmI4CsgNY9OqOscA2iZwtqis+Dm10rHOJdtpv4Z90UviKWkZQ7CRAhlkxyJN1gQd0dQAG5JdXh3fRquzXnZGBa1WLJaQazylA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759230004; c=relaxed/simple; bh=hl6CpBsFM0yclQLF3Wr1UR3e+Pr0M3yXUJx6ZUgVFTo=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=WSYuc+M3UiIhWil9LzeCvIgf0lBpGri/ly+LkJoSOZi0qPSGV24hi1IW6e/vZ+ervFZCC8nYioZjEa04+NPE2cZBcUDg+jTttjzyFMeFsex1+zWJ3dYfVKvgo2QymQ3LnURrWfhgGR3Ng5tsS+EH245O8Dc/ajGRCNI/VYu42ic= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hMgAjDFi; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hMgAjDFi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 51488C4CEF0; Tue, 30 Sep 2025 11:00:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759230003; bh=hl6CpBsFM0yclQLF3Wr1UR3e+Pr0M3yXUJx6ZUgVFTo=; h=From:Subject:Date:To:Cc:From; b=hMgAjDFiUcHZlHXjNfiivYmi8e8vUVWCi59OcfXv0rRTbwfOXoZRgN9AbmT6dp24I QG9cauPJW6cadrjxv9LaBeqXg2c41/8Afqvud6K2PeYu5cT41oVL2Rd0dO08HLJ1KN EzucbmMAqmuZu+7MBn6um5hAXXbmRWnDv/rV8vIGOBaSOEnTsFyZ6ZM571/O9AUMGH Flap9Gu7hgedgeX22zbtnMoQdL9pkmX/clya9FLtDuexAQAJiXx6m81fUxDWpuNtm+ hQszCjBUs8oMkf3jYBWhJnB4L+H4zNY2ZqKUrJaEKvD8H/JgewXOHCi9u/myHJLxn8 dS3ZTJeRZILEw== From: Maxime Ripard Subject: [PATCH v5 00/39] drm/atomic: Get rid of existing states (not really) Date: Tue, 30 Sep 2025 12:59:15 +0200 Message-Id: <20250930-drm-no-more-existing-state-v5-0-eeb9e1287907@kernel.org> Precedence: bulk X-Mailing-List: linux-mips@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAAO422gC/43NTWrDMBCG4asErTtFP5at6ar3KF3Yo5Ej2khFM iYl+O5VsmlKwHT5fgzPXETlErmKl8NFFF5jjTm1sE8HQccxzQzRtxZaaiudtuDLCVKGUy4MfI5 1iWmGuowLA05GW01qNGYSDfgqHOL5hr+9tz6261y+b79WdV3/xa4KJATpiDwGZwlfP7gk/nzOZ RZXd9W/Fkq9a+lmeUYXyIbe9/2DZe4t3LVMsxQN4+Cxl2TMg9XdWWrYtbpmWd9N6BySIffH2rb tB24+KlipAQAA X-Change-ID: 20250825-drm-no-more-existing-state-9b3252c1a33b To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, Maxime Ripard , Luca Ceresoli , Dmitry Baryshkov , =?utf-8?q?Ville_Syrj=C3=A4l=C3=A4?= , Louis Chauvet , Haneen Mohammed , Melissa Wen , Jyri Sarha , Tomi Valkeinen , Paul Cercueil , linux-mips@vger.kernel.org, Liviu Dudau , Russell King , Manikandan Muralidharan , Dharma Balasubiramani , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , linux-arm-kernel@lists.infradead.org, Inki Dae , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Alim Akhtar , linux-samsung-soc@vger.kernel.org, Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , imx@lists.linux.dev, Laurentiu Palcu , Lucas Stach , Philipp Zabel , Anitha Chrisanthus , Edmund Dea , Paul Kocialkowski , Sui Jingfeng , Chun-Kuang Hu , Matthias Brugger , AngeloGioacchino Del Regno , linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , linux-rockchip@lists.infradead.org, Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , linux-sunxi@lists.linux.dev, Thierry Reding , Mikko Perttunen , Jonathan Hunter , linux-tegra@vger.kernel.org, Hans de Goede , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6084; i=mripard@kernel.org; h=from:subject:message-id; bh=hl6CpBsFM0yclQLF3Wr1UR3e+Pr0M3yXUJx6ZUgVFTo=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDBm3d8j/a/a6xTLbujO7gOmIX8GRFI/Z08TFfa8l/f2wJ 1vwnOCTjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCRo76M9RGT5kX9/PrcYUOU Xc3vVCdrnrZQvp8/9rW2TlB2zd9arHTJpL76n8H01qSDffMSOxbsZayPWzpdcdqEsnkMcZ3Su3a bh9aUT/vo9XJ+SPfni76/f52viFVZ8PjkVV3ZNO+5Bldt9xgAAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Hi, Here's a series to get rid of the drm_atomic_helper_get_existing_*_state accessors. The initial intent was to remove the __drm_*_state->state pointer to only rely on old and new states, but we still need it now to know which of the two we need to free: if a state has not been committed (either dropped or checked only), then we need to free the new one, if it has been committed we need to free the old state. Thus, the state pointer is kept (and documented) only to point to the state we should free eventually. All users have been converted to the relevant old or new state accessors. This was tested on tidss. Let me know what you think, Maxime Signed-off-by: Maxime Ripard --- Changes in v5: - Added some more documentation on state teardown - Link to v4: https://lore.kernel.org/r/20250917-drm-no-more-existing-state-v4-0-5d4b9889c3c8@kernel.org Changes in v4: - Fix ingenic - Rebased on latest drm-misc-next tag - Link to v3: https://lore.kernel.org/r/20250909-drm-no-more-existing-state-v3-0-1c7a7d960c33@kernel.org Changes in v3: - Added an armada rework patch - Added an ingenic fix - Collected tags - Rebased on latest drm-misc-next tag - Link to v2: https://lore.kernel.org/r/20250902-drm-no-more-existing-state-v2-0-de98fc5f6d66@kernel.org Changes in v2: - Dropped the first and second patches - Reworked the recipient list to be nicer with SMTPs - Link to v1: https://lore.kernel.org/r/20250825-drm-no-more-existing-state-v1-0-f08ccd9f85c9@kernel.org --- Maxime Ripard (39): drm/atomic: Convert drm_atomic_get_connector_state() to use new connector state drm/atomic: Remove unused drm_atomic_get_existing_connector_state() drm/atomic: Document __drm_connectors_state state pointer drm/atomic: Convert __drm_atomic_get_current_plane_state() to modern accessor drm/atomic: Convert drm_atomic_get_plane_state() to use new plane state drm/vkms: Convert vkms_crtc_atomic_check() to use new plane state drm/tilcdc: crtc: Use drm_atomic_helper_check_crtc_primary_plane() drm/atomic: Remove unused drm_atomic_get_existing_plane_state() drm/atomic: Document __drm_planes_state state pointer drm/atomic: Convert drm_atomic_get_crtc_state() to use new connector state drm/ingenic: ipu: Switch to drm_atomic_get_new_crtc_state() drm/arm/malidp: Switch to drm_atomic_get_new_crtc_state() drm/armada: Drop always true condition in atomic_check drm/armada: Switch to drm_atomic_get_new_crtc_state() drm/atmel-hlcdc: Switch to drm_atomic_get_new_crtc_state() drm/exynos: Switch to drm_atomic_get_new_crtc_state() drm/imx-dc: Switch to drm_atomic_get_new_crtc_state() drm/imx-dcss: Switch to drm_atomic_get_new_crtc_state() drm/imx-ipuv3: Switch to drm_atomic_get_new_crtc_state() drm/ingenic: Switch to drm_atomic_get_new_crtc_state() drm/kmb: Switch to drm_atomic_get_new_crtc_state() drm/logicvc: Switch to drm_atomic_get_new_crtc_state() drm/loongson: Switch to drm_atomic_get_new_crtc_state() drm/mediatek: Switch to drm_atomic_get_new_crtc_state() drm/msm/mdp5: Switch to drm_atomic_get_new_crtc_state() drm/omap: Switch to drm_atomic_get_new_crtc_state() drm/rockchip: Switch to drm_atomic_get_new_crtc_state() drm/sun4i: Switch to drm_atomic_get_new_crtc_state() drm/tegra: Switch to drm_atomic_get_new_crtc_state() drm/tilcdc: Switch to drm_atomic_get_new_crtc_state() drm/vboxvideo: Switch to drm_atomic_get_new_crtc_state() drm/vc4: Switch to drm_atomic_get_new_crtc_state() drm/atomic: Switch to drm_atomic_get_new_crtc_state() drm/framebuffer: Switch to drm_atomic_get_new_crtc_state() drm/atomic: Remove unused drm_atomic_get_existing_crtc_state() drm/atomic: Document __drm_crtcs_state state pointer drm/ingenic: crtc: Switch to ingenic_drm_get_new_priv_state() drm/atomic: Convert drm_atomic_get_private_obj_state() to use new plane state drm/atomic: Document __drm_private_objs_state state pointer drivers/gpu/drm/arm/malidp_planes.c | 2 +- drivers/gpu/drm/armada/armada_plane.c | 7 +- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 2 +- drivers/gpu/drm/drm_atomic.c | 21 ++-- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/exynos/exynos_drm_plane.c | 2 +- drivers/gpu/drm/imx/dc/dc-plane.c | 2 +- drivers/gpu/drm/imx/dcss/dcss-plane.c | 4 +- drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 3 +- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +- drivers/gpu/drm/ingenic/ingenic-ipu.c | 4 +- drivers/gpu/drm/kmb/kmb_plane.c | 3 +- drivers/gpu/drm/logicvc/logicvc_layer.c | 4 +- drivers/gpu/drm/loongson/lsdc_plane.c | 2 +- drivers/gpu/drm/mediatek/mtk_plane.c | 3 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 7 +- drivers/gpu/drm/omapdrm/omap_plane.c | 2 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 +- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 2 +- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 3 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 3 +- drivers/gpu/drm/tegra/dc.c | 2 +- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 9 +- drivers/gpu/drm/tilcdc/tilcdc_plane.c | 3 +- drivers/gpu/drm/vboxvideo/vbox_mode.c | 8 +- drivers/gpu/drm/vc4/vc4_plane.c | 6 +- drivers/gpu/drm/vkms/vkms_crtc.c | 4 +- include/drm/drm_atomic.h | 152 +++++++++++++----------- 28 files changed, 140 insertions(+), 141 deletions(-) --- base-commit: 91494dee1091a14d91da6bcb39e12a907765c793 change-id: 20250825-drm-no-more-existing-state-9b3252c1a33b Best regards, -- Maxime Ripard