* [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset
@ 2026-08-21 14:38 Maxime Ripard
2026-08-21 14:38 ` [PATCH 13/70] drm/ingenic: Switch to drm_atomic_helper_crtc_create_state Maxime Ripard
2026-08-24 11:28 ` [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Thomas Zimmermann
0 siblings, 2 replies; 4+ messages in thread
From: Maxime Ripard @ 2026-08-21 14:38 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Janne Grunau, Sasha Finkelstein, asahi,
Christian König, Alex Deucher, amd-gfx, Liviu Dudau,
Russell King, Alim Akhtar, Inki Dae, Krzysztof Kozlowski,
Kyungmin Park, Peter Griffin, Seung-Woo Kim, linux-samsung-soc,
Alison Wang, Stefan Agner, Ruben Wauters, Tian Tao, Xinwei Kong,
Yongbang Shi, John Stultz, Sumit Semwal, Xinliang Liu,
Yongqin Liu, Dexuan Cui, Long Li, Saurabh Sengar, linux-hyperv,
Fabio Estevam, Frank Li, Liu Ying, Pengutronix Kernel Team,
Sascha Hauer, imx, Laurentiu Palcu, Lucas Stach, Paul Cercueil,
linux-mips, Anitha Chrisanthus, Paul Kocialkowski, Jerome Brunet,
Kevin Hilman, Martin Blumenstingl, linux-amlogic, Abhinav Kumar,
Dmitry Baryshkov, Jessica Zhang, Marijn Suijten, Rob Clark,
Sean Paul, freedreno, linux-arm-msm, Marek Vasut, Dave Airlie,
Gerd Hoffmann, spice-devel, virtualization, Geert Uytterhoeven,
linux-renesas-soc, Marcus Folkesson, Baolin Wang, Chunyan Zhang,
Orson Zhai, Alain Volmat, Raphael Gallais-Pou, Alexandre Torgue,
Maxime Coquelin, Philippe Cornu, Raphael Gallais-Pou,
Yannick Fertre, Chen-Yu Tsai, Samuel Holland, linux-sunxi,
Jyri Sarha, Tomi Valkeinen, Aditya Garg, Aun-Ali Zaidi,
LiangCheng Wang, Alex Lanzano, Hans de Goede, Icenowy Zheng,
Chia-I Wu, Dmitry Osipenko, Gurchetan Singh, Michal Simek,
Javier Martinez Canillas, Harry Wentland, Leo Li,
Rodrigo Siqueira, Jocelyn Falempe, Alexandre Belloni,
Claudiu Beznea, Dharma Balasubiramani, Manikandan Muralidharan,
Nicolas Ferre, Philipp Zabel, Huacai Chen, Jianmin Lv,
Mingcong Bai, Qianhai Wu, Xi Ruoyao, AngeloGioacchino Del Regno,
Chun-Kuang Hu, Matthias Brugger, Danilo Krummrich, Lyude Paul,
nouveau, Kieran Bingham, Laurent Pinchart, Magnus Damm,
Tomi Valkeinen, Biju Das, Heiko Stübner, Andy Yan,
Sandy Huang, linux-rockchip, Iker Pedrosa, Jonathan Hunter,
Mikko Perttunen, Thierry Reding, linux-tegra, Maíra Canal,
Dave Stevenson, Raspberry Pi Kernel Maintenance, Haneen Mohammed,
Louis Chauvet, Melissa Wen, Broadcom internal kernel review list,
Zack Rusin
This is a follow-up to the plane reset removal series, and part of a
larger effort to remove the reset hook from all KMS objects.
The CRTC reset hook is overloaded: it is called both at probe time to
create the initial software state and during suspend/resume to reset
hardware and software state. These two roles have different
requirements, and the reset hook is not fallible, making error
handling difficult for the initial state allocation path.
While reset has the semantics to reset both the software and hardware
state, the vast majority of implementations and all the helpers only
reset the software state, making them equivalent to
atomic_create_state in practice. The atomic_create_state hook makes
this explicit: it only allocates and initializes a pristine state
without any side effect, and returns the state pointer or an ERR_PTR
on failure.
This series converts all CRTC drivers tree-wide from the reset hook to
atomic_create_state, then removes the reset hook from struct
drm_crtc_funcs entirely. Two drivers (tilcdc and loongson) had actual
hardware reset logic mixed into their reset hook; those are moved to
CRTC creation instead. The conversions were done using a combination of
Coccinelle semantic patches and manual adjustments.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Maxime Ripard (70):
drm/adp: Switch to drm_atomic_helper_crtc_create_state
drm/amdgpu: vkms: Switch to drm_atomic_helper_crtc_create_state
drm/arm: hdlcd: Switch to drm_atomic_helper_crtc_create_state
drm/armada: Switch to drm_atomic_helper_crtc_create_state
drm/exynos: Switch to drm_atomic_helper_crtc_create_state
drm/fsl-dcu: Switch to drm_atomic_helper_crtc_create_state
drm/gud: Switch to drm_atomic_helper_crtc_create_state
drm/hisilicon: hibmc: Switch to drm_atomic_helper_crtc_create_state
drm/hisilicon: kirin: Switch to drm_atomic_helper_crtc_create_state
drm/hyperv: Switch to drm_atomic_helper_crtc_create_state
drm/imx: dc: Switch to drm_atomic_helper_crtc_create_state
drm/imx: dcss: Switch to drm_atomic_helper_crtc_create_state
drm/ingenic: Switch to drm_atomic_helper_crtc_create_state
drm/kmb: Switch to drm_atomic_helper_crtc_create_state
drm/logicvc: Switch to drm_atomic_helper_crtc_create_state
drm/meson: Switch to drm_atomic_helper_crtc_create_state
drm/msm: mdp4: Switch to drm_atomic_helper_crtc_create_state
drm/mxs: mxsfb: Switch to drm_atomic_helper_crtc_create_state
drm/qxl: Switch to drm_atomic_helper_crtc_create_state
drm/renesas: shmobile: Switch to drm_atomic_helper_crtc_create_state
drm/simple-kms: Remove unused reset_crtc hook
drm/simple-kms: Switch to drm_atomic_helper_crtc_create_state
drm/sitronix: st7571: Switch to drm_atomic_helper_crtc_create_state
drm/sprd: Switch to drm_atomic_helper_crtc_create_state
drm/sti: Switch to drm_atomic_helper_crtc_create_state
drm/stm: Switch to drm_atomic_helper_crtc_create_state
drm/sun4i: Switch to drm_atomic_helper_crtc_create_state
drm/tests: Switch to drm_atomic_helper_crtc_create_state
drm/tilcdc: Move hardware reset to CRTC creation
drm/tilcdc: Switch to drm_atomic_helper_crtc_create_state
drm/tiny: appletbdrm: Switch to drm_atomic_helper_crtc_create_state
drm/tiny: bochs: Switch to drm_atomic_helper_crtc_create_state
drm/tiny: cirrus: Switch to drm_atomic_helper_crtc_create_state
drm/tiny: pixpaper: Switch to drm_atomic_helper_crtc_create_state
drm/tiny: sharp: Switch to drm_atomic_helper_crtc_create_state
drm/udl: Switch to drm_atomic_helper_crtc_create_state
drm/vbox: Switch to drm_atomic_helper_crtc_create_state
drm/verisilicon: Switch to drm_atomic_helper_crtc_create_state
drm/virtio: Switch to drm_atomic_helper_crtc_create_state
drm/xlnx: Switch to drm_atomic_helper_crtc_create_state
drm/mipi-dbi: Switch to drm_atomic_helper_crtc_create_state
drm/atomic-helper: Remove drm_atomic_helper_crtc_reset
sysfb: Convert to create_state
drm/amdgpu: dm: Convert to atomic_create_state
drm/komeda: Convert to atomic_create_state
drm/malidp: Convert to atomic_create_state
drm/ast: Convert to atomic_create_state
drm/atmel-hlcdc: Convert to atomic_create_state
drm/imx: ipuv3: Convert to atomic_create_state
drm/loongsoon: Move hardware reset to CRTC creation
drm/loongson: Convert to atomic_create_state
drm/mediatek: Convert to atomic_create_state
drm/mgag200: Convert to atomic_create_state
drm/msm: dpu1: Convert to atomic_create_state
drm/msm: mdp5: Convert to atomic_create_state
drm/mxsfb: lcdif: Convert to atomic_create_state
drm/nouveau: Convert to atomic_create_state
drm/omapdrm: Convert to atomic_create_state
drm/rcar-du: Convert to atomic_create_state
drm/rzg2l-du: Convert to atomic_create_state
drm/rockchip: vop: Convert to atomic_create_state
drm/rockchip: vop2: Convert to atomic_create_state
drm/sitronix: st7920: Convert to atomic_create_state
drm/solomon: ssd130x: Convert to atomic_create_state
drm/tegra: Convert to atomic_create_state
drm/vc4: Convert to atomic_create_state
drm/vkms: Convert to atomic_create_state
drm/vmwgfx: Convert to atomic_create_state
drm/atomic-helper: Remove __drm_atomic_helper_crtc_reset
drm/crtc: Remove reset
drivers/gpu/drm/adp/adp_drv.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 17 ++++----
drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 18 ++++----
drivers/gpu/drm/arm/hdlcd_crtc.c | 2 +-
drivers/gpu/drm/arm/malidp_crtc.c | 18 ++++----
drivers/gpu/drm/armada/armada_crtc.c | 2 +-
drivers/gpu/drm/ast/ast_mode.c | 18 ++++----
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 19 ++++-----
drivers/gpu/drm/drm_atomic_state_helper.c | 45 --------------------
drivers/gpu/drm/drm_mode_config.c | 4 +-
drivers/gpu/drm/drm_simple_kms_helper.c | 13 +-----
drivers/gpu/drm/exynos/exynos_drm_crtc.c | 2 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 2 +-
drivers/gpu/drm/gud/gud_drv.c | 2 +-
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 2 +-
drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +-
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 2 +-
drivers/gpu/drm/imx/dc/dc-crtc.c | 2 +-
drivers/gpu/drm/imx/dcss/dcss-crtc.c | 2 +-
drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c | 18 ++++----
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
drivers/gpu/drm/kmb/kmb_crtc.c | 2 +-
drivers/gpu/drm/logicvc/logicvc_crtc.c | 2 +-
drivers/gpu/drm/loongson/lsdc_crtc.c | 26 ++++++------
drivers/gpu/drm/mediatek/mtk_crtc.c | 18 ++++----
drivers/gpu/drm/meson/meson_crtc.c | 2 +-
drivers/gpu/drm/mgag200/mgag200_drv.h | 4 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 15 ++++---
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 18 ++++----
drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 2 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 20 ++++-----
drivers/gpu/drm/mxsfb/lcdif_kms.c | 17 ++++----
drivers/gpu/drm/mxsfb/mxsfb_kms.c | 4 +-
drivers/gpu/drm/nouveau/dispnv50/head.c | 14 +++----
drivers/gpu/drm/omapdrm/omap_crtc.c | 17 ++++----
drivers/gpu/drm/qxl/qxl_display.c | 2 +-
drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c | 17 ++++----
drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c | 15 +++----
drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 18 ++++----
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 18 ++++----
drivers/gpu/drm/sitronix/st7571.c | 2 +-
drivers/gpu/drm/sitronix/st7920.c | 10 +++--
drivers/gpu/drm/solomon/ssd130x.c | 10 +++--
drivers/gpu/drm/sprd/sprd_dpu.c | 2 +-
drivers/gpu/drm/sti/sti_crtc.c | 2 +-
drivers/gpu/drm/stm/ltdc.c | 4 +-
drivers/gpu/drm/sun4i/sun4i_crtc.c | 2 +-
drivers/gpu/drm/sysfb/drm_sysfb_helper.h | 4 +-
drivers/gpu/drm/sysfb/drm_sysfb_modeset.c | 20 ++++-----
drivers/gpu/drm/tegra/dc.c | 18 ++++----
drivers/gpu/drm/tests/drm_kunit_helpers.c | 2 +-
drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 49 +++++++++-------------
drivers/gpu/drm/tiny/appletbdrm.c | 2 +-
drivers/gpu/drm/tiny/bochs.c | 2 +-
drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +-
drivers/gpu/drm/tiny/pixpaper.c | 2 +-
drivers/gpu/drm/tiny/sharp-memory.c | 2 +-
drivers/gpu/drm/udl/udl_modeset.c | 2 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 2 +-
drivers/gpu/drm/vc4/tests/vc4_mock_crtc.c | 2 +-
drivers/gpu/drm/vc4/vc4_crtc.c | 14 +++----
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vc4/vc4_txp.c | 2 +-
drivers/gpu/drm/verisilicon/vs_crtc.c | 2 +-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
drivers/gpu/drm/vkms/vkms_crtc.c | 18 ++++----
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 22 ++++------
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 2 +-
drivers/gpu/drm/xlnx/zynqmp_kms.c | 2 +-
include/drm/drm_atomic_state_helper.h | 3 --
include/drm/drm_crtc.h | 12 ------
include/drm/drm_mipi_dbi.h | 2 +-
include/drm/drm_simple_kms_helper.h | 1 -
78 files changed, 275 insertions(+), 385 deletions(-)
---
base-commit: 7ea58b9ddb52264a4ed36bccb975062ada32c62d
change-id: 20260709-drm-no-more-crtc-reset-14a4d5bc8d41
Best regards,
--
Maxime Ripard <mripard@kernel.org>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 13/70] drm/ingenic: Switch to drm_atomic_helper_crtc_create_state
2026-08-21 14:38 [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Maxime Ripard
@ 2026-08-21 14:38 ` Maxime Ripard
2026-08-24 9:43 ` Paul Cercueil
2026-08-24 11:28 ` [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Thomas Zimmermann
1 sibling, 1 reply; 4+ messages in thread
From: Maxime Ripard @ 2026-08-21 14:38 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Paul Cercueil, linux-mips
The ingenic crtc implementation uses the deprecated
drm_atomic_helper_crtc_reset() as its reset hook.
Switch to drm_atomic_helper_crtc_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Paul Cercueil <paul@crapouillou.net>
Cc: linux-mips@vger.kernel.org
---
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 738a80b2550f..67374c611583 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -995,11 +995,11 @@ static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = {
};
static const struct drm_crtc_funcs ingenic_drm_crtc_funcs = {
.set_config = drm_atomic_helper_set_config,
.page_flip = drm_atomic_helper_page_flip,
- .reset = drm_atomic_helper_crtc_reset,
+ .atomic_create_state = drm_atomic_helper_crtc_create_state,
.destroy = drm_crtc_cleanup,
.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 13/70] drm/ingenic: Switch to drm_atomic_helper_crtc_create_state
2026-08-21 14:38 ` [PATCH 13/70] drm/ingenic: Switch to drm_atomic_helper_crtc_create_state Maxime Ripard
@ 2026-08-24 9:43 ` Paul Cercueil
0 siblings, 0 replies; 4+ messages in thread
From: Paul Cercueil @ 2026-08-24 9:43 UTC (permalink / raw)
To: Maxime Ripard, Maarten Lankhorst, Thomas Zimmermann, David Airlie,
Simona Vetter
Cc: dri-devel, linux-mips
Hi Maxime,
Le vendredi 21 août 2026 à 16:38 +0200, Maxime Ripard a écrit :
> The ingenic crtc implementation uses the deprecated
> drm_atomic_helper_crtc_reset() as its reset hook.
>
> Switch to drm_atomic_helper_crtc_create_state() instead.
>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
Acked-by: Paul Cercueil <paul@crapouillou.net>
Cheers,
-Paul
> ---
> Cc: Paul Cercueil <paul@crapouillou.net>
> Cc: linux-mips@vger.kernel.org
> ---
> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index 738a80b2550f..67374c611583 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -995,11 +995,11 @@ static const struct drm_plane_funcs
> ingenic_drm_primary_plane_funcs = {
> };
>
> static const struct drm_crtc_funcs ingenic_drm_crtc_funcs = {
> .set_config = drm_atomic_helper_set_config,
> .page_flip = drm_atomic_helper_page_flip,
> - .reset = drm_atomic_helper_crtc_reset,
> + .atomic_create_state = drm_atomic_helper_crtc_create_state,
> .destroy = drm_crtc_cleanup,
>
> .atomic_duplicate_state =
> drm_atomic_helper_crtc_duplicate_state,
> .atomic_destroy_state =
> drm_atomic_helper_crtc_destroy_state,
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset
2026-08-21 14:38 [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Maxime Ripard
2026-08-21 14:38 ` [PATCH 13/70] drm/ingenic: Switch to drm_atomic_helper_crtc_create_state Maxime Ripard
@ 2026-08-24 11:28 ` Thomas Zimmermann
1 sibling, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2026-08-24 11:28 UTC (permalink / raw)
To: Maxime Ripard, Maarten Lankhorst, David Airlie, Simona Vetter
Cc: dri-devel, Janne Grunau, Sasha Finkelstein, asahi,
Christian König, Alex Deucher, amd-gfx, Liviu Dudau,
Russell King, Alim Akhtar, Inki Dae, Krzysztof Kozlowski,
Kyungmin Park, Peter Griffin, Seung-Woo Kim, linux-samsung-soc,
Alison Wang, Stefan Agner, Ruben Wauters, Tian Tao, Xinwei Kong,
Yongbang Shi, John Stultz, Sumit Semwal, Xinliang Liu,
Yongqin Liu, Dexuan Cui, Long Li, Saurabh Sengar, linux-hyperv,
Fabio Estevam, Frank Li, Liu Ying, Pengutronix Kernel Team,
Sascha Hauer, imx, Laurentiu Palcu, Lucas Stach, Paul Cercueil,
linux-mips, Anitha Chrisanthus, Paul Kocialkowski, Jerome Brunet,
Kevin Hilman, Martin Blumenstingl, linux-amlogic, Abhinav Kumar,
Dmitry Baryshkov, Jessica Zhang, Marijn Suijten, Rob Clark,
Sean Paul, freedreno, linux-arm-msm, Marek Vasut, Dave Airlie,
Gerd Hoffmann, spice-devel, virtualization, Geert Uytterhoeven,
linux-renesas-soc, Marcus Folkesson, Baolin Wang, Chunyan Zhang,
Orson Zhai, Alain Volmat, Raphael Gallais-Pou, Alexandre Torgue,
Maxime Coquelin, Philippe Cornu, Raphael Gallais-Pou,
Yannick Fertre, Chen-Yu Tsai, Samuel Holland, linux-sunxi,
Jyri Sarha, Tomi Valkeinen, Aditya Garg, Aun-Ali Zaidi,
LiangCheng Wang, Alex Lanzano, Hans de Goede, Icenowy Zheng,
Chia-I Wu, Dmitry Osipenko, Gurchetan Singh, Michal Simek,
Javier Martinez Canillas, Harry Wentland, Leo Li,
Rodrigo Siqueira, Jocelyn Falempe, Alexandre Belloni,
Claudiu Beznea, Dharma Balasubiramani, Manikandan Muralidharan,
Nicolas Ferre, Philipp Zabel, Huacai Chen, Jianmin Lv,
Mingcong Bai, Qianhai Wu, Xi Ruoyao, AngeloGioacchino Del Regno,
Chun-Kuang Hu, Matthias Brugger, Danilo Krummrich, Lyude Paul,
nouveau, Kieran Bingham, Laurent Pinchart, Magnus Damm,
Tomi Valkeinen, Biju Das, Heiko Stübner, Andy Yan,
Sandy Huang, linux-rockchip, Iker Pedrosa, Jonathan Hunter,
Mikko Perttunen, Thierry Reding, linux-tegra, Maíra Canal,
Dave Stevenson, Raspberry Pi Kernel Maintenance, Haneen Mohammed,
Louis Chauvet, Melissa Wen, Broadcom internal kernel review list,
Zack Rusin
Hi Maxime
Am 21.08.26 um 16:38 schrieb Maxime Ripard:
> This is a follow-up to the plane reset removal series, and part of a
> larger effort to remove the reset hook from all KMS objects.
>
> The CRTC reset hook is overloaded: it is called both at probe time to
> create the initial software state and during suspend/resume to reset
> hardware and software state. These two roles have different
> requirements, and the reset hook is not fallible, making error
> handling difficult for the initial state allocation path.
>
> While reset has the semantics to reset both the software and hardware
> state, the vast majority of implementations and all the helpers only
> reset the software state, making them equivalent to
> atomic_create_state in practice. The atomic_create_state hook makes
> this explicit: it only allocates and initializes a pristine state
> without any side effect, and returns the state pointer or an ERR_PTR
> on failure.
>
> This series converts all CRTC drivers tree-wide from the reset hook to
> atomic_create_state, then removes the reset hook from struct
> drm_crtc_funcs entirely. Two drivers (tilcdc and loongson) had actual
> hardware reset logic mixed into their reset hook; those are moved to
> CRTC creation instead. The conversions were done using a combination of
> Coccinelle semantic patches and manual adjustments.
>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
I've gone through the series and it looks good to me; except for patch 50.
Feel free to add
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
to the series with the exception of patch 50.
Best regards
Thomas
> ---
> Maxime Ripard (70):
> drm/adp: Switch to drm_atomic_helper_crtc_create_state
> drm/amdgpu: vkms: Switch to drm_atomic_helper_crtc_create_state
> drm/arm: hdlcd: Switch to drm_atomic_helper_crtc_create_state
> drm/armada: Switch to drm_atomic_helper_crtc_create_state
> drm/exynos: Switch to drm_atomic_helper_crtc_create_state
> drm/fsl-dcu: Switch to drm_atomic_helper_crtc_create_state
> drm/gud: Switch to drm_atomic_helper_crtc_create_state
> drm/hisilicon: hibmc: Switch to drm_atomic_helper_crtc_create_state
> drm/hisilicon: kirin: Switch to drm_atomic_helper_crtc_create_state
> drm/hyperv: Switch to drm_atomic_helper_crtc_create_state
> drm/imx: dc: Switch to drm_atomic_helper_crtc_create_state
> drm/imx: dcss: Switch to drm_atomic_helper_crtc_create_state
> drm/ingenic: Switch to drm_atomic_helper_crtc_create_state
> drm/kmb: Switch to drm_atomic_helper_crtc_create_state
> drm/logicvc: Switch to drm_atomic_helper_crtc_create_state
> drm/meson: Switch to drm_atomic_helper_crtc_create_state
> drm/msm: mdp4: Switch to drm_atomic_helper_crtc_create_state
> drm/mxs: mxsfb: Switch to drm_atomic_helper_crtc_create_state
> drm/qxl: Switch to drm_atomic_helper_crtc_create_state
> drm/renesas: shmobile: Switch to drm_atomic_helper_crtc_create_state
> drm/simple-kms: Remove unused reset_crtc hook
> drm/simple-kms: Switch to drm_atomic_helper_crtc_create_state
> drm/sitronix: st7571: Switch to drm_atomic_helper_crtc_create_state
> drm/sprd: Switch to drm_atomic_helper_crtc_create_state
> drm/sti: Switch to drm_atomic_helper_crtc_create_state
> drm/stm: Switch to drm_atomic_helper_crtc_create_state
> drm/sun4i: Switch to drm_atomic_helper_crtc_create_state
> drm/tests: Switch to drm_atomic_helper_crtc_create_state
> drm/tilcdc: Move hardware reset to CRTC creation
> drm/tilcdc: Switch to drm_atomic_helper_crtc_create_state
> drm/tiny: appletbdrm: Switch to drm_atomic_helper_crtc_create_state
> drm/tiny: bochs: Switch to drm_atomic_helper_crtc_create_state
> drm/tiny: cirrus: Switch to drm_atomic_helper_crtc_create_state
> drm/tiny: pixpaper: Switch to drm_atomic_helper_crtc_create_state
> drm/tiny: sharp: Switch to drm_atomic_helper_crtc_create_state
> drm/udl: Switch to drm_atomic_helper_crtc_create_state
> drm/vbox: Switch to drm_atomic_helper_crtc_create_state
> drm/verisilicon: Switch to drm_atomic_helper_crtc_create_state
> drm/virtio: Switch to drm_atomic_helper_crtc_create_state
> drm/xlnx: Switch to drm_atomic_helper_crtc_create_state
> drm/mipi-dbi: Switch to drm_atomic_helper_crtc_create_state
> drm/atomic-helper: Remove drm_atomic_helper_crtc_reset
> sysfb: Convert to create_state
> drm/amdgpu: dm: Convert to atomic_create_state
> drm/komeda: Convert to atomic_create_state
> drm/malidp: Convert to atomic_create_state
> drm/ast: Convert to atomic_create_state
> drm/atmel-hlcdc: Convert to atomic_create_state
> drm/imx: ipuv3: Convert to atomic_create_state
> drm/loongsoon: Move hardware reset to CRTC creation
> drm/loongson: Convert to atomic_create_state
> drm/mediatek: Convert to atomic_create_state
> drm/mgag200: Convert to atomic_create_state
> drm/msm: dpu1: Convert to atomic_create_state
> drm/msm: mdp5: Convert to atomic_create_state
> drm/mxsfb: lcdif: Convert to atomic_create_state
> drm/nouveau: Convert to atomic_create_state
> drm/omapdrm: Convert to atomic_create_state
> drm/rcar-du: Convert to atomic_create_state
> drm/rzg2l-du: Convert to atomic_create_state
> drm/rockchip: vop: Convert to atomic_create_state
> drm/rockchip: vop2: Convert to atomic_create_state
> drm/sitronix: st7920: Convert to atomic_create_state
> drm/solomon: ssd130x: Convert to atomic_create_state
> drm/tegra: Convert to atomic_create_state
> drm/vc4: Convert to atomic_create_state
> drm/vkms: Convert to atomic_create_state
> drm/vmwgfx: Convert to atomic_create_state
> drm/atomic-helper: Remove __drm_atomic_helper_crtc_reset
> drm/crtc: Remove reset
>
> drivers/gpu/drm/adp/adp_drv.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +-
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 17 ++++----
> drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 18 ++++----
> drivers/gpu/drm/arm/hdlcd_crtc.c | 2 +-
> drivers/gpu/drm/arm/malidp_crtc.c | 18 ++++----
> drivers/gpu/drm/armada/armada_crtc.c | 2 +-
> drivers/gpu/drm/ast/ast_mode.c | 18 ++++----
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 19 ++++-----
> drivers/gpu/drm/drm_atomic_state_helper.c | 45 --------------------
> drivers/gpu/drm/drm_mode_config.c | 4 +-
> drivers/gpu/drm/drm_simple_kms_helper.c | 13 +-----
> drivers/gpu/drm/exynos/exynos_drm_crtc.c | 2 +-
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 2 +-
> drivers/gpu/drm/gud/gud_drv.c | 2 +-
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 2 +-
> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +-
> drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 2 +-
> drivers/gpu/drm/imx/dc/dc-crtc.c | 2 +-
> drivers/gpu/drm/imx/dcss/dcss-crtc.c | 2 +-
> drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c | 18 ++++----
> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
> drivers/gpu/drm/kmb/kmb_crtc.c | 2 +-
> drivers/gpu/drm/logicvc/logicvc_crtc.c | 2 +-
> drivers/gpu/drm/loongson/lsdc_crtc.c | 26 ++++++------
> drivers/gpu/drm/mediatek/mtk_crtc.c | 18 ++++----
> drivers/gpu/drm/meson/meson_crtc.c | 2 +-
> drivers/gpu/drm/mgag200/mgag200_drv.h | 4 +-
> drivers/gpu/drm/mgag200/mgag200_mode.c | 15 ++++---
> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 18 ++++----
> drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 2 +-
> drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 20 ++++-----
> drivers/gpu/drm/mxsfb/lcdif_kms.c | 17 ++++----
> drivers/gpu/drm/mxsfb/mxsfb_kms.c | 4 +-
> drivers/gpu/drm/nouveau/dispnv50/head.c | 14 +++----
> drivers/gpu/drm/omapdrm/omap_crtc.c | 17 ++++----
> drivers/gpu/drm/qxl/qxl_display.c | 2 +-
> drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c | 17 ++++----
> drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c | 15 +++----
> drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 18 ++++----
> drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 18 ++++----
> drivers/gpu/drm/sitronix/st7571.c | 2 +-
> drivers/gpu/drm/sitronix/st7920.c | 10 +++--
> drivers/gpu/drm/solomon/ssd130x.c | 10 +++--
> drivers/gpu/drm/sprd/sprd_dpu.c | 2 +-
> drivers/gpu/drm/sti/sti_crtc.c | 2 +-
> drivers/gpu/drm/stm/ltdc.c | 4 +-
> drivers/gpu/drm/sun4i/sun4i_crtc.c | 2 +-
> drivers/gpu/drm/sysfb/drm_sysfb_helper.h | 4 +-
> drivers/gpu/drm/sysfb/drm_sysfb_modeset.c | 20 ++++-----
> drivers/gpu/drm/tegra/dc.c | 18 ++++----
> drivers/gpu/drm/tests/drm_kunit_helpers.c | 2 +-
> drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 49 +++++++++-------------
> drivers/gpu/drm/tiny/appletbdrm.c | 2 +-
> drivers/gpu/drm/tiny/bochs.c | 2 +-
> drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +-
> drivers/gpu/drm/tiny/pixpaper.c | 2 +-
> drivers/gpu/drm/tiny/sharp-memory.c | 2 +-
> drivers/gpu/drm/udl/udl_modeset.c | 2 +-
> drivers/gpu/drm/vboxvideo/vbox_mode.c | 2 +-
> drivers/gpu/drm/vc4/tests/vc4_mock_crtc.c | 2 +-
> drivers/gpu/drm/vc4/vc4_crtc.c | 14 +++----
> drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
> drivers/gpu/drm/vc4/vc4_txp.c | 2 +-
> drivers/gpu/drm/verisilicon/vs_crtc.c | 2 +-
> drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
> drivers/gpu/drm/vkms/vkms_crtc.c | 18 ++++----
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 22 ++++------
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 2 +-
> drivers/gpu/drm/xlnx/zynqmp_kms.c | 2 +-
> include/drm/drm_atomic_state_helper.h | 3 --
> include/drm/drm_crtc.h | 12 ------
> include/drm/drm_mipi_dbi.h | 2 +-
> include/drm/drm_simple_kms_helper.h | 1 -
> 78 files changed, 275 insertions(+), 385 deletions(-)
> ---
> base-commit: 7ea58b9ddb52264a4ed36bccb975062ada32c62d
> change-id: 20260709-drm-no-more-crtc-reset-14a4d5bc8d41
>
> Best regards,
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-24 11:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-21 14:38 [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Maxime Ripard
2026-08-21 14:38 ` [PATCH 13/70] drm/ingenic: Switch to drm_atomic_helper_crtc_create_state Maxime Ripard
2026-08-24 9:43 ` Paul Cercueil
2026-08-24 11:28 ` [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Thomas Zimmermann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox