[PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset
Thomas Zimmermann
tzimmermann at suse.de
Mon Aug 24 04:28:05 PDT 2026
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 at 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 at 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)
More information about the linux-amlogic
mailing list