[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