* [PATCH v2 00/59] drm/connector: Convert all drivers to atomic_create_state and remove reset
@ 2026-10-22 12:30 ` Maxime Ripard
0 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:30 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal, Dave Stevenson,
Raspberry Pi Kernel Maintenance, Ruben Wauters, Chen-Yu Tsai,
Samuel Holland, linux-sunxi, Christian König, Alex Deucher,
amd-gfx, Andrew Jeffery, Joel Stanley, Dave Airlie,
Jocelyn Falempe, Russell King, Alim Akhtar, Inki Dae,
Krzysztof Kozlowski, Kyungmin Park, Peter Griffin, Seung-Woo Kim,
linux-samsung-soc, Alison Wang, Stefan Agner, Tian Tao,
Xinwei Kong, Yongbang Shi, Paul Kocialkowski, Huacai Chen,
Icenowy Zheng, Jianmin Lv, Mingcong Bai, Qianhai Wu, Xi Ruoyao,
Gerd Hoffmann, spice-devel, virtualization, Geert Uytterhoeven,
linux-renesas-soc, Marcus Folkesson, Iker Pedrosa, Alain Volmat,
Raphael Gallais-Pou, Jonathan Hunter, Mikko Perttunen,
Thierry Reding, linux-tegra, Alexey Brodkin, Hans de Goede,
LiangCheng Wang, Alex Lanzano, Sean Paul, Chia-I Wu,
Dmitry Osipenko, Gurchetan Singh, Haneen Mohammed, Louis Chauvet,
Melissa Wen, Oleksandr Andrushchenko, Jerome Brunet, Kevin Hilman,
Martin Blumenstingl, linux-amlogic, Harry Wentland, Leo Li,
Rodrigo Siqueira, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi,
Tvrtko Ursulin, intel-gfx, intel-xe, Danilo Krummrich, Lyude Paul,
nouveau
This is a follow-up to the plane and CRTC reset removal series, and
part of a larger effort to remove the reset hook from all KMS objects.
The connector 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 connector drivers tree-wide from the reset hook
to atomic_create_state, then removes the reset hook from struct
drm_connector_funcs entirely. The conversions were done using a
combination of Coccinelle semantic patches, mechanical one-line
replacements and manual adjustments.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Changes in v2:
- Change the parameter order of __drm_atomic_helper_connector_hdmi_state_init
- Fixed state argument casing for drm_atomic_helper_connector_tv_margins_state_init
and drm_atomic_helper_connector_tv_state_init
- Put atomic_create_state before atomic_duplicate_state
- Fix state allocation for MST and WB connectors
- Link to v1:
https://lore.kernel.org/r/20261014-drm-no-more-connector-reset-v1-0-586c9c026823@kernel.org
---
Maxime Ripard (59):
drm/hdmi: Change __drm_atomic_helper_connector_hdmi_state_init parameter order
drm/atomic-state-helper: Rename connector_tv_margins_reset to state_init
drm/atomic-state-helper: Rename connector_tv_reset to state_init
drm/panel: Add atomic_create_state support
drm/amdgpu: vkms: Switch to drm_atomic_helper_connector_create_state
drm/aspeed: Switch to drm_atomic_helper_connector_create_state
drm/ast: Switch to drm_atomic_helper_connector_create_state
drm/bridge: analogix-anx6345: Switch to drm_atomic_helper_connector_create_state
drm/bridge: analogix-anx78xx: Switch to drm_atomic_helper_connector_create_state
drm/bridge: chrontel-ch7033: Switch to drm_atomic_helper_connector_create_state
drm/bridge: nxp-ptn3460: Switch to drm_atomic_helper_connector_create_state
drm/panel: Switch to drm_atomic_helper_connector_create_state
drm/bridge: synopsys: dw-hdmi: Switch to drm_atomic_helper_connector_create_state
drm/bridge: tc358767: Switch to drm_atomic_helper_connector_create_state
drm/bridge: tda998x: Switch to drm_atomic_helper_connector_create_state
drm/bridge: ti-tfp410: Switch to drm_atomic_helper_connector_create_state
drm/exynos: Switch to drm_atomic_helper_connector_create_state
drm/fsl-dcu: Switch to drm_atomic_helper_connector_create_state
drm/hisilicon: hibmc: Switch to drm_atomic_helper_connector_create_state
drm/logicvc: Switch to drm_atomic_helper_connector_create_state
drm/loongson: Switch to drm_atomic_helper_connector_create_state
drm/mgag200: Switch to drm_atomic_helper_connector_create_state
drm/mipi-dbi: Switch to drm_atomic_helper_connector_create_state
drm/qxl: Switch to drm_atomic_helper_connector_create_state
drm/renesas: shmobile: Switch to drm_atomic_helper_connector_create_state
drm/sitronix: st7571: Switch to drm_atomic_helper_connector_create_state
drm/sitronix: st7920: Switch to drm_atomic_helper_connector_create_state
drm/sti: Switch to drm_atomic_helper_connector_create_state
drm/sun4i: Switch to drm_atomic_helper_connector_create_state
drm/tegra: Switch to drm_atomic_helper_connector_create_state
drm/tests: Switch to drm_atomic_helper_connector_create_state
drm/tiny: arcpgu: Switch to drm_atomic_helper_connector_create_state
drm/tiny: bochs: Switch to drm_atomic_helper_connector_create_state
drm/tiny: cirrus: Switch to drm_atomic_helper_connector_create_state
drm/tiny: gm12u320: Switch to drm_atomic_helper_connector_create_state
drm/tiny: pixpaper: Switch to drm_atomic_helper_connector_create_state
drm/tiny: repaper: Switch to drm_atomic_helper_connector_create_state
drm/tiny: sharp: Switch to drm_atomic_helper_connector_create_state
drm/udl: Switch to drm_atomic_helper_connector_create_state
drm/vboxvideo: Switch to drm_atomic_helper_connector_create_state
drm/virtio: Switch to drm_atomic_helper_connector_create_state
drm/vkms: Switch to drm_atomic_helper_connector_create_state
drm/xen: Switch to drm_atomic_helper_connector_create_state
drm/bridge: synopsys: dw-hdmi: Convert to atomic_create_state
drm/meson: Convert to atomic_create_state
drm/gud: Convert to atomic_create_state
drm/sun4i: hdmi: Convert to atomic_create_state
drm/sun4i: tv: Convert to atomic_create_state
drm/tests: hdmi: Convert to atomic_create_state
drm/vc4: hdmi: Convert to atomic_create_state
drm/vc4: vec: Convert to atomic_create_state
drm/connector: Remove drm_atomic_helper_connector_reset()
drm/amdgpu: dm: Convert to atomic_create_state
drm/ast: Convert to atomic_create_state
drm/i915: Convert to atomic_create_state
drm/nouveau: Convert to atomic_create_state
drm/tegra: Convert to atomic_create_state
drm/connector: Remove __drm_atomic_helper_connector_reset()
drm/connector: Remove reset
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +-
.../amd/display/amdgpu_dm/amdgpu_dm_connector.c | 32 ++++----
.../amd/display/amdgpu_dm/amdgpu_dm_connector.h | 3 +-
.../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 11 ++-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 17 +++-
.../amdgpu_dm/tests/amdgpu_dm_connector_test.c | 90 ++++++++++++++--------
drivers/gpu/drm/aspeed/aspeed_gfx_out.c | 2 +-
drivers/gpu/drm/ast/ast_dp.c | 18 ++---
drivers/gpu/drm/ast/ast_dp501.c | 2 +-
drivers/gpu/drm/ast/ast_sil164.c | 2 +-
drivers/gpu/drm/ast/ast_vga.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 2 +-
drivers/gpu/drm/bridge/chrontel-ch7033.c | 2 +-
drivers/gpu/drm/bridge/nxp-ptn3460.c | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 12 ++-
drivers/gpu/drm/bridge/tc358767.c | 2 +-
drivers/gpu/drm/bridge/tda998x_drv.c | 2 +-
drivers/gpu/drm/bridge/ti-tfp410.c | 2 +-
drivers/gpu/drm/display/drm_bridge_connector.c | 4 +-
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 9 +--
drivers/gpu/drm/drm_atomic_state_helper.c | 67 ++++------------
drivers/gpu/drm/drm_connector.c | 8 --
drivers/gpu/drm/drm_mode_config.c | 4 +-
drivers/gpu/drm/drm_panel.c | 16 +++-
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 2 +-
drivers/gpu/drm/exynos/exynos_drm_vidi.c | 2 +-
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 2 +-
drivers/gpu/drm/gud/gud_connector.c | 20 +++--
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c | 2 +-
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 2 +-
drivers/gpu/drm/i915/display/intel_connector.c | 6 +-
drivers/gpu/drm/i915/display/intel_sdvo.c | 6 +-
drivers/gpu/drm/logicvc/logicvc_interface.c | 2 +-
drivers/gpu/drm/loongson/lsdc_output_7a1000.c | 2 +-
drivers/gpu/drm/loongson/lsdc_output_7a2000.c | 4 +-
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 12 ++-
drivers/gpu/drm/mgag200/mgag200_vga.c | 2 +-
drivers/gpu/drm/mgag200/mgag200_vga_bmc.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 11 ++-
drivers/gpu/drm/nouveau/nouveau_connector.c | 27 ++++---
drivers/gpu/drm/nouveau/nouveau_connector.h | 3 +-
drivers/gpu/drm/qxl/qxl_display.c | 2 +-
drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
drivers/gpu/drm/sitronix/st7571.c | 2 +-
drivers/gpu/drm/sitronix/st7920.c | 2 +-
drivers/gpu/drm/sti/sti_dvo.c | 2 +-
drivers/gpu/drm/sti/sti_hda.c | 2 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 17 +++-
drivers/gpu/drm/sun4i/sun4i_lvds.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_rgb.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_tv.c | 16 +++-
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 2 +-
drivers/gpu/drm/tegra/dsi.c | 17 ++--
drivers/gpu/drm/tegra/hdmi.c | 2 +-
drivers/gpu/drm/tegra/sor.c | 13 ++--
drivers/gpu/drm/tests/drm_atomic_commit_test.c | 2 +-
drivers/gpu/drm/tests/drm_atomic_test.c | 2 +-
drivers/gpu/drm/tests/drm_connector_test.c | 4 +-
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 17 +++-
drivers/gpu/drm/tests/drm_probe_helper_test.c | 2 +-
drivers/gpu/drm/tiny/arcpgu.c | 2 +-
drivers/gpu/drm/tiny/bochs.c | 2 +-
drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +-
drivers/gpu/drm/tiny/gm12u320.c | 2 +-
drivers/gpu/drm/tiny/pixpaper.c | 2 +-
drivers/gpu/drm/tiny/repaper.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/vc4_hdmi.c | 31 ++++++--
drivers/gpu/drm/vc4/vc4_vec.c | 16 +++-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
drivers/gpu/drm/vkms/vkms_connector.c | 2 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 2 +-
drivers/gpu/drm/xen/xen_drm_front_conn.c | 2 +-
include/drm/display/drm_hdmi_state_helper.h | 4 +-
include/drm/drm_atomic_state_helper.h | 9 +--
include/drm/drm_connector.h | 12 ---
include/drm/drm_mipi_dbi.h | 2 +-
82 files changed, 360 insertions(+), 276 deletions(-)
---
base-commit: 91f52e99824b0beebb48cad51bbda81437af8664
change-id: 20260709-drm-no-more-connector-reset-45ee14d7c62c
Best regards,
--
Maxime Ripard <mripard@kernel.org>
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 78+ messages in thread* [PATCH v2 00/59] drm/connector: Convert all drivers to atomic_create_state and remove reset
@ 2026-10-22 12:30 ` Maxime Ripard
0 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:30 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal, Dave Stevenson,
Raspberry Pi Kernel Maintenance, Ruben Wauters, Chen-Yu Tsai,
Samuel Holland, linux-sunxi, Christian König, Alex Deucher,
amd-gfx, Andrew Jeffery, Joel Stanley, Dave Airlie,
Jocelyn Falempe, Russell King, Alim Akhtar, Inki Dae,
Krzysztof Kozlowski, Kyungmin Park, Peter Griffin, Seung-Woo Kim,
linux-samsung-soc, Alison Wang, Stefan Agner, Tian Tao,
Xinwei Kong, Yongbang Shi, Paul Kocialkowski, Huacai Chen,
Icenowy Zheng, Jianmin Lv, Mingcong Bai, Qianhai Wu, Xi Ruoyao,
Gerd Hoffmann, spice-devel, virtualization, Geert Uytterhoeven,
linux-renesas-soc, Marcus Folkesson, Iker Pedrosa, Alain Volmat,
Raphael Gallais-Pou, Jonathan Hunter, Mikko Perttunen,
Thierry Reding, linux-tegra, Alexey Brodkin, Hans de Goede,
LiangCheng Wang, Alex Lanzano, Sean Paul, Chia-I Wu,
Dmitry Osipenko, Gurchetan Singh, Haneen Mohammed, Louis Chauvet,
Melissa Wen, Oleksandr Andrushchenko, Jerome Brunet, Kevin Hilman,
Martin Blumenstingl, linux-amlogic, Harry Wentland, Leo Li,
Rodrigo Siqueira, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi,
Tvrtko Ursulin, intel-gfx, intel-xe, Danilo Krummrich, Lyude Paul,
nouveau
This is a follow-up to the plane and CRTC reset removal series, and
part of a larger effort to remove the reset hook from all KMS objects.
The connector 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 connector drivers tree-wide from the reset hook
to atomic_create_state, then removes the reset hook from struct
drm_connector_funcs entirely. The conversions were done using a
combination of Coccinelle semantic patches, mechanical one-line
replacements and manual adjustments.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Changes in v2:
- Change the parameter order of __drm_atomic_helper_connector_hdmi_state_init
- Fixed state argument casing for drm_atomic_helper_connector_tv_margins_state_init
and drm_atomic_helper_connector_tv_state_init
- Put atomic_create_state before atomic_duplicate_state
- Fix state allocation for MST and WB connectors
- Link to v1:
https://lore.kernel.org/r/20261014-drm-no-more-connector-reset-v1-0-586c9c026823@kernel.org
---
Maxime Ripard (59):
drm/hdmi: Change __drm_atomic_helper_connector_hdmi_state_init parameter order
drm/atomic-state-helper: Rename connector_tv_margins_reset to state_init
drm/atomic-state-helper: Rename connector_tv_reset to state_init
drm/panel: Add atomic_create_state support
drm/amdgpu: vkms: Switch to drm_atomic_helper_connector_create_state
drm/aspeed: Switch to drm_atomic_helper_connector_create_state
drm/ast: Switch to drm_atomic_helper_connector_create_state
drm/bridge: analogix-anx6345: Switch to drm_atomic_helper_connector_create_state
drm/bridge: analogix-anx78xx: Switch to drm_atomic_helper_connector_create_state
drm/bridge: chrontel-ch7033: Switch to drm_atomic_helper_connector_create_state
drm/bridge: nxp-ptn3460: Switch to drm_atomic_helper_connector_create_state
drm/panel: Switch to drm_atomic_helper_connector_create_state
drm/bridge: synopsys: dw-hdmi: Switch to drm_atomic_helper_connector_create_state
drm/bridge: tc358767: Switch to drm_atomic_helper_connector_create_state
drm/bridge: tda998x: Switch to drm_atomic_helper_connector_create_state
drm/bridge: ti-tfp410: Switch to drm_atomic_helper_connector_create_state
drm/exynos: Switch to drm_atomic_helper_connector_create_state
drm/fsl-dcu: Switch to drm_atomic_helper_connector_create_state
drm/hisilicon: hibmc: Switch to drm_atomic_helper_connector_create_state
drm/logicvc: Switch to drm_atomic_helper_connector_create_state
drm/loongson: Switch to drm_atomic_helper_connector_create_state
drm/mgag200: Switch to drm_atomic_helper_connector_create_state
drm/mipi-dbi: Switch to drm_atomic_helper_connector_create_state
drm/qxl: Switch to drm_atomic_helper_connector_create_state
drm/renesas: shmobile: Switch to drm_atomic_helper_connector_create_state
drm/sitronix: st7571: Switch to drm_atomic_helper_connector_create_state
drm/sitronix: st7920: Switch to drm_atomic_helper_connector_create_state
drm/sti: Switch to drm_atomic_helper_connector_create_state
drm/sun4i: Switch to drm_atomic_helper_connector_create_state
drm/tegra: Switch to drm_atomic_helper_connector_create_state
drm/tests: Switch to drm_atomic_helper_connector_create_state
drm/tiny: arcpgu: Switch to drm_atomic_helper_connector_create_state
drm/tiny: bochs: Switch to drm_atomic_helper_connector_create_state
drm/tiny: cirrus: Switch to drm_atomic_helper_connector_create_state
drm/tiny: gm12u320: Switch to drm_atomic_helper_connector_create_state
drm/tiny: pixpaper: Switch to drm_atomic_helper_connector_create_state
drm/tiny: repaper: Switch to drm_atomic_helper_connector_create_state
drm/tiny: sharp: Switch to drm_atomic_helper_connector_create_state
drm/udl: Switch to drm_atomic_helper_connector_create_state
drm/vboxvideo: Switch to drm_atomic_helper_connector_create_state
drm/virtio: Switch to drm_atomic_helper_connector_create_state
drm/vkms: Switch to drm_atomic_helper_connector_create_state
drm/xen: Switch to drm_atomic_helper_connector_create_state
drm/bridge: synopsys: dw-hdmi: Convert to atomic_create_state
drm/meson: Convert to atomic_create_state
drm/gud: Convert to atomic_create_state
drm/sun4i: hdmi: Convert to atomic_create_state
drm/sun4i: tv: Convert to atomic_create_state
drm/tests: hdmi: Convert to atomic_create_state
drm/vc4: hdmi: Convert to atomic_create_state
drm/vc4: vec: Convert to atomic_create_state
drm/connector: Remove drm_atomic_helper_connector_reset()
drm/amdgpu: dm: Convert to atomic_create_state
drm/ast: Convert to atomic_create_state
drm/i915: Convert to atomic_create_state
drm/nouveau: Convert to atomic_create_state
drm/tegra: Convert to atomic_create_state
drm/connector: Remove __drm_atomic_helper_connector_reset()
drm/connector: Remove reset
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +-
.../amd/display/amdgpu_dm/amdgpu_dm_connector.c | 32 ++++----
.../amd/display/amdgpu_dm/amdgpu_dm_connector.h | 3 +-
.../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 11 ++-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 17 +++-
.../amdgpu_dm/tests/amdgpu_dm_connector_test.c | 90 ++++++++++++++--------
drivers/gpu/drm/aspeed/aspeed_gfx_out.c | 2 +-
drivers/gpu/drm/ast/ast_dp.c | 18 ++---
drivers/gpu/drm/ast/ast_dp501.c | 2 +-
drivers/gpu/drm/ast/ast_sil164.c | 2 +-
drivers/gpu/drm/ast/ast_vga.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 2 +-
drivers/gpu/drm/bridge/chrontel-ch7033.c | 2 +-
drivers/gpu/drm/bridge/nxp-ptn3460.c | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 12 ++-
drivers/gpu/drm/bridge/tc358767.c | 2 +-
drivers/gpu/drm/bridge/tda998x_drv.c | 2 +-
drivers/gpu/drm/bridge/ti-tfp410.c | 2 +-
drivers/gpu/drm/display/drm_bridge_connector.c | 4 +-
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 9 +--
drivers/gpu/drm/drm_atomic_state_helper.c | 67 ++++------------
drivers/gpu/drm/drm_connector.c | 8 --
drivers/gpu/drm/drm_mode_config.c | 4 +-
drivers/gpu/drm/drm_panel.c | 16 +++-
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 2 +-
drivers/gpu/drm/exynos/exynos_drm_vidi.c | 2 +-
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 2 +-
drivers/gpu/drm/gud/gud_connector.c | 20 +++--
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c | 2 +-
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 2 +-
drivers/gpu/drm/i915/display/intel_connector.c | 6 +-
drivers/gpu/drm/i915/display/intel_sdvo.c | 6 +-
drivers/gpu/drm/logicvc/logicvc_interface.c | 2 +-
drivers/gpu/drm/loongson/lsdc_output_7a1000.c | 2 +-
drivers/gpu/drm/loongson/lsdc_output_7a2000.c | 4 +-
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 12 ++-
drivers/gpu/drm/mgag200/mgag200_vga.c | 2 +-
drivers/gpu/drm/mgag200/mgag200_vga_bmc.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 11 ++-
drivers/gpu/drm/nouveau/nouveau_connector.c | 27 ++++---
drivers/gpu/drm/nouveau/nouveau_connector.h | 3 +-
drivers/gpu/drm/qxl/qxl_display.c | 2 +-
drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
drivers/gpu/drm/sitronix/st7571.c | 2 +-
drivers/gpu/drm/sitronix/st7920.c | 2 +-
drivers/gpu/drm/sti/sti_dvo.c | 2 +-
drivers/gpu/drm/sti/sti_hda.c | 2 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 17 +++-
drivers/gpu/drm/sun4i/sun4i_lvds.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_rgb.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_tv.c | 16 +++-
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 2 +-
drivers/gpu/drm/tegra/dsi.c | 17 ++--
drivers/gpu/drm/tegra/hdmi.c | 2 +-
drivers/gpu/drm/tegra/sor.c | 13 ++--
drivers/gpu/drm/tests/drm_atomic_commit_test.c | 2 +-
drivers/gpu/drm/tests/drm_atomic_test.c | 2 +-
drivers/gpu/drm/tests/drm_connector_test.c | 4 +-
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 17 +++-
drivers/gpu/drm/tests/drm_probe_helper_test.c | 2 +-
drivers/gpu/drm/tiny/arcpgu.c | 2 +-
drivers/gpu/drm/tiny/bochs.c | 2 +-
drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +-
drivers/gpu/drm/tiny/gm12u320.c | 2 +-
drivers/gpu/drm/tiny/pixpaper.c | 2 +-
drivers/gpu/drm/tiny/repaper.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/vc4_hdmi.c | 31 ++++++--
drivers/gpu/drm/vc4/vc4_vec.c | 16 +++-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
drivers/gpu/drm/vkms/vkms_connector.c | 2 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 2 +-
drivers/gpu/drm/xen/xen_drm_front_conn.c | 2 +-
include/drm/display/drm_hdmi_state_helper.h | 4 +-
include/drm/drm_atomic_state_helper.h | 9 +--
include/drm/drm_connector.h | 12 ---
include/drm/drm_mipi_dbi.h | 2 +-
82 files changed, 360 insertions(+), 276 deletions(-)
---
base-commit: 91f52e99824b0beebb48cad51bbda81437af8664
change-id: 20260709-drm-no-more-connector-reset-45ee14d7c62c
Best regards,
--
Maxime Ripard <mripard@kernel.org>
^ permalink raw reply [flat|nested] 78+ messages in thread* [PATCH v2 01/59] drm/hdmi: Change __drm_atomic_helper_connector_hdmi_state_init parameter order
2026-10-22 12:30 ` Maxime Ripard
(?)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 20:57 ` Maíra Canal
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal
All other state init helpers take the state as first parameter and the
entity as second: __drm_atomic_helper_crtc_state_init(),
__drm_atomic_helper_plane_state_init(),
__drm_atomic_helper_connector_state_init(), and
__drm_atomic_helper_bridge_state_init().
__drm_atomic_helper_connector_hdmi_state_init() is the only one taking
the connector first and the state second. Swap its parameters to match
the established convention.
Suggested-by: Maíra Canal <mcanal@igalia.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/display/drm_bridge_connector.c | 4 ++--
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 6 +++---
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 3 ++-
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 3 ++-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
include/drm/display/drm_hdmi_state_helper.h | 4 ++--
6 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 81f3e26f6fdf..2202e6044444 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -239,6 +239,6 @@ drm_bridge_connector_create_state(struct drm_connector *connector)
if (bridge_connector->bridge_hdmi)
- __drm_atomic_helper_connector_hdmi_state_init(connector,
- conn_state);
+ __drm_atomic_helper_connector_hdmi_state_init(conn_state,
+ connector);
return conn_state;
diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index 7cdb7ca3dc12..c63d439382bb 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -310,6 +310,6 @@
/**
* __drm_atomic_helper_connector_hdmi_state_init() - Initialize all HDMI @drm_connector_state resources
- * @connector: DRM connector
* @new_conn_state: connector state to initialize
+ * @connector: DRM connector
*
* Initializes all HDMI resources from a @drm_connector_state without
@@ -319,6 +319,6 @@
* drm_atomic_helper_connector_create_state().
*/
-void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector *connector,
- struct drm_connector_state *new_conn_state)
+void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector_state *new_conn_state,
+ struct drm_connector *connector)
{
unsigned int max_bpc = connector->max_bpc;
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 6f4fe0c8efae..3084f6570c29 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -294,5 +294,6 @@ static void sun4i_hdmi_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector->state,
+ connector);
}
diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
index b2e347863a77..9953f5e661ce 100644
--- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
@@ -203,5 +203,6 @@ static void dummy_hdmi_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector->state,
+ connector);
}
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 6b00581f304f..31942638fcd8 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -508,5 +508,5 @@ static void vc4_hdmi_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector->state, connector);
drm_atomic_helper_connector_tv_margins_reset(connector);
}
diff --git a/include/drm/display/drm_hdmi_state_helper.h b/include/drm/display/drm_hdmi_state_helper.h
index 965342f6bbc9..21e5a9215319 100644
--- a/include/drm/display/drm_hdmi_state_helper.h
+++ b/include/drm/display/drm_hdmi_state_helper.h
@@ -14,6 +14,6 @@ struct hdmi_audio_infoframe;
enum drm_connector_status;
-void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector *connector,
- struct drm_connector_state *new_conn_state);
+void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector_state *new_conn_state,
+ struct drm_connector *connector);
int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 01/59] drm/hdmi: Change __drm_atomic_helper_connector_hdmi_state_init parameter order
2026-10-22 12:31 ` [PATCH v2 01/59] drm/hdmi: Change __drm_atomic_helper_connector_hdmi_state_init parameter order Maxime Ripard
@ 2026-10-22 20:57 ` Maíra Canal
0 siblings, 0 replies; 78+ messages in thread
From: Maíra Canal @ 2026-10-22 20:57 UTC (permalink / raw)
To: Maxime Ripard, Maarten Lankhorst, Thomas Zimmermann, David Airlie,
Simona Vetter
Cc: dri-devel
On 22/10/26 09:31, Maxime Ripard wrote:
> All other state init helpers take the state as first parameter and the
> entity as second: __drm_atomic_helper_crtc_state_init(),
> __drm_atomic_helper_plane_state_init(),
> __drm_atomic_helper_connector_state_init(), and
> __drm_atomic_helper_bridge_state_init().
>
> __drm_atomic_helper_connector_hdmi_state_init() is the only one taking
> the connector first and the state second. Swap its parameters to match
> the established convention.
>
> Suggested-by: Maíra Canal <mcanal@igalia.com>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Best regards,
- Maíra
> ---
> drivers/gpu/drm/display/drm_bridge_connector.c | 4 ++--
> drivers/gpu/drm/display/drm_hdmi_state_helper.c | 6 +++---
> drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 3 ++-
> drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 3 ++-
> drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
> include/drm/display/drm_hdmi_state_helper.h | 4 ++--
> 6 files changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
> index 81f3e26f6fdf..2202e6044444 100644
> --- a/drivers/gpu/drm/display/drm_bridge_connector.c
> +++ b/drivers/gpu/drm/display/drm_bridge_connector.c
> @@ -239,6 +239,6 @@ drm_bridge_connector_create_state(struct drm_connector *connector)
>
> if (bridge_connector->bridge_hdmi)
> - __drm_atomic_helper_connector_hdmi_state_init(connector,
> - conn_state);
> + __drm_atomic_helper_connector_hdmi_state_init(conn_state,
> + connector);
>
> return conn_state;
> diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> index 7cdb7ca3dc12..c63d439382bb 100644
> --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> @@ -310,6 +310,6 @@
> /**
> * __drm_atomic_helper_connector_hdmi_state_init() - Initialize all HDMI @drm_connector_state resources
> - * @connector: DRM connector
> * @new_conn_state: connector state to initialize
> + * @connector: DRM connector
> *
> * Initializes all HDMI resources from a @drm_connector_state without
> @@ -319,6 +319,6 @@
> * drm_atomic_helper_connector_create_state().
> */
> -void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector *connector,
> - struct drm_connector_state *new_conn_state)
> +void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector_state *new_conn_state,
> + struct drm_connector *connector)
> {
> unsigned int max_bpc = connector->max_bpc;
> diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
> index 6f4fe0c8efae..3084f6570c29 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
> @@ -294,5 +294,6 @@ static void sun4i_hdmi_connector_reset(struct drm_connector *connector)
> {
> drm_atomic_helper_connector_reset(connector);
> - __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
> + __drm_atomic_helper_connector_hdmi_state_init(connector->state,
> + connector);
> }
>
> diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
> index b2e347863a77..9953f5e661ce 100644
> --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
> +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
> @@ -203,5 +203,6 @@ static void dummy_hdmi_connector_reset(struct drm_connector *connector)
> {
> drm_atomic_helper_connector_reset(connector);
> - __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
> + __drm_atomic_helper_connector_hdmi_state_init(connector->state,
> + connector);
> }
>
> diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> index 6b00581f304f..31942638fcd8 100644
> --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> @@ -508,5 +508,5 @@ static void vc4_hdmi_connector_reset(struct drm_connector *connector)
> {
> drm_atomic_helper_connector_reset(connector);
> - __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
> + __drm_atomic_helper_connector_hdmi_state_init(connector->state, connector);
> drm_atomic_helper_connector_tv_margins_reset(connector);
> }
> diff --git a/include/drm/display/drm_hdmi_state_helper.h b/include/drm/display/drm_hdmi_state_helper.h
> index 965342f6bbc9..21e5a9215319 100644
> --- a/include/drm/display/drm_hdmi_state_helper.h
> +++ b/include/drm/display/drm_hdmi_state_helper.h
> @@ -14,6 +14,6 @@ struct hdmi_audio_infoframe;
> enum drm_connector_status;
>
> -void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector *connector,
> - struct drm_connector_state *new_conn_state);
> +void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector_state *new_conn_state,
> + struct drm_connector *connector);
>
> int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector,
>
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 02/59] drm/atomic-state-helper: Rename connector_tv_margins_reset to state_init
2026-10-22 12:30 ` Maxime Ripard
` (2 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal, Dave Stevenson,
Raspberry Pi Kernel Maintenance, Ruben Wauters
Recent commits renamed other reset helpers to use the state_init
suffix when they only initialize properties rather than allocate or
update the object state itself.
drm_atomic_helper_connector_tv_margins_reset() falls in the same
category: it initializes the TV margin properties from the kernel
command line without allocating any state. It also reads the
connector state through connector->state, coupling it to the reset
path.
Rename it to drm_atomic_helper_connector_tv_margins_state_init() and
pass the connector state explicitly as a parameter. This decouples
it from the reset hook and prepares for the conversion to
atomic_create_state where connector->state is not yet assigned.
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: "Maíra Canal" <mcanal@igalia.com>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
Cc: Ruben Wauters <rubenru09@aol.com>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 13 +++++++------
drivers/gpu/drm/gud/gud_connector.c | 3 ++-
drivers/gpu/drm/vc4/vc4_hdmi.c | 3 ++-
include/drm/drm_atomic_state_helper.h | 3 ++-
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 406157a3660f..565947c544fe 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -483,13 +483,14 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_create_state);
/**
- * drm_atomic_helper_connector_tv_margins_reset - Resets TV connector properties
+ * drm_atomic_helper_connector_tv_margins_state_init - Initializes TV connector properties
+ * @state: the DRM state object
* @connector: DRM connector
*
- * Resets the TV-related properties attached to a connector.
+ * Initializes the TV-related properties attached to a connector.
*/
-void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector)
+void drm_atomic_helper_connector_tv_margins_state_init(struct drm_connector_state *state,
+ struct drm_connector *connector)
{
struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;
- struct drm_connector_state *state = connector->state;
state->tv.margins.left = cmdline->tv_margins.left;
@@ -498,5 +499,5 @@ void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connecto
state->tv.margins.bottom = cmdline->tv_margins.bottom;
}
-EXPORT_SYMBOL(drm_atomic_helper_connector_tv_margins_reset);
+EXPORT_SYMBOL(drm_atomic_helper_connector_tv_margins_state_init);
/**
@@ -571,5 +572,5 @@ void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector)
state->tv.hue = val;
- drm_atomic_helper_connector_tv_margins_reset(connector);
+ drm_atomic_helper_connector_tv_margins_state_init(connector->state, connector);
}
EXPORT_SYMBOL(drm_atomic_helper_connector_tv_reset);
diff --git a/drivers/gpu/drm/gud/gud_connector.c b/drivers/gpu/drm/gud/gud_connector.c
index 8141c3a1e30a..a57f2565d33e 100644
--- a/drivers/gpu/drm/gud/gud_connector.c
+++ b/drivers/gpu/drm/gud/gud_connector.c
@@ -355,5 +355,6 @@ static void gud_connector_reset(struct drm_connector *connector)
connector->state->tv = gconn->initial_tv_state;
/* Set margins from command line */
- drm_atomic_helper_connector_tv_margins_reset(connector);
+ drm_atomic_helper_connector_tv_margins_state_init(connector->state,
+ connector);
if (gconn->initial_brightness >= 0)
connector->state->tv.brightness = gconn->initial_brightness;
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 31942638fcd8..e14cbe4b5f15 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -509,5 +509,6 @@ static void vc4_hdmi_connector_reset(struct drm_connector *connector)
drm_atomic_helper_connector_reset(connector);
__drm_atomic_helper_connector_hdmi_state_init(connector->state, connector);
- drm_atomic_helper_connector_tv_margins_reset(connector);
+ drm_atomic_helper_connector_tv_margins_state_init(connector->state,
+ connector);
}
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 4706eeab52c1..4dac741af22c 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -75,5 +75,6 @@ void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector);
int drm_atomic_helper_connector_tv_check(struct drm_connector *connector,
struct drm_atomic_commit *state);
-void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector);
+void drm_atomic_helper_connector_tv_margins_state_init(struct drm_connector_state *state,
+ struct drm_connector *connector);
void
__drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 03/59] drm/atomic-state-helper: Rename connector_tv_reset to state_init
2026-10-22 12:30 ` Maxime Ripard
` (3 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 21:01 ` Maíra Canal
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal, Chen-Yu Tsai,
Dave Stevenson, Raspberry Pi Kernel Maintenance, Samuel Holland,
linux-sunxi
Recent commits renamed other reset helpers to use the state_init
suffix when they only initialize properties rather than allocate or
update the object state itself.
drm_atomic_helper_connector_tv_reset() falls in the same category:
it initializes the analog TV properties from the kernel command line
defaults without allocating any state. It also reads the connector
state through connector->state, coupling it to the reset path.
Rename it to drm_atomic_helper_connector_tv_state_init() and pass
the connector state explicitly as a parameter. This decouples it
from the reset hook and prepares for the conversion to
atomic_create_state where connector->state is not yet assigned.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: "Maíra Canal" <mcanal@igalia.com>
Cc: Chen-Yu Tsai <wens@kernel.org>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-sunxi@lists.linux.dev
---
drivers/gpu/drm/drm_atomic_state_helper.c | 13 +++++++------
drivers/gpu/drm/sun4i/sun4i_tv.c | 2 +-
drivers/gpu/drm/vc4/vc4_vec.c | 2 +-
include/drm/drm_atomic_state_helper.h | 3 ++-
4 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 565947c544fe..3534925636d5 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -502,14 +502,15 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_tv_margins_state_init);
/**
- * drm_atomic_helper_connector_tv_reset - Resets Analog TV connector properties
+ * drm_atomic_helper_connector_tv_state_init - Initializes Analog TV connector properties
+ * @state: the DRM state object
* @connector: DRM connector
*
- * Resets the analog TV properties attached to a connector
+ * Initializes the analog TV properties attached to a connector
*/
-void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector)
+void drm_atomic_helper_connector_tv_state_init(struct drm_connector_state *state,
+ struct drm_connector *connector)
{
struct drm_device *dev = connector->dev;
struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;
- struct drm_connector_state *state = connector->state;
struct drm_property *prop;
uint64_t val;
@@ -572,7 +573,7 @@ void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector)
state->tv.hue = val;
- drm_atomic_helper_connector_tv_margins_state_init(connector->state, connector);
+ drm_atomic_helper_connector_tv_margins_state_init(state, connector);
}
-EXPORT_SYMBOL(drm_atomic_helper_connector_tv_reset);
+EXPORT_SYMBOL(drm_atomic_helper_connector_tv_state_init);
/**
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
index ce22f1662c0c..ea86f8a6a35e 100644
--- a/drivers/gpu/drm/sun4i/sun4i_tv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
@@ -409,5 +409,5 @@ static void sun4i_tv_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- drm_atomic_helper_connector_tv_reset(connector);
+ drm_atomic_helper_connector_tv_state_init(connector->state, connector);
}
diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
index 215b5d3dc5c5..7ab77f97df31 100644
--- a/drivers/gpu/drm/vc4/vc4_vec.c
+++ b/drivers/gpu/drm/vc4/vc4_vec.c
@@ -381,5 +381,5 @@ static void vc4_vec_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- drm_atomic_helper_connector_tv_reset(connector);
+ drm_atomic_helper_connector_tv_state_init(connector->state, connector);
}
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 4dac741af22c..5e8619aeef21 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -72,5 +72,6 @@ void drm_atomic_helper_connector_reset(struct drm_connector *connector);
struct drm_connector_state *
drm_atomic_helper_connector_create_state(struct drm_connector *connector);
-void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector);
+void drm_atomic_helper_connector_tv_state_init(struct drm_connector_state *state,
+ struct drm_connector *connector);
int drm_atomic_helper_connector_tv_check(struct drm_connector *connector,
struct drm_atomic_commit *state);
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 03/59] drm/atomic-state-helper: Rename connector_tv_reset to state_init
2026-10-22 12:31 ` [PATCH v2 03/59] drm/atomic-state-helper: Rename connector_tv_reset " Maxime Ripard
@ 2026-10-22 21:01 ` Maíra Canal
0 siblings, 0 replies; 78+ messages in thread
From: Maíra Canal @ 2026-10-22 21:01 UTC (permalink / raw)
To: Maxime Ripard, Maarten Lankhorst, Thomas Zimmermann, David Airlie,
Simona Vetter
Cc: dri-devel, Chen-Yu Tsai, Dave Stevenson,
Raspberry Pi Kernel Maintenance, Samuel Holland, linux-sunxi
On 22/10/26 09:31, Maxime Ripard wrote:
> Recent commits renamed other reset helpers to use the state_init
> suffix when they only initialize properties rather than allocate or
> update the object state itself.
>
> drm_atomic_helper_connector_tv_reset() falls in the same category:
> it initializes the analog TV properties from the kernel command line
> defaults without allocating any state. It also reads the connector
> state through connector->state, coupling it to the reset path.
>
> Rename it to drm_atomic_helper_connector_tv_state_init() and pass
> the connector state explicitly as a parameter. This decouples it
> from the reset hook and prepares for the conversion to
> atomic_create_state where connector->state is not yet assigned.
>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Best regards,
- Maíra
> ---
> Cc: "Maíra Canal" <mcanal@igalia.com>
> Cc: Chen-Yu Tsai <wens@kernel.org>
> Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
> Cc: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
> Cc: Samuel Holland <samuel@sholland.org>
> Cc: linux-sunxi@lists.linux.dev
> ---
> drivers/gpu/drm/drm_atomic_state_helper.c | 13 +++++++------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 2 +-
> drivers/gpu/drm/vc4/vc4_vec.c | 2 +-
> include/drm/drm_atomic_state_helper.h | 3 ++-
> 4 files changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
> index 565947c544fe..3534925636d5 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -502,14 +502,15 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_tv_margins_state_init);
>
> /**
> - * drm_atomic_helper_connector_tv_reset - Resets Analog TV connector properties
> + * drm_atomic_helper_connector_tv_state_init - Initializes Analog TV connector properties
> + * @state: the DRM state object
> * @connector: DRM connector
> *
> - * Resets the analog TV properties attached to a connector
> + * Initializes the analog TV properties attached to a connector
> */
> -void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector)
> +void drm_atomic_helper_connector_tv_state_init(struct drm_connector_state *state,
> + struct drm_connector *connector)
> {
> struct drm_device *dev = connector->dev;
> struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;
> - struct drm_connector_state *state = connector->state;
> struct drm_property *prop;
> uint64_t val;
> @@ -572,7 +573,7 @@ void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector)
> state->tv.hue = val;
>
> - drm_atomic_helper_connector_tv_margins_state_init(connector->state, connector);
> + drm_atomic_helper_connector_tv_margins_state_init(state, connector);
> }
> -EXPORT_SYMBOL(drm_atomic_helper_connector_tv_reset);
> +EXPORT_SYMBOL(drm_atomic_helper_connector_tv_state_init);
>
> /**
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
> index ce22f1662c0c..ea86f8a6a35e 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
> @@ -409,5 +409,5 @@ static void sun4i_tv_connector_reset(struct drm_connector *connector)
> {
> drm_atomic_helper_connector_reset(connector);
> - drm_atomic_helper_connector_tv_reset(connector);
> + drm_atomic_helper_connector_tv_state_init(connector->state, connector);
> }
>
> diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
> index 215b5d3dc5c5..7ab77f97df31 100644
> --- a/drivers/gpu/drm/vc4/vc4_vec.c
> +++ b/drivers/gpu/drm/vc4/vc4_vec.c
> @@ -381,5 +381,5 @@ static void vc4_vec_connector_reset(struct drm_connector *connector)
> {
> drm_atomic_helper_connector_reset(connector);
> - drm_atomic_helper_connector_tv_reset(connector);
> + drm_atomic_helper_connector_tv_state_init(connector->state, connector);
> }
>
> diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
> index 4dac741af22c..5e8619aeef21 100644
> --- a/include/drm/drm_atomic_state_helper.h
> +++ b/include/drm/drm_atomic_state_helper.h
> @@ -72,5 +72,6 @@ void drm_atomic_helper_connector_reset(struct drm_connector *connector);
> struct drm_connector_state *
> drm_atomic_helper_connector_create_state(struct drm_connector *connector);
> -void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector);
> +void drm_atomic_helper_connector_tv_state_init(struct drm_connector_state *state,
> + struct drm_connector *connector);
> int drm_atomic_helper_connector_tv_check(struct drm_connector *connector,
> struct drm_atomic_commit *state);
>
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 04/59] drm/panel: Add atomic_create_state support
2026-10-22 12:30 ` Maxime Ripard
` (4 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The panel bridge attach hook calls the connector's reset function to
initialize the connector state when the device is already registered.
Now that connectors are being migrated from the reset hook to
atomic_create_state, prefer it over reset and fall back to the reset
hook if atomic_create_state is not implemented.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_panel.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
index c00529bfb706..313053c123d1 100644
--- a/drivers/gpu/drm/drm_panel.c
+++ b/drivers/gpu/drm/drm_panel.c
@@ -105,6 +105,18 @@ static int panel_bridge_attach(struct drm_bridge *bridge,
if (bridge->dev->registered) {
- if (connector->funcs->reset)
+ if (connector->funcs->atomic_create_state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = connector->funcs->atomic_create_state(connector);
+ if (IS_ERR(conn_state)) {
+ drm_connector_cleanup(connector);
+ return PTR_ERR(conn_state);
+ }
+
+ connector->state = conn_state;
+ } else if (connector->funcs->reset) {
connector->funcs->reset(connector);
+ }
+
drm_connector_register(connector);
}
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 05/59] drm/amdgpu: vkms: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (5 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Christian König, Alex Deucher,
amd-gfx
The amdgpu: vkms connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: amd-gfx@lists.freedesktop.org
---
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
index 5c5fdbec93c2..5c7e2172a372 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
@@ -87,5 +87,5 @@ static const struct drm_connector_funcs amdgpu_vkms_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 06/59] drm/aspeed: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (6 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Andrew Jeffery, Joel Stanley
The aspeed connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Andrew Jeffery <andrew@codeconstruct.com.au>
Cc: Joel Stanley <joel@jms.id.au>
---
drivers/gpu/drm/aspeed/aspeed_gfx_out.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_out.c b/drivers/gpu/drm/aspeed/aspeed_gfx_out.c
index 78775e0c853f..cfa8eb6ccb5c 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_out.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_out.c
@@ -22,5 +22,5 @@ static const struct drm_connector_funcs aspeed_gfx_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 07/59] drm/ast: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (7 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Dave Airlie, Jocelyn Falempe
The ast connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
---
drivers/gpu/drm/ast/ast_dp501.c | 2 +-
drivers/gpu/drm/ast/ast_sil164.c | 2 +-
drivers/gpu/drm/ast/ast_vga.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/ast/ast_dp501.c b/drivers/gpu/drm/ast/ast_dp501.c
index 6d6ccfad1415..fd357ff97cd4 100644
--- a/drivers/gpu/drm/ast/ast_dp501.c
+++ b/drivers/gpu/drm/ast/ast_dp501.c
@@ -547,7 +547,7 @@ static const struct drm_connector_helper_funcs ast_dp501_connector_helper_funcs
static const struct drm_connector_funcs ast_dp501_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/ast/ast_sil164.c b/drivers/gpu/drm/ast/ast_sil164.c
index be01254dd48a..baefee645533 100644
--- a/drivers/gpu/drm/ast/ast_sil164.c
+++ b/drivers/gpu/drm/ast/ast_sil164.c
@@ -67,7 +67,7 @@ static const struct drm_connector_helper_funcs ast_sil164_connector_helper_funcs
static const struct drm_connector_funcs ast_sil164_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/ast/ast_vga.c b/drivers/gpu/drm/ast/ast_vga.c
index abe0fff8485c..bc415ec91547 100644
--- a/drivers/gpu/drm/ast/ast_vga.c
+++ b/drivers/gpu/drm/ast/ast_vga.c
@@ -67,7 +67,7 @@ static const struct drm_connector_helper_funcs ast_vga_connector_helper_funcs =
static const struct drm_connector_funcs ast_vga_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 08/59] drm/bridge: analogix-anx6345: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (8 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: analogix-anx6345 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
index 407834a03b63..0cff9ff0265a 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
@@ -484,5 +484,5 @@ static const struct drm_connector_funcs anx6345_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = anx6345_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 09/59] drm/bridge: analogix-anx78xx: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (9 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: analogix-anx78xx connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
index 32186efa6f50..94f07a2317e1 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
@@ -855,5 +855,5 @@ static const struct drm_connector_funcs anx78xx_connector_funcs = {
.detect = anx78xx_detect,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 10/59] drm/bridge: chrontel-ch7033: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (10 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: chrontel-ch7033 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/chrontel-ch7033.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/chrontel-ch7033.c b/drivers/gpu/drm/bridge/chrontel-ch7033.c
index 4bc64b2885f7..3d48b42c38a0 100644
--- a/drivers/gpu/drm/bridge/chrontel-ch7033.c
+++ b/drivers/gpu/drm/bridge/chrontel-ch7033.c
@@ -219,8 +219,8 @@ static enum drm_connector_status ch7033_connector_detect(
static const struct drm_connector_funcs ch7033_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.detect = ch7033_connector_detect,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 11/59] drm/bridge: nxp-ptn3460: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (11 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: nxp-ptn3460 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/nxp-ptn3460.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index f9eff8bfceb7..be6a06130ba9 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -211,5 +211,5 @@ static const struct drm_connector_funcs ptn3460_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 12/59] drm/panel: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (12 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: panel connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_panel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
index 313053c123d1..760f074f947e 100644
--- a/drivers/gpu/drm/drm_panel.c
+++ b/drivers/gpu/drm/drm_panel.c
@@ -71,7 +71,7 @@ panel_bridge_connector_helper_funcs = {
static const struct drm_connector_funcs panel_bridge_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 13/59] drm/bridge: synopsys: dw-hdmi: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (13 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: synopsys: dw-hdmi connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 937d61c42b58..917cf764c9c5 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2570,5 +2570,5 @@ static const struct drm_connector_funcs dw_hdmi_connector_funcs = {
.destroy = drm_connector_cleanup,
.force = dw_hdmi_connector_force,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 14/59] drm/bridge: tc358767: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (14 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: tc358767 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/tc358767.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 51f4baa62a53..5ea6d3726bee 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1797,5 +1797,5 @@ static const struct drm_connector_funcs tc_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 15/59] drm/bridge: tda998x: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (15 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Russell King
The bridge: tda998x connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Russell King <linux@armlinux.org.uk>
---
drivers/gpu/drm/bridge/tda998x_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/tda998x_drv.c b/drivers/gpu/drm/bridge/tda998x_drv.c
index 9a4c47134fc4..54ef526a1133 100644
--- a/drivers/gpu/drm/bridge/tda998x_drv.c
+++ b/drivers/gpu/drm/bridge/tda998x_drv.c
@@ -1210,8 +1210,8 @@ tda998x_connector_detect(struct drm_connector *connector, bool force)
static const struct drm_connector_funcs tda998x_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.detect = tda998x_connector_detect,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 16/59] drm/bridge: ti-tfp410: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (16 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The bridge: ti-tfp410 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/ti-tfp410.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index 629ff7095e87..64a3d64e1f7b 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -96,5 +96,5 @@ static const struct drm_connector_funcs tfp410_con_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 17/59] drm/exynos: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (17 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Alim Akhtar, Inki Dae,
Krzysztof Kozlowski, Kyungmin Park, Peter Griffin, Seung-Woo Kim,
linux-samsung-soc
The exynos connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Peter Griffin <peter.griffin@linaro.org>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: linux-samsung-soc@vger.kernel.org
---
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 2 +-
drivers/gpu/drm/exynos/exynos_drm_vidi.c | 2 +-
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
index 74d3a2bebb74..42c48fd14050 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
@@ -57,5 +57,5 @@ static const struct drm_connector_funcs exynos_dpi_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = exynos_dpi_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
index 077571eae9d6..f3e8a2bc1182 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
@@ -335,5 +335,5 @@ static const struct drm_connector_funcs vidi_connector_funcs = {
.detect = vidi_detect,
.destroy = vidi_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 055dc04f9b3e..654a8b1b4afc 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -876,5 +876,5 @@ static const struct drm_connector_funcs hdmi_connector_funcs = {
.detect = hdmi_detect,
.destroy = hdmi_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 18/59] drm/fsl-dcu: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (18 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Alison Wang, Stefan Agner
The fsl-dcu connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Alison Wang <alison.wang@nxp.com>
Cc: Stefan Agner <stefan@agner.ch>
---
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
index c64264541fe2..9b5ca262d619 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
@@ -51,9 +51,9 @@ static void fsl_dcu_drm_connector_destroy(struct drm_connector *connector)
static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = {
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.destroy = fsl_dcu_drm_connector_destroy,
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = drm_atomic_helper_connector_reset,
};
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 19/59] drm/hisilicon: hibmc: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (19 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Tian Tao, Xinwei Kong, Yongbang Shi
The hisilicon: hibmc connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Tian Tao <tiantao6@hisilicon.com>
Cc: Xinwei Kong <kong.kongxinwei@hisilicon.com>
Cc: Yongbang Shi <shiyongbang@huawei.com>
---
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c | 2 +-
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c
index 7bf6befa0440..9cf0b6be15bd 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c
@@ -137,7 +137,7 @@ static void hibmc_dp_early_unregister(struct drm_connector *connector)
static const struct drm_connector_funcs hibmc_dp_conn_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
index 0b72509f7a69..7501516433fd 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
@@ -83,5 +83,5 @@ static const struct drm_connector_funcs hibmc_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = hibmc_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 20/59] drm/logicvc: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (20 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-25 10:24 ` Paul Kocialkowski
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Paul Kocialkowski
The logicvc connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Paul Kocialkowski <paulk@sys-base.io>
---
drivers/gpu/drm/logicvc/logicvc_interface.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/logicvc/logicvc_interface.c b/drivers/gpu/drm/logicvc/logicvc_interface.c
index 81f760dc07f8..32c0ee6226c9 100644
--- a/drivers/gpu/drm/logicvc/logicvc_interface.c
+++ b/drivers/gpu/drm/logicvc/logicvc_interface.c
@@ -88,7 +88,7 @@ static const struct drm_connector_helper_funcs logicvc_connector_helper_funcs =
static const struct drm_connector_funcs logicvc_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 20/59] drm/logicvc: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:31 ` [PATCH v2 20/59] drm/logicvc: " Maxime Ripard
@ 2026-10-25 10:24 ` Paul Kocialkowski
0 siblings, 0 replies; 78+ messages in thread
From: Paul Kocialkowski @ 2026-10-25 10:24 UTC (permalink / raw)
To: Maxime Ripard
Cc: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
dri-devel
[-- Attachment #1: Type: text/plain, Size: 1602 bytes --]
Hi Maxime,
Le Thu 22 Oct 26, 14:31, Maxime Ripard a écrit :
> The logicvc connector implementation uses the deprecated
> drm_atomic_helper_connector_reset() as its reset hook.
>
> Switch to drm_atomic_helper_connector_create_state() instead.
>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Paul Kocialkowski <paulk@sys-base.io>
All the best,
Paul
> ---
> Cc: Paul Kocialkowski <paulk@sys-base.io>
> ---
> drivers/gpu/drm/logicvc/logicvc_interface.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/logicvc/logicvc_interface.c b/drivers/gpu/drm/logicvc/logicvc_interface.c
> index 81f760dc07f8..32c0ee6226c9 100644
> --- a/drivers/gpu/drm/logicvc/logicvc_interface.c
> +++ b/drivers/gpu/drm/logicvc/logicvc_interface.c
> @@ -88,7 +88,7 @@ static const struct drm_connector_helper_funcs logicvc_connector_helper_funcs =
>
> static const struct drm_connector_funcs logicvc_connector_funcs = {
> - .reset = drm_atomic_helper_connector_reset,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> + .atomic_create_state = drm_atomic_helper_connector_create_state,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>
> --
> 2.55.0
>
--
Paul Kocialkowski,
Independent contractor - sys-base - https://www.sys-base.io/
Free software developer - https://www.paulk.fr/
Expert in multimedia, graphics and embedded hardware support with Linux.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 21/59] drm/loongson: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (21 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Huacai Chen, Icenowy Zheng, Jianmin Lv,
Mingcong Bai, Qianhai Wu, Xi Ruoyao
The loongson connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: Icenowy Zheng <zhengxingda@iscas.ac.cn>
Cc: Jianmin Lv <lvjianmin@loongson.cn>
Cc: Mingcong Bai <jeffbai@aosc.io>
Cc: Qianhai Wu <wuqianhai@loongson.cn>
Cc: Xi Ruoyao <xry111@xry111.site>
---
drivers/gpu/drm/loongson/lsdc_output_7a1000.c | 2 +-
drivers/gpu/drm/loongson/lsdc_output_7a2000.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/loongson/lsdc_output_7a1000.c b/drivers/gpu/drm/loongson/lsdc_output_7a1000.c
index 5c483baa3762..3d4562353578 100644
--- a/drivers/gpu/drm/loongson/lsdc_output_7a1000.c
+++ b/drivers/gpu/drm/loongson/lsdc_output_7a1000.c
@@ -96,5 +96,5 @@ static const struct drm_connector_funcs ls7a1000_dpi_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state
diff --git a/drivers/gpu/drm/loongson/lsdc_output_7a2000.c b/drivers/gpu/drm/loongson/lsdc_output_7a2000.c
index a9798b3dadee..e2255e6a0d32 100644
--- a/drivers/gpu/drm/loongson/lsdc_output_7a2000.c
+++ b/drivers/gpu/drm/loongson/lsdc_output_7a2000.c
@@ -204,5 +204,5 @@ static const struct drm_connector_funcs ls7a2000_hdmi_connector_funcs[2] = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -213,5 +213,5 @@ static const struct drm_connector_funcs ls7a2000_hdmi_connector_funcs[2] = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 22/59] drm/mgag200: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (22 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Dave Airlie, Jocelyn Falempe
The mgag200 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
---
drivers/gpu/drm/mgag200/mgag200_vga.c | 2 +-
drivers/gpu/drm/mgag200/mgag200_vga_bmc.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/mgag200/mgag200_vga.c b/drivers/gpu/drm/mgag200/mgag200_vga.c
index b07c1362ddd4..864cf01b93bf 100644
--- a/drivers/gpu/drm/mgag200/mgag200_vga.c
+++ b/drivers/gpu/drm/mgag200/mgag200_vga.c
@@ -19,7 +19,7 @@ static const struct drm_connector_helper_funcs mgag200_vga_connector_helper_func
static const struct drm_connector_funcs mgag200_vga_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state
diff --git a/drivers/gpu/drm/mgag200/mgag200_vga_bmc.c b/drivers/gpu/drm/mgag200/mgag200_vga_bmc.c
index 805636990b55..aa9cedd0fd33 100644
--- a/drivers/gpu/drm/mgag200/mgag200_vga_bmc.c
+++ b/drivers/gpu/drm/mgag200/mgag200_vga_bmc.c
@@ -101,7 +101,7 @@ static const struct drm_connector_helper_funcs mgag200_vga_connector_helper_func
static const struct drm_connector_funcs mgag200_vga_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 23/59] drm/mipi-dbi: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (23 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The mipi-dbi connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
include/drm/drm_mipi_dbi.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/drm/drm_mipi_dbi.h b/include/drm/drm_mipi_dbi.h
index d93e25fdc2e1..bb3296419910 100644
--- a/include/drm/drm_mipi_dbi.h
+++ b/include/drm/drm_mipi_dbi.h
@@ -258,6 +258,6 @@ void drm_mipi_dbi_crtc_helper_atomic_disable(struct drm_crtc *crtc,
#define DRM_MIPI_DBI_CONNECTOR_FUNCS \
- .reset = drm_atomic_helper_connector_reset, \
.fill_modes = drm_helper_probe_single_connector_modes, \
+ .atomic_create_state = drm_atomic_helper_connector_create_state, \
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, \
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 24/59] drm/qxl: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (24 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:42 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Dave Airlie, Gerd Hoffmann, spice-devel,
virtualization
The qxl connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: spice-devel@lists.freedesktop.org
Cc: virtualization@lists.linux.dev
---
drivers/gpu/drm/qxl/qxl_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 63fc7c6a7f1a..204c47d61373 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -1142,5 +1142,5 @@ static const struct drm_connector_funcs qxl_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = qxl_conn_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 25/59] drm/renesas: shmobile: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (25 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Geert Uytterhoeven, linux-renesas-soc
The renesas: shmobile connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: linux-renesas-soc@vger.kernel.org
---
drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
index 51bae2008cc6..d1a3e17f5bb1 100644
--- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
@@ -528,7 +528,7 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
static const struct drm_connector_funcs connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = shmob_drm_connector_destroy,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 26/59] drm/sitronix: st7571: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (26 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Marcus Folkesson
The sitronix: st7571 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
---
drivers/gpu/drm/sitronix/st7571.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/sitronix/st7571.c b/drivers/gpu/drm/sitronix/st7571.c
index 5e60c4685671..608d38eab0fc 100644
--- a/drivers/gpu/drm/sitronix/st7571.c
+++ b/drivers/gpu/drm/sitronix/st7571.c
@@ -476,7 +476,7 @@ static const struct drm_encoder_helper_funcs st7571_encoder_helper_funcs = {
static const struct drm_connector_funcs st7571_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 27/59] drm/sitronix: st7920: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (27 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Iker Pedrosa
The sitronix: st7920 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Iker Pedrosa <ikerpedrosam@gmail.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Iker Pedrosa <ikerpedrosam@gmail.com>
---
drivers/gpu/drm/sitronix/st7920.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/sitronix/st7920.c b/drivers/gpu/drm/sitronix/st7920.c
index 9887ed746ceb..2f2c808e783b 100644
--- a/drivers/gpu/drm/sitronix/st7920.c
+++ b/drivers/gpu/drm/sitronix/st7920.c
@@ -654,7 +654,7 @@ static const struct drm_connector_helper_funcs st7920_connector_helper_funcs = {
static const struct drm_connector_funcs st7920_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 28/59] drm/sti: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (28 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Alain Volmat, Raphael Gallais-Pou
The sti connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
drivers/gpu/drm/sti/sti_dvo.c | 2 +-
drivers/gpu/drm/sti/sti_hda.c | 2 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
index cdb19b75f5e1..18c337ffa161 100644
--- a/drivers/gpu/drm/sti/sti_dvo.c
+++ b/drivers/gpu/drm/sti/sti_dvo.c
@@ -421,5 +421,5 @@ static const struct drm_connector_funcs sti_dvo_connector_funcs = {
.detect = sti_dvo_connector_detect,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
index b4def2b25cec..204738807c86 100644
--- a/drivers/gpu/drm/sti/sti_hda.c
+++ b/drivers/gpu/drm/sti/sti_hda.c
@@ -664,5 +664,5 @@ static const struct drm_connector_funcs sti_hda_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 7ba9e0b7ba6c..9a810a89e6c0 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1147,5 +1147,5 @@ static const struct drm_connector_funcs sti_hdmi_connector_funcs = {
.detect = sti_hdmi_connector_detect,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_set_property = sti_hdmi_connector_set_property,
.atomic_get_property = sti_hdmi_connector_get_property,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 29/59] drm/sun4i: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (29 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Chen-Yu Tsai, Samuel Holland,
linux-sunxi
The sun4i connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Chen-Yu Tsai <wens@kernel.org>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-sunxi@lists.linux.dev
---
drivers/gpu/drm/sun4i/sun4i_lvds.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_rgb.c | 2 +-
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_lvds.c b/drivers/gpu/drm/sun4i/sun4i_lvds.c
index 6b98d20a8890..f3f035c9260f 100644
--- a/drivers/gpu/drm/sun4i/sun4i_lvds.c
+++ b/drivers/gpu/drm/sun4i/sun4i_lvds.c
@@ -66,5 +66,5 @@ static const struct drm_connector_funcs sun4i_lvds_con_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = sun4i_lvds_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
index 3da9a9283c6e..c930dd899875 100644
--- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
+++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
@@ -157,5 +157,5 @@ static const struct drm_connector_funcs sun4i_rgb_con_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = sun4i_rgb_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index d504ae583294..1b7ae9b327c1 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -838,5 +838,5 @@ static const struct drm_connector_funcs sun6i_dsi_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 30/59] drm/tegra: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (30 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Jonathan Hunter, Mikko Perttunen,
Thierry Reding, linux-tegra
The tegra connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: Mikko Perttunen <mperttunen@nvidia.com>
Cc: Thierry Reding <thierry.reding@kernel.org>
Cc: linux-tegra@vger.kernel.org
---
drivers/gpu/drm/tegra/hdmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
index 0d2c0ab0a63e..f414dd514543 100644
--- a/drivers/gpu/drm/tegra/hdmi.c
+++ b/drivers/gpu/drm/tegra/hdmi.c
@@ -1131,8 +1131,8 @@ static void tegra_hdmi_early_unregister(struct drm_connector *connector)
static const struct drm_connector_funcs tegra_hdmi_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.detect = tegra_hdmi_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 31/59] drm/tests: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (31 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The tests connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/tests/drm_atomic_commit_test.c | 2 +-
drivers/gpu/drm/tests/drm_atomic_test.c | 2 +-
drivers/gpu/drm/tests/drm_connector_test.c | 4 ++--
drivers/gpu/drm/tests/drm_probe_helper_test.c | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/tests/drm_atomic_commit_test.c b/drivers/gpu/drm/tests/drm_atomic_commit_test.c
index ff69bade19b8..6ccb001f6264 100644
--- a/drivers/gpu/drm/tests/drm_atomic_commit_test.c
+++ b/drivers/gpu/drm/tests/drm_atomic_commit_test.c
@@ -52,7 +52,7 @@ static const struct drm_encoder_helper_funcs drm_atomic_test_encoder_funcs = {
static const struct drm_connector_funcs dummy_connector_funcs = {
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
- .reset = drm_atomic_helper_connector_reset,
};
diff --git a/drivers/gpu/drm/tests/drm_atomic_test.c b/drivers/gpu/drm/tests/drm_atomic_test.c
index ea91bec6569e..541a0062f143 100644
--- a/drivers/gpu/drm/tests/drm_atomic_test.c
+++ b/drivers/gpu/drm/tests/drm_atomic_test.c
@@ -24,7 +24,7 @@ static const struct drm_connector_helper_funcs drm_atomic_init_connector_helper_
static const struct drm_connector_funcs drm_atomic_init_connector_funcs = {
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
- .reset = drm_atomic_helper_connector_reset,
};
diff --git a/drivers/gpu/drm/tests/drm_connector_test.c b/drivers/gpu/drm/tests/drm_connector_test.c
index 3368aedd4e66..2856294bafda 100644
--- a/drivers/gpu/drm/tests/drm_connector_test.c
+++ b/drivers/gpu/drm/tests/drm_connector_test.c
@@ -49,7 +49,7 @@ static const struct drm_connector_hdmi_funcs dummy_hdmi_funcs = {
static const struct drm_connector_funcs dummy_funcs = {
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
- .reset = drm_atomic_helper_connector_reset,
};
@@ -203,7 +203,7 @@ static struct kunit_suite drmm_connector_init_test_suite = {
static const struct drm_connector_funcs dummy_dynamic_init_funcs = {
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
- .reset = drm_atomic_helper_connector_reset,
.destroy = drm_connector_cleanup,
};
diff --git a/drivers/gpu/drm/tests/drm_probe_helper_test.c b/drivers/gpu/drm/tests/drm_probe_helper_test.c
index db0e4f5df275..ebc0392585e7 100644
--- a/drivers/gpu/drm/tests/drm_probe_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_probe_helper_test.c
@@ -26,7 +26,7 @@ static const struct drm_connector_helper_funcs drm_probe_helper_connector_helper
static const struct drm_connector_funcs drm_probe_helper_connector_funcs = {
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
- .reset = drm_atomic_helper_connector_reset,
};
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 32/59] drm/tiny: arcpgu: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (32 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Alexey Brodkin
The tiny: arcpgu connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Alexey Brodkin <abrodkin@synopsys.com>
---
drivers/gpu/drm/tiny/arcpgu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/arcpgu.c b/drivers/gpu/drm/tiny/arcpgu.c
index cdbf28db8fa1..32f6e98ba9c5 100644
--- a/drivers/gpu/drm/tiny/arcpgu.c
+++ b/drivers/gpu/drm/tiny/arcpgu.c
@@ -99,7 +99,7 @@ arcpgu_drm_connector_helper_funcs = {
static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 33/59] drm/tiny: bochs: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (33 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:42 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Gerd Hoffmann, virtualization
The tiny: bochs connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux.dev
---
drivers/gpu/drm/tiny/bochs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 8192decddbc1..771d59b92f67 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -593,5 +593,5 @@ static const struct drm_connector_funcs bochs_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 34/59] drm/tiny: cirrus: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (34 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:43 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Dave Airlie, Gerd Hoffmann,
virtualization
The tiny: cirrus connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux.dev
---
drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/cirrus-qemu.c b/drivers/gpu/drm/tiny/cirrus-qemu.c
index 63c242e25662..9e3051b9c3f7 100644
--- a/drivers/gpu/drm/tiny/cirrus-qemu.c
+++ b/drivers/gpu/drm/tiny/cirrus-qemu.c
@@ -451,5 +451,5 @@ static const struct drm_connector_funcs cirrus_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 35/59] drm/tiny: gm12u320: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (35 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Hans de Goede
The tiny: gm12u320 connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Hans de Goede <hansg@kernel.org>
---
drivers/gpu/drm/tiny/gm12u320.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index ddc19cd3e03c..5c4004346ff8 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -548,5 +548,5 @@ static const struct drm_connector_funcs gm12u320_conn_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 36/59] drm/tiny: pixpaper: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (36 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, LiangCheng Wang
The tiny: pixpaper connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: LiangCheng Wang <zaq14760@gmail.com>
---
drivers/gpu/drm/tiny/pixpaper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/pixpaper.c b/drivers/gpu/drm/tiny/pixpaper.c
index b69e7c30607e..2a92a28b40f6 100644
--- a/drivers/gpu/drm/tiny/pixpaper.c
+++ b/drivers/gpu/drm/tiny/pixpaper.c
@@ -992,7 +992,7 @@ static const struct drm_encoder_funcs pixpaper_encoder_funcs = {
static const struct drm_connector_funcs pixpaper_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 37/59] drm/tiny: repaper: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (37 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Alex Lanzano
The tiny: repaper connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Alex Lanzano <lanzano.alex@gmail.com>
---
drivers/gpu/drm/tiny/repaper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 82c99d86656f..25e6a7a4affc 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -927,7 +927,7 @@ static const struct drm_connector_helper_funcs repaper_connector_hfuncs = {
static const struct drm_connector_funcs repaper_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 38/59] drm/tiny: sharp: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (38 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Alex Lanzano
The tiny: sharp connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Alex Lanzano <lanzano.alex@gmail.com>
---
drivers/gpu/drm/tiny/sharp-memory.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/sharp-memory.c b/drivers/gpu/drm/tiny/sharp-memory.c
index 434e73bd25a5..b948e44544d6 100644
--- a/drivers/gpu/drm/tiny/sharp-memory.c
+++ b/drivers/gpu/drm/tiny/sharp-memory.c
@@ -370,7 +370,7 @@ static const struct drm_connector_helper_funcs sharp_memory_connector_hfuncs = {
static const struct drm_connector_funcs sharp_memory_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 39/59] drm/udl: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (39 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Dave Airlie, Sean Paul
The udl connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Dave Airlie <airlied@redhat.com>
Cc: Sean Paul <sean@poorly.run>
---
drivers/gpu/drm/udl/udl_modeset.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index dee085406ac2..d8a617e2d2ea 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -452,7 +452,7 @@ static const struct drm_connector_helper_funcs udl_connector_helper_funcs = {
static const struct drm_connector_funcs udl_connector_funcs = {
- .reset = drm_atomic_helper_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 40/59] drm/vboxvideo: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (40 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Hans de Goede
The vboxvideo connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Hans de Goede <hansg@kernel.org>
---
drivers/gpu/drm/vboxvideo/vbox_mode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/vboxvideo/vbox_mode.c b/drivers/gpu/drm/vboxvideo/vbox_mode.c
index 7c34299fa531..d66dc1cbbd82 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_mode.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_mode.c
@@ -801,5 +801,5 @@ static const struct drm_connector_funcs vbox_connector_funcs = {
.fill_modes = vbox_fill_modes,
.destroy = vbox_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 41/59] drm/virtio: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (41 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:44 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Chia-I Wu, David Airlie,
Dmitry Osipenko, Gerd Hoffmann, Gurchetan Singh, virtualization
The virtio connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Chia-I Wu <olvaffe@gmail.com>
Cc: David Airlie <airlied@redhat.com>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Gurchetan Singh <gurchetansingh@chromium.org>
Cc: virtualization@lists.linux.dev
---
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index b60aab07e78d..f0ed9bd27a91 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -271,5 +271,5 @@ static const struct drm_connector_funcs virtio_gpu_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = virtio_gpu_conn_destroy,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 42/59] drm/vkms: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (42 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Haneen Mohammed, Louis Chauvet,
Melissa Wen
The vkms connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
Cc: Louis Chauvet <louis.chauvet@bootlin.com>
Cc: Melissa Wen <melissa.srw@gmail.com>
---
drivers/gpu/drm/vkms/vkms_connector.c | 2 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/vkms/vkms_connector.c b/drivers/gpu/drm/vkms/vkms_connector.c
index b0a6b212d3f4..57138027966f 100644
--- a/drivers/gpu/drm/vkms/vkms_connector.c
+++ b/drivers/gpu/drm/vkms/vkms_connector.c
@@ -38,5 +38,5 @@ static const struct drm_connector_funcs vkms_connector_funcs = {
.detect = vkms_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
index ecf29a2c0c8e..858df1f89f66 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -27,5 +27,5 @@ static const u32 vkms_wb_formats[] = {
static const struct drm_connector_funcs vkms_wb_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 43/59] drm/xen: Switch to drm_atomic_helper_connector_create_state
2026-10-22 12:30 ` Maxime Ripard
` (43 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Oleksandr Andrushchenko
The xen connector implementation uses the deprecated
drm_atomic_helper_connector_reset() as its reset hook.
Switch to drm_atomic_helper_connector_create_state() instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
---
drivers/gpu/drm/xen/xen_drm_front_conn.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xen/xen_drm_front_conn.c b/drivers/gpu/drm/xen/xen_drm_front_conn.c
index a1ba6d3d0568..8ceac0947be2 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_conn.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_conn.c
@@ -95,5 +95,5 @@ static const struct drm_connector_funcs connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = drm_atomic_helper_connector_reset,
+ .atomic_create_state = drm_atomic_helper_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 44/59] drm/bridge: synopsys: dw-hdmi: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (44 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:57 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The dw-hdmi driver calls drm_atomic_helper_connector_reset() during
connector creation to allocate an initial connector state needed by
drm_connector_attach_max_bpc_property(). However, the driver only
needs to allocate a pristine state, which is exactly what
atomic_create_state provides.
Convert to drm_atomic_helper_connector_create_state() with proper
error handling.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 917cf764c9c5..5f11707c67b5 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2606,5 +2606,13 @@ static int dw_hdmi_connector_create(struct dw_hdmi *hdmi)
* connector to have a state.
*/
- drm_atomic_helper_connector_reset(connector);
+ if (!connector->state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(conn_state))
+ return PTR_ERR(conn_state);
+
+ connector->state = conn_state;
+ }
drm_connector_attach_max_bpc_property(connector, 8, 16);
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 44/59] drm/bridge: synopsys: dw-hdmi: Convert to atomic_create_state
2026-10-22 12:31 ` [PATCH v2 44/59] drm/bridge: synopsys: dw-hdmi: Convert to atomic_create_state Maxime Ripard
@ 2026-10-22 12:57 ` sashiko-bot
0 siblings, 0 replies; 78+ messages in thread
From: sashiko-bot @ 2026-10-22 12:57 UTC (permalink / raw)
To: Maxime Ripard; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/bridge: dw-hdmi: missing connector cleanup in dw_hdmi_connector_create()
--
commit 79a659d48a2ba43f6a6effe5800fc818debe3d47
Author: Maxime Ripard <mripard@kernel.org>
drm/bridge: synopsys: dw-hdmi: Convert to atomic_create_state
This commit replaces the call to drm_atomic_helper_connector_reset() in
dw_hdmi_connector_create() with drm_atomic_helper_connector_create_state() to
allocate the initial connector state required by
drm_connector_attach_max_bpc_property().
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 917cf764c9c5d..5f11707c67b5c 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -2605,7 +2605,15 @@ static int dw_hdmi_connector_create(struct dw_hdmi *hdmi)
> * drm_connector_attach_max_bpc_property() requires the
> * connector to have a state.
> */
> - drm_atomic_helper_connector_reset(connector);
> + if (!connector->state) {
> + struct drm_connector_state *conn_state;
> +
> + conn_state = drm_atomic_helper_connector_create_state(connector);
> + if (IS_ERR(conn_state))
> + return PTR_ERR(conn_state);
[Severity: High]
If drm_atomic_helper_connector_create_state() fails in
dw_hdmi_connector_create() in drivers/gpu/drm/bridge/synopsys/dw-hdmi.c,
does returning PTR_ERR(conn_state) directly leak the initialized connector
and leave &hdmi->connector linked on dev->mode_config.connector_list?
Just before allocating the state, dw_hdmi_connector_create() initializes
the unmanaged embedded connector:
drm_connector_init_with_ddc(hdmi->bridge.dev, connector,
&dw_hdmi_connector_funcs,
DRM_MODE_CONNECTOR_HDMIA,
hdmi->ddc);
which registers &connector->base in dev->mode_config.object_idr, allocates
connector->name, and adds &connector->head to
dev->mode_config.connector_list.
When dw_hdmi_connector_create() returns an error via
dw_hdmi_bridge_attach() -> drm_bridge_attach() during component binding,
dw_hdmi_bind() cleans up the bridge and component_bind() in
drivers/base/component.c releases the component devres group, freeing
struct dw_hdmi while &hdmi->connector remains on
dev->mode_config.connector_list. When the master driver later runs
drm_mode_config_cleanup() in drivers/gpu/drm/drm_mode_config.c, iterating
connector_list will dereference the already-freed &hdmi->connector.
Should this error path call drm_connector_cleanup(connector) before
returning?
> +
> + connector->state = conn_state;
> + }
>
> drm_connector_attach_max_bpc_property(connector, 8, 16);
>
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-drm-no-more-connector-reset-v2-0-0b7e4e85b1e8@kernel.org?part=44
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 45/59] drm/meson: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Jerome Brunet, Kevin Hilman,
Martin Blumenstingl, linux-amlogic
The meson HDMI encoder calls drm_atomic_helper_connector_reset()
during connector creation to allocate an initial connector state
needed by drm_connector_attach_max_bpc_property(). However, the
driver only needs to allocate a pristine state, which is exactly
what atomic_create_state provides.
Convert to drm_atomic_helper_connector_create_state() with proper
error handling.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Jerome Brunet <jbrunet@baylibre.com>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: linux-amlogic@lists.infradead.org
---
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
index c4355c5cc340..eab2e969d791 100644
--- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
+++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
@@ -449,5 +449,15 @@ int meson_encoder_hdmi_probe(struct meson_drm *priv)
* connector to have a state.
*/
- drm_atomic_helper_connector_reset(meson_encoder_hdmi->connector);
+ if (!meson_encoder_hdmi->connector->state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = drm_atomic_helper_connector_create_state(meson_encoder_hdmi->connector);
+ if (IS_ERR(conn_state)) {
+ ret = PTR_ERR(conn_state);
+ goto err_put_node;
+ }
+
+ meson_encoder_hdmi->connector->state = conn_state;
+ }
if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXL) ||
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 45/59] drm/meson: Convert to atomic_create_state
@ 2026-10-22 12:31 ` Maxime Ripard
0 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Jerome Brunet, Kevin Hilman,
Martin Blumenstingl, linux-amlogic
The meson HDMI encoder calls drm_atomic_helper_connector_reset()
during connector creation to allocate an initial connector state
needed by drm_connector_attach_max_bpc_property(). However, the
driver only needs to allocate a pristine state, which is exactly
what atomic_create_state provides.
Convert to drm_atomic_helper_connector_create_state() with proper
error handling.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Jerome Brunet <jbrunet@baylibre.com>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: linux-amlogic@lists.infradead.org
---
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
index c4355c5cc340..eab2e969d791 100644
--- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
+++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
@@ -449,5 +449,15 @@ int meson_encoder_hdmi_probe(struct meson_drm *priv)
* connector to have a state.
*/
- drm_atomic_helper_connector_reset(meson_encoder_hdmi->connector);
+ if (!meson_encoder_hdmi->connector->state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = drm_atomic_helper_connector_create_state(meson_encoder_hdmi->connector);
+ if (IS_ERR(conn_state)) {
+ ret = PTR_ERR(conn_state);
+ goto err_put_node;
+ }
+
+ meson_encoder_hdmi->connector->state = conn_state;
+ }
if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXL) ||
--
2.55.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply related [flat|nested] 78+ messages in thread
* [PATCH v2 46/59] drm/gud: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (46 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Ruben Wauters
The gud connector reset implementation creates a pristine state,
then initializes driver-specific TV properties, margins, and
brightness from the initial state. It does not perform any hardware
reset.
Since this is equivalent to what atomic_create_state expects, convert
the reset function to an atomic_create_state hook that returns the
initialized state.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Ruben Wauters <rubenru09@aol.com>
---
drivers/gpu/drm/gud/gud_connector.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/gud/gud_connector.c b/drivers/gpu/drm/gud/gud_connector.c
index a57f2565d33e..ddbf3b3ebbca 100644
--- a/drivers/gpu/drm/gud/gud_connector.c
+++ b/drivers/gpu/drm/gud/gud_connector.c
@@ -348,15 +348,22 @@ static void gud_connector_destroy(struct drm_connector *connector)
}
-static void gud_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+gud_connector_create_state(struct drm_connector *connector)
{
+ struct drm_connector_state *connector_state;
struct gud_connector *gconn = to_gud_connector(connector);
- drm_atomic_helper_connector_reset(connector);
- connector->state->tv = gconn->initial_tv_state;
+ connector_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(connector_state))
+ return connector_state;
+
+ connector_state->tv = gconn->initial_tv_state;
/* Set margins from command line */
- drm_atomic_helper_connector_tv_margins_state_init(connector->state,
+ drm_atomic_helper_connector_tv_margins_state_init(connector_state,
connector);
if (gconn->initial_brightness >= 0)
- connector->state->tv.brightness = gconn->initial_brightness;
+ connector_state->tv.brightness = gconn->initial_brightness;
+
+ return connector_state;
}
@@ -366,5 +373,5 @@ static const struct drm_connector_funcs gud_connector_funcs = {
.early_unregister = gud_connector_early_unregister,
.destroy = gud_connector_destroy,
- .reset = gud_connector_reset,
+ .atomic_create_state = gud_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 47/59] drm/sun4i: hdmi: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (47 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Chen-Yu Tsai, Samuel Holland,
linux-sunxi
The sun4i HDMI connector reset implementation creates a pristine
state and initializes the HDMI state. It does not perform any
hardware reset.
Since this is equivalent to what atomic_create_state expects, convert
the reset function to an atomic_create_state hook that returns the
initialized state.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Chen-Yu Tsai <wens@kernel.org>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-sunxi@lists.linux.dev
---
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 3084f6570c29..58626d0562ae 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -291,9 +291,17 @@ sun4i_hdmi_connector_detect(struct drm_connector *connector, bool force)
}
-static void sun4i_hdmi_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+sun4i_hdmi_connector_create_state(struct drm_connector *connector)
{
- drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_state_init(connector->state,
+ struct drm_connector_state *connector_state;
+
+ connector_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(connector_state))
+ return connector_state;
+
+ __drm_atomic_helper_connector_hdmi_state_init(connector_state,
connector);
+
+ return connector_state;
}
@@ -302,5 +310,5 @@ static const struct drm_connector_funcs sun4i_hdmi_connector_funcs = {
.detect = sun4i_hdmi_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = sun4i_hdmi_connector_reset,
+ .atomic_create_state = sun4i_hdmi_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 48/59] drm/sun4i: tv: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (48 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Chen-Yu Tsai, Samuel Holland,
linux-sunxi
The sun4i TV connector reset implementation creates a pristine state
and initializes the analog TV properties. It does not perform any
hardware reset.
Since this is equivalent to what atomic_create_state expects, convert
the reset function to an atomic_create_state hook that returns the
initialized state.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Chen-Yu Tsai <wens@kernel.org>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-sunxi@lists.linux.dev
---
drivers/gpu/drm/sun4i/sun4i_tv.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
index ea86f8a6a35e..a68e5f7a03d2 100644
--- a/drivers/gpu/drm/sun4i/sun4i_tv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
@@ -406,8 +406,16 @@ static const struct drm_connector_helper_funcs sun4i_tv_comp_connector_helper_fu
};
-static void sun4i_tv_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+sun4i_tv_connector_create_state(struct drm_connector *connector)
{
- drm_atomic_helper_connector_reset(connector);
- drm_atomic_helper_connector_tv_state_init(connector->state, connector);
+ struct drm_connector_state *connector_state;
+
+ connector_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(connector_state))
+ return connector_state;
+
+ drm_atomic_helper_connector_tv_state_init(connector_state, connector);
+
+ return connector_state;
}
@@ -415,5 +423,5 @@ static const struct drm_connector_funcs sun4i_tv_comp_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = sun4i_tv_connector_reset,
+ .atomic_create_state = sun4i_tv_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 49/59] drm/tests: hdmi: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (49 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
The test HDMI connector reset implementation creates a pristine
state and initializes the HDMI state. It does not perform any
hardware reset.
Since this is equivalent to what atomic_create_state expects, convert
the reset function to an atomic_create_state hook that returns the
initialized state.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
index 9953f5e661ce..336bb644cb7c 100644
--- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
@@ -200,16 +200,24 @@ static const struct drm_connector_helper_funcs dummy_connector_helper_funcs = {
};
-static void dummy_hdmi_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+dummy_hdmi_connector_create_state(struct drm_connector *connector)
{
- drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_state_init(connector->state,
+ struct drm_connector_state *connector_state;
+
+ connector_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(connector_state))
+ return connector_state;
+
+ __drm_atomic_helper_connector_hdmi_state_init(connector_state,
connector);
+
+ return connector_state;
}
static const struct drm_connector_funcs dummy_connector_funcs = {
+ .atomic_create_state = dummy_hdmi_connector_create_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = dummy_hdmi_connector_reset,
};
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 50/59] drm/vc4: hdmi: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (50 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal, Dave Stevenson,
Raspberry Pi Kernel Maintenance
The vc4 HDMI connector reset implementation creates a pristine state,
initializes the HDMI state, and sets the TV margins. It does not
perform any hardware reset.
Since this is equivalent to what atomic_create_state expects, convert
the reset function to an atomic_create_state hook that returns the
initialized state.
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: "Maíra Canal" <mcanal@igalia.com>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
---
drivers/gpu/drm/vc4/vc4_hdmi.c | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index e14cbe4b5f15..82618f43b0a5 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -505,10 +505,19 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector,
}
-static void vc4_hdmi_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+vc4_hdmi_connector_create_state(struct drm_connector *connector)
{
- drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_state_init(connector->state, connector);
- drm_atomic_helper_connector_tv_margins_state_init(connector->state,
+ struct drm_connector_state *connector_state;
+
+ connector_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(connector_state))
+ return connector_state;
+
+ __drm_atomic_helper_connector_hdmi_state_init(connector_state, connector);
+
+ drm_atomic_helper_connector_tv_margins_state_init(connector_state,
connector);
+
+ return connector_state;
}
@@ -517,5 +526,5 @@ static const struct drm_connector_funcs vc4_hdmi_connector_funcs = {
.force = drm_atomic_helper_connector_hdmi_force,
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = vc4_hdmi_connector_reset,
+ .atomic_create_state = vc4_hdmi_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -568,6 +577,13 @@ static int vc4_hdmi_connector_init(struct drm_device *dev,
* Allocate some default initial connector state with our reset helper.
*/
- if (connector->funcs->reset)
- connector->funcs->reset(connector);
+ if (!connector->state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = vc4_hdmi_connector_create_state(connector);
+ if (IS_ERR(conn_state))
+ return PTR_ERR(conn_state);
+
+ connector->state = conn_state;
+ }
/* Create and attach TV margin props to this connector. */
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 51/59] drm/vc4: vec: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (51 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Maíra Canal, Dave Stevenson,
Raspberry Pi Kernel Maintenance
The vc4 VEC connector reset implementation creates a pristine state
and initializes the analog TV properties. It does not perform any
hardware reset.
Since this is equivalent to what atomic_create_state expects, convert
the reset function to an atomic_create_state hook that returns the
initialized state.
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: "Maíra Canal" <mcanal@igalia.com>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
---
drivers/gpu/drm/vc4/vc4_vec.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
index 7ab77f97df31..d46c164c4393 100644
--- a/drivers/gpu/drm/vc4/vc4_vec.c
+++ b/drivers/gpu/drm/vc4/vc4_vec.c
@@ -378,8 +378,16 @@ vc4_vec_connector_detect(struct drm_connector *connector, bool force)
}
-static void vc4_vec_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+vc4_vec_connector_create_state(struct drm_connector *connector)
{
- drm_atomic_helper_connector_reset(connector);
- drm_atomic_helper_connector_tv_state_init(connector->state, connector);
+ struct drm_connector_state *connector_state;
+
+ connector_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(connector_state))
+ return connector_state;
+
+ drm_atomic_helper_connector_tv_state_init(connector_state, connector);
+
+ return connector_state;
}
@@ -490,5 +498,5 @@ static const struct drm_connector_funcs vc4_vec_connector_funcs = {
.detect = vc4_vec_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
- .reset = vc4_vec_connector_reset,
+ .atomic_create_state = vc4_vec_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 52/59] drm/connector: Remove drm_atomic_helper_connector_reset()
2026-10-22 12:30 ` Maxime Ripard
` (52 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:50 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
All drivers implementing the connector reset hook with
drm_atomic_helper_connector_reset() have been converted to
atomic_create_state.
Remove drm_atomic_helper_connector_reset().
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 3 +--
drivers/gpu/drm/drm_atomic_state_helper.c | 20 --------------------
include/drm/drm_atomic_state_helper.h | 1 -
include/drm/drm_connector.h | 2 +-
4 files changed, 2 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index c63d439382bb..66ae678fc078 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -315,6 +315,5 @@
* Initializes all HDMI resources from a @drm_connector_state without
* actually allocating it. This is useful for HDMI drivers, in
- * combination with __drm_atomic_helper_connector_state_init(),
- * drm_atomic_helper_connector_reset(), or
+ * combination with __drm_atomic_helper_connector_state_init(), or
* drm_atomic_helper_connector_create_state().
*/
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 3534925636d5..5efda28bb2b0 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -436,24 +436,4 @@ __drm_atomic_helper_connector_reset(struct drm_connector *connector,
EXPORT_SYMBOL(__drm_atomic_helper_connector_reset);
-/**
- * drm_atomic_helper_connector_reset - default &drm_connector_funcs.reset hook for connectors
- * @connector: drm connector
- *
- * Resets the atomic state for @connector by freeing the state pointer (which
- * might be NULL, e.g. at driver load time) and allocating a new empty state
- * object.
- */
-void drm_atomic_helper_connector_reset(struct drm_connector *connector)
-{
- struct drm_connector_state *conn_state = kzalloc_obj(*conn_state);
-
- if (connector->state)
- __drm_atomic_helper_connector_destroy_state(connector->state);
-
- kfree(connector->state);
- __drm_atomic_helper_connector_reset(connector, conn_state);
-}
-EXPORT_SYMBOL(drm_atomic_helper_connector_reset);
-
/**
* drm_atomic_helper_connector_create_state - default &drm_connector_funcs.atomic_create_state hook for connectors
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 5e8619aeef21..7bced7e9d860 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -69,5 +69,4 @@ void __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_s
void __drm_atomic_helper_connector_reset(struct drm_connector *connector,
struct drm_connector_state *conn_state);
-void drm_atomic_helper_connector_reset(struct drm_connector *connector);
struct drm_connector_state *
drm_atomic_helper_connector_create_state(struct drm_connector *connector);
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 2ee7c59329aa..8b52360339e0 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1666,5 +1666,5 @@ struct drm_connector_funcs {
* It's not a helper hook only for historical reasons.
*
- * Atomic drivers can use drm_atomic_helper_connector_reset() to reset
+ * Atomic drivers can use __drm_atomic_helper_connector_reset() to reset
* atomic state using this hook.
*/
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 52/59] drm/connector: Remove drm_atomic_helper_connector_reset()
2026-10-22 12:31 ` [PATCH v2 52/59] drm/connector: Remove drm_atomic_helper_connector_reset() Maxime Ripard
@ 2026-10-22 12:50 ` sashiko-bot
0 siblings, 0 replies; 78+ messages in thread
From: sashiko-bot @ 2026-10-22 12:50 UTC (permalink / raw)
To: Maxime Ripard; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] drm/connector: removing drm_atomic_helper_connector_reset() breaks 21 files
--
commit 948666959edea381d867894c27d616519ac047c5
Author: Maxime Ripard <mripard@kernel.org>
drm/connector: Remove drm_atomic_helper_connector_reset()
This commit removes the drm_atomic_helper_connector_reset() helper and its
declaration from the DRM atomic state helper headers and implementation.
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
> index 3534925636d54..5efda28bb2b07 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -435,26 +435,6 @@ __drm_atomic_helper_connector_reset(struct drm_connector *connector,
> }
> EXPORT_SYMBOL(__drm_atomic_helper_connector_reset);
>
> -/**
> - * drm_atomic_helper_connector_reset - default &drm_connector_funcs.reset hook for connectors
> - * @connector: drm connector
> - *
> - * Resets the atomic state for @connector by freeing the state pointer (which
> - * might be NULL, e.g. at driver load time) and allocating a new empty state
> - * object.
> - */
> -void drm_atomic_helper_connector_reset(struct drm_connector *connector)
> -{
> - struct drm_connector_state *conn_state = kzalloc_obj(*conn_state);
> -
> - if (connector->state)
> - __drm_atomic_helper_connector_destroy_state(connector->state);
> -
> - kfree(connector->state);
> - __drm_atomic_helper_connector_reset(connector, conn_state);
> -}
> -EXPORT_SYMBOL(drm_atomic_helper_connector_reset);
> -
[Severity: Medium]
Does removing drm_atomic_helper_connector_reset() here and in
include/drm/drm_atomic_state_helper.h cause build regressions when compiling
drivers and KUnit tests that still reference this symbol?
In drivers/gpu/drm/sysfb/drm_sysfb_helper.h, DRM_SYSFB_CONNECTOR_FUNCS still
uses drm_atomic_helper_connector_reset (affecting corebootdrm.c, efidrm.c,
ofdrm.c, simpledrm.c, and vesadrm.c):
#define DRM_SYSFB_CONNECTOR_FUNCS \
.reset = drm_atomic_helper_connector_reset, \
In addition, several other drivers and KUnit test suites still assign
.reset = drm_atomic_helper_connector_reset (or call it directly):
- drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c (komeda_wb_connector_funcs)
- drivers/gpu/drm/bridge/lontium-lt8912b.c (lt8912_connector_funcs)
- drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c (ge_b850v3_lvds_connector_funcs)
- drivers/gpu/drm/bridge/sii902x.c (sii902x_connector_funcs)
- drivers/gpu/drm/bridge/simple-bridge.c (simple_bridge_con_funcs)
- drivers/gpu/drm/hyperv/hyperv_drm_modeset.c (hv_drm_connector_funcs)
- drivers/gpu/drm/imx/ipuv3/imx-tve.c (imx_tve_connector_funcs)
- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c (dpu_wb_conn_funcs)
- drivers/gpu/drm/solomon/ssd130x.c (ssd130x_connector_funcs)
- drivers/gpu/drm/stm/lvds.c (lvds_conn_funcs)
- drivers/gpu/drm/tiny/appletbdrm.c (appletbdrm_connector_funcs)
- drivers/gpu/drm/vc4/vc4_txp.c (vc4_txp_connector_funcs)
- drivers/gpu/drm/vc4/tests/vc4_mock_output.c (vc4_dummy_connector_funcs)
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_audio_test.c (dm_test_audio_connector_funcs)
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c (dm_backlight_test_connector_funcs)
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crc_test.c (dm_test_crc_connector_funcs and a direct call to drm_atomic_helper_connector_reset(wb_conn))
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_helpers_test.c (dm_test_connector_funcs)
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c (dm_test_connector_funcs)
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c (dm_mst_test_connector_funcs and dm_mst_test_dsc_link_conn_funcs)
- drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c (dm_wb_test_connector_funcs)
Should those remaining users be converted to atomic_create_state before
drm_atomic_helper_connector_reset() is removed?
> /**
> * drm_atomic_helper_connector_create_state - default &drm_connector_funcs.atomic_create_state hook for connectors
> * @connector: connector object
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-drm-no-more-connector-reset-v2-0-0b7e4e85b1e8@kernel.org?part=52
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 53/59] drm/amdgpu: dm: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (53 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:57 ` sashiko-bot
2026-10-22 16:17 ` Leo Li
-1 siblings, 2 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Christian König, Alex Deucher,
Harry Wentland, Leo Li, Rodrigo Siqueira, amd-gfx
The amdgpu_dm connector reset implementation creates a custom state
subclass, but only initializes a pristine state without resetting any
hardware. This is equivalent to what atomic_create_state expects.
Convert to it.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Rodrigo Siqueira <siqueira@igalia.com>
Cc: amd-gfx@lists.freedesktop.org
---
.../amd/display/amdgpu_dm/amdgpu_dm_connector.c | 32 ++++----
.../amd/display/amdgpu_dm/amdgpu_dm_connector.h | 3 +-
.../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 11 ++-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 17 +++-
.../amdgpu_dm/tests/amdgpu_dm_connector_test.c | 90 ++++++++++++++--------
5 files changed, 101 insertions(+), 52 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
index 3a4e98b08ac1..e59595b5e39b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
@@ -1942,20 +1942,14 @@ STATIC_IFN_KUNIT void amdgpu_dm_connector_destroy(struct drm_connector *connecto
EXPORT_IF_KUNIT(amdgpu_dm_connector_destroy);
-void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
+struct drm_connector_state *
+amdgpu_dm_connector_atomic_create_state(struct drm_connector *connector)
{
- struct dm_connector_state *old_state =
- to_dm_connector_state(connector->state);
struct dm_connector_state *state;
state = kzalloc_obj(*state);
if (!state)
- return;
+ return ERR_PTR(-ENOMEM);
- if (connector->state)
- __drm_atomic_helper_connector_destroy_state(connector->state);
-
- kfree(old_state);
-
- __drm_atomic_helper_connector_reset(connector, &state->base);
+ __drm_atomic_helper_connector_state_init(&state->base, connector);
state->scaling = RMX_OFF;
@@ -1973,6 +1967,8 @@ void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
state->abm_level = amdgpu_dm_abm_level;
}
+
+ return &state->base;
}
-EXPORT_IF_KUNIT(amdgpu_dm_connector_funcs_reset);
+EXPORT_IF_KUNIT(amdgpu_dm_connector_atomic_create_state);
struct drm_connector_state *
@@ -2073,8 +2069,8 @@ EXPORT_IF_KUNIT(amdgpu_dm_connector_funcs_force);
static const struct drm_connector_funcs amdgpu_dm_connector_funcs = {
- .reset = amdgpu_dm_connector_funcs_reset,
.detect = amdgpu_dm_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = amdgpu_dm_connector_destroy,
+ .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
.atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -3200,6 +3196,14 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
* Allocate some default initial connector state with our reset helper.
*/
- if (aconnector->base.funcs->reset)
- aconnector->base.funcs->reset(&aconnector->base);
+ if (!aconnector->base.state &&
+ aconnector->base.funcs->atomic_create_state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
+ if (IS_ERR(conn_state))
+ return;
+
+ aconnector->base.state = conn_state;
+ }
aconnector->connector_id = link_index;
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
index 79698deacf61..4a73fc607f38 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
@@ -51,5 +51,6 @@ struct drm_edid;
struct drm_property;
-void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector);
+struct drm_connector_state *
+amdgpu_dm_connector_atomic_create_state(struct drm_connector *connector);
struct drm_connector_state *
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
index a5b15bef8aa0..e28fbd1b6790 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -259,5 +259,5 @@ static const struct drm_connector_funcs dm_dp_mst_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = dm_dp_mst_connector_destroy,
- .reset = amdgpu_dm_connector_funcs_reset,
+ .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
.atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -672,4 +672,5 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
struct amdgpu_device *adev = drm_to_adev(dev);
struct amdgpu_dm_connector *aconnector;
+ struct drm_connector_state *conn_state;
struct drm_connector *connector;
int i;
@@ -739,5 +740,11 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
* framebuffer lists
*/
- amdgpu_dm_connector_funcs_reset(connector);
+ conn_state = amdgpu_dm_connector_atomic_create_state(connector);
+ if (!IS_ERR(conn_state)) {
+ if (connector->state)
+ connector->funcs->atomic_destroy_state(connector, connector->state);
+
+ connector->state = conn_state;
+ }
drm_dp_mst_get_port_malloc(port);
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
index 6f91a992d43f..39b7b3e49f6b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
@@ -226,5 +226,5 @@ static const struct drm_connector_funcs amdgpu_dm_wb_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
- .reset = amdgpu_dm_connector_funcs_reset,
+ .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
.atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -241,4 +241,5 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm,
uint32_t link_index)
{
+ struct drm_connector *connector;
struct dc *dc = dm->dc;
struct dc_link *link = dc_get_link_at_index(dc, link_index);
@@ -262,6 +263,16 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm,
* Allocate some default initial connector state with our reset helper.
*/
- if (wbcon->base.base.funcs->reset)
- wbcon->base.base.funcs->reset(&wbcon->base.base);
+ connector = &wbcon->base.base;
+ if (connector->funcs->atomic_create_state) {
+ struct drm_connector_state *conn_state;
+
+ conn_state = amdgpu_dm_connector_atomic_create_state(connector);
+ if (!IS_ERR(conn_state)) {
+ if (connector->state)
+ connector->funcs->atomic_destroy_state(connector, connector->state);
+
+ connector->state = conn_state;
+ }
+ }
return 0;
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
index 8117aaf41f22..ebf8155326cb 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
@@ -1469,8 +1469,8 @@ static void dm_test_decide_crtc_timing_no_crtc_clock(struct kunit *test)
}
-/* Tests for amdgpu_dm_connector_funcs_reset() */
+/* Tests for amdgpu_dm_connector_atomic_create_state() */
static const struct drm_connector_funcs dm_test_connector_funcs = {
- .reset = amdgpu_dm_connector_funcs_reset,
+ .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
.atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -1478,8 +1478,8 @@ static const struct drm_connector_funcs dm_test_connector_funcs = {
/**
- * dm_test_funcs_reset_sets_defaults - Test funcs_reset sets defaults
+ * dm_test_atomic_create_sets_defaults - Test funcs_reset sets defaults
* @test: The KUnit test context
*/
-static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
+static void dm_test_atomic_create_sets_defaults(struct kunit *test)
{
struct device *dev;
@@ -1502,7 +1502,7 @@ static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
DRM_MODE_CONNECTOR_DisplayPort, NULL);
- amdgpu_dm_connector_funcs_reset(connector);
+ connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
- KUNIT_ASSERT_NOT_NULL(test, connector->state);
dm_state = to_dm_connector_state(connector->state);
KUNIT_EXPECT_EQ(test, (int)dm_state->scaling, (int)RMX_OFF);
@@ -1516,8 +1516,8 @@ static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
/**
- * dm_test_funcs_reset_edp_abm_level - Test funcs_reset eDP sets ABM
+ * dm_test_atomic_create_edp_abm_level - Test funcs_reset eDP sets ABM
* @test: The KUnit test context
*/
-static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
+static void dm_test_atomic_create_edp_abm_level(struct kunit *test)
{
struct device *dev;
@@ -1543,7 +1543,8 @@ static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
/* Test with abm_level > 0 */
amdgpu_dm_set_abm_level_param(3);
- amdgpu_dm_connector_funcs_reset(connector);
- KUNIT_ASSERT_NOT_NULL(test, connector->state);
+ connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
+
dm_state = to_dm_connector_state(connector->state);
KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level, 3);
@@ -1553,9 +1554,9 @@ static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
/**
- * dm_test_funcs_reset_edp_abm_disabled - Test funcs_reset eDP ABM
+ * dm_test_atomic_create_edp_abm_disabled - Test funcs_reset eDP ABM
* disabled
* @test: The KUnit test context
*/
-static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
+static void dm_test_atomic_create_edp_abm_disabled(struct kunit *test)
{
struct device *dev;
@@ -1581,7 +1582,8 @@ static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
/* Test with abm_level <= 0 → immediate disable */
amdgpu_dm_set_abm_level_param(-1);
- amdgpu_dm_connector_funcs_reset(connector);
- KUNIT_ASSERT_NOT_NULL(test, connector->state);
+ connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
+
dm_state = to_dm_connector_state(connector->state);
KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level,
@@ -1621,6 +1623,6 @@ static void dm_test_atomic_dup_state_copies_fields(struct kunit *test)
DRM_MODE_CONNECTOR_HDMIA, NULL);
- amdgpu_dm_connector_funcs_reset(connector);
- KUNIT_ASSERT_NOT_NULL(test, connector->state);
+ connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
/* Modify original state fields */
@@ -4887,5 +4889,5 @@ static struct dm_test_destroy_ctx *dm_test_destroy_ctx_alloc(struct kunit *test)
*/
static const struct drm_connector_funcs dm_test_destroy_funcs = {
- .reset = amdgpu_dm_connector_funcs_reset,
+ .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
.atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -6254,4 +6256,5 @@ static void dm_test_restore_state_no_encoder(struct kunit *test)
struct drm_device *drm = dm_test_alloc_drm(test);
struct amdgpu_dm_connector *aconnector;
+ struct drm_connector_state *conn_state;
aconnector = dm_test_add_connector(test, drm,
@@ -6259,6 +6262,9 @@ static void dm_test_restore_state_no_encoder(struct kunit *test)
aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
- aconnector->base.funcs->reset(&aconnector->base);
- KUNIT_ASSERT_NOT_NULL(test, aconnector->base.state);
+
+ conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+ aconnector->base.state = conn_state;
/* connector->encoder left NULL. */
@@ -6278,4 +6284,5 @@ static void dm_test_restore_state_no_stream(struct kunit *test)
{
struct drm_device *drm = dm_test_alloc_drm(test);
+ struct drm_connector_state *conn_state;
struct amdgpu_dm_connector *aconnector;
struct dm_crtc_state *acrtc_state;
@@ -6287,5 +6294,9 @@ static void dm_test_restore_state_no_stream(struct kunit *test)
aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
- aconnector->base.funcs->reset(&aconnector->base);
+
+ conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+ aconnector->base.state = conn_state;
enc = kunit_kzalloc(test, sizeof(*enc), GFP_KERNEL);
@@ -6316,4 +6327,5 @@ static void dm_test_restore_state_same_sink(struct kunit *test)
{
struct drm_device *drm = dm_test_alloc_drm(test);
+ struct drm_connector_state *conn_state;
struct amdgpu_dm_connector *aconnector;
struct dm_crtc_state *acrtc_state;
@@ -6326,5 +6338,9 @@ static void dm_test_restore_state_same_sink(struct kunit *test)
aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
- aconnector->base.funcs->reset(&aconnector->base);
+
+ conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+ aconnector->base.state = conn_state;
enc = kunit_kzalloc(test, sizeof(*enc), GFP_KERNEL);
@@ -7033,4 +7049,5 @@ static void dm_test_mode_valid_force_on_no_stream(struct kunit *test)
struct dm_test_cvs_ctx *ctx =
dm_test_cvs_ctx_alloc(test, DRM_MODE_CONNECTOR_DisplayPort);
+ struct drm_connector_state *conn_state;
struct dc_sink *em_sink;
@@ -7045,6 +7062,8 @@ static void dm_test_mode_valid_force_on_no_stream(struct kunit *test)
* point at KUnit-managed memory.
*/
- amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
- KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
+ conn_state = amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+ ctx->aconnector->base.state = conn_state;
ctx->aconnector->base.state->max_requested_bpc = 4;
@@ -7560,4 +7579,5 @@ static void dm_test_update_after_detect_disconnect(struct kunit *test)
struct dc_sink *old_sink = dm_test_uad_owned_sink();
struct dc_crtc_timing *timing = kzalloc_obj(*timing, GFP_KERNEL);
+ struct drm_connector_state *conn_state;
KUNIT_ASSERT_NOT_NULL(test, old_sink);
@@ -7571,6 +7591,8 @@ static void dm_test_update_after_detect_disconnect(struct kunit *test)
ctx->link->local_sink = NULL;
- amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
- KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
+ conn_state = amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+ ctx->aconnector->base.state = conn_state;
ctx->aconnector->base.state->content_protection =
DRM_MODE_CONTENT_PROTECTION_ENABLED;
@@ -9200,4 +9222,5 @@ static struct dm_test_fs_caps_ctx *
dm_test_fs_caps_ctx_alloc(struct kunit *test, enum signal_type sink_signal)
{
+ struct drm_connector_state *conn_state;
struct dm_test_fs_caps_ctx *ctx;
struct dc_context *dc_ctx;
@@ -9225,6 +9248,9 @@ dm_test_fs_caps_ctx_alloc(struct kunit *test, enum signal_type sink_signal)
&dm_test_connector_funcs,
DRM_MODE_CONNECTOR_DisplayPort, NULL), 0);
- amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
- KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
+
+ conn_state = amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+ ctx->aconnector->base.state = conn_state;
KUNIT_ASSERT_EQ(test,
drm_connector_attach_vrr_capable_property(&ctx->aconnector->base), 0);
@@ -9631,5 +9657,5 @@ dm_test_force_dup_state_fail(struct drm_connector *connector)
static const struct drm_connector_funcs dm_test_force_fail_funcs = {
- .reset = amdgpu_dm_connector_funcs_reset,
+ .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
.atomic_duplicate_state = dm_test_force_dup_state_fail,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -9848,8 +9874,8 @@ static struct kunit_case amdgpu_dm_connector_tests[] = {
KUNIT_CASE(dm_test_decide_crtc_timing_no_copy),
KUNIT_CASE(dm_test_decide_crtc_timing_no_crtc_clock),
- /* amdgpu_dm_connector_funcs_reset */
- KUNIT_CASE(dm_test_funcs_reset_sets_defaults),
- KUNIT_CASE(dm_test_funcs_reset_edp_abm_level),
- KUNIT_CASE(dm_test_funcs_reset_edp_abm_disabled),
+ /* amdgpu_dm_connector_atomic_create_state */
+ KUNIT_CASE(dm_test_atomic_create_sets_defaults),
+ KUNIT_CASE(dm_test_atomic_create_edp_abm_level),
+ KUNIT_CASE(dm_test_atomic_create_edp_abm_disabled),
/* amdgpu_dm_connector_atomic_duplicate_state */
KUNIT_CASE(dm_test_atomic_dup_state_copies_fields),
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 53/59] drm/amdgpu: dm: Convert to atomic_create_state
2026-10-22 12:31 ` [PATCH v2 53/59] drm/amdgpu: dm: Convert to atomic_create_state Maxime Ripard
@ 2026-10-22 12:57 ` sashiko-bot
2026-10-22 16:17 ` Leo Li
1 sibling, 0 replies; 78+ messages in thread
From: sashiko-bot @ 2026-10-22 12:57 UTC (permalink / raw)
To: Maxime Ripard; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/amd/display: partial init and NULL deref when atomic_create_state() fails
- [Medium] drm/amd/display: ERR_PTR deref on cleanup in connector KUnit tests
--
commit a996d78c707775b6da542d46e144536aa2b44c5d
Author: Maxime Ripard <mripard@kernel.org>
drm/amdgpu: dm: Convert to atomic_create_state
This commit converts the amdgpu_dm connector state initialization from the
drm_connector_funcs.reset hook to drm_connector_funcs.atomic_create_state
across connectors, MST connectors, writeback connectors, and KUnit tests.
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> index 3a4e98b08ac1f..e59595b5e39b2 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
[ ... ]
> @@ -3199,8 +3195,16 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
> * Some of the properties below require access to state, like bpc.
> * Allocate some default initial connector state with our reset helper.
> */
> - if (aconnector->base.funcs->reset)
> - aconnector->base.funcs->reset(&aconnector->base);
> + if (!aconnector->base.state &&
> + aconnector->base.funcs->atomic_create_state) {
> + struct drm_connector_state *conn_state;
> +
> + conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
> + if (IS_ERR(conn_state))
> + return;
> +
> + aconnector->base.state = conn_state;
> + }
>
> aconnector->connector_id = link_index;
> aconnector->bl_idx = -1;
[Severity: High]
What happens in the callers of amdgpu_dm_connector_init_helper() in
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c when
atomic_create_state() fails with ERR_PTR(-ENOMEM) and returns early?
Returning early from this void function skips initializing
aconnector->dc_link, aconnector->bl_idx = -1, aconnector->audio_inst = -1,
aconnector->hpd_lock, aconnector->handle_mst_msg_ready, and connector
properties, while leaving aconnector->base.state as NULL without reporting
an error to the caller.
In drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c,
amdgpu_dm_connector_init() continues execution assuming the connector was
initialized:
amdgpu_dm_connector_init_helper(
dm,
aconnector,
connector_type,
link,
link_index);
...
if (dc_is_dp_signal(link->connector_signal))
amdgpu_dm_initialize_dp_connector(dm, aconnector, link->link_index);
For DP or eDP connectors, amdgpu_dm_connector_init() ->
amdgpu_dm_initialize_dp_connector() in
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c immediately
dereferences aconnector->dc_link while it is still NULL:
aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
For other connectors, amdgpu_dm_mode_config_init() proceeds to call
amdgpu_dm_update_connector_after_detect(), which also dereferences
aconnector->dc_link->local_sink. In addition, if
amdgpu_dm_connector_destroy() runs on this partially initialized connector,
aconnector->bl_idx is still 0 rather than -1, so it will unregister
dm->backlight_dev[0].
Similarly, in drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c,
dm_dp_add_mst_connector() calls amdgpu_dm_connector_init_helper() and then
calls drm_connector_attach_max_bpc_property(connector, 8, 16), which
dereferences connector->state while it is NULL:
amdgpu_dm_connector_init_helper(
&adev->dm,
aconnector,
DRM_MODE_CONNECTOR_DisplayPort,
master->dc_link,
master->connector_id);
...
connector->max_bpc_property = master->base.max_bpc_property;
if (connector->max_bpc_property)
drm_connector_attach_max_bpc_property(connector, 8, 16);
Along the same lines, in
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c,
amdgpu_dm_wb_connector_init() ignores an ERR_PTR return from
amdgpu_dm_connector_atomic_create_state() and returns 0 with
connector->state left as NULL:
conn_state = amdgpu_dm_connector_atomic_create_state(connector);
if (!IS_ERR(conn_state)) {
if (connector->state)
connector->funcs->atomic_destroy_state(connector, connector->state);
connector->state = conn_state;
}
Should amdgpu_dm_connector_init_helper() and amdgpu_dm_wb_connector_init()
propagate the allocation error to their callers so connector initialization
can fail cleanly?
[ ... ]
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
> index 8117aaf41f220..ebf8155326cb1 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
> @@ -1468,19 +1468,19 @@ static void dm_test_decide_crtc_timing_no_crtc_clock(struct kunit *test)
> KUNIT_EXPECT_EQ(test, drm_mode.crtc_hdisplay, 0);
> }
>
> -/* Tests for amdgpu_dm_connector_funcs_reset() */
> +/* Tests for amdgpu_dm_connector_atomic_create_state() */
>
> static const struct drm_connector_funcs dm_test_connector_funcs = {
> - .reset = amdgpu_dm_connector_funcs_reset,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> };
>
> /**
> - * dm_test_funcs_reset_sets_defaults - Test funcs_reset sets defaults
> + * dm_test_atomic_create_sets_defaults - Test funcs_reset sets defaults
> * @test: The KUnit test context
> */
> -static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
> +static void dm_test_atomic_create_sets_defaults(struct kunit *test)
> {
> struct device *dev;
> struct drm_device *drm;
> @@ -1501,9 +1501,9 @@ static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
> drmm_connector_init(drm, connector, &dm_test_connector_funcs,
> DRM_MODE_CONNECTOR_DisplayPort, NULL);
>
> - amdgpu_dm_connector_funcs_reset(connector);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
>
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> dm_state = to_dm_connector_state(connector->state);
> KUNIT_EXPECT_EQ(test, (int)dm_state->scaling, (int)RMX_OFF);
> KUNIT_EXPECT_FALSE(test, dm_state->underscan_enable);
> @@ -1515,10 +1515,10 @@ static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
> }
>
> /**
> - * dm_test_funcs_reset_edp_abm_level - Test funcs_reset eDP sets ABM
> + * dm_test_atomic_create_edp_abm_level - Test funcs_reset eDP sets ABM
> * @test: The KUnit test context
> */
> -static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
> +static void dm_test_atomic_create_edp_abm_level(struct kunit *test)
> {
> struct device *dev;
> struct drm_device *drm;
> @@ -1542,9 +1542,10 @@ static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
>
> /* Test with abm_level > 0 */
> amdgpu_dm_set_abm_level_param(3);
> - amdgpu_dm_connector_funcs_reset(connector);
>
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
> +
> dm_state = to_dm_connector_state(connector->state);
> KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level, 3);
>
> @@ -1552,11 +1553,11 @@ static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
> }
>
> /**
> - * dm_test_funcs_reset_edp_abm_disabled - Test funcs_reset eDP ABM
> + * dm_test_atomic_create_edp_abm_disabled - Test funcs_reset eDP ABM
> * disabled
> * @test: The KUnit test context
> */
> -static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
> +static void dm_test_atomic_create_edp_abm_disabled(struct kunit *test)
> {
> struct device *dev;
> struct drm_device *drm;
> @@ -1580,9 +1581,10 @@ static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
>
> /* Test with abm_level <= 0 → immediate disable */
> amdgpu_dm_set_abm_level_param(-1);
> - amdgpu_dm_connector_funcs_reset(connector);
>
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
> +
> dm_state = to_dm_connector_state(connector->state);
> KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level,
> (int)ABM_LEVEL_IMMEDIATE_DISABLE);
> @@ -1620,8 +1622,8 @@ static void dm_test_atomic_dup_state_copies_fields(struct kunit *test)
> drmm_connector_init(drm, connector, &dm_test_connector_funcs,
> DRM_MODE_CONNECTOR_HDMIA, NULL);
>
> - amdgpu_dm_connector_funcs_reset(connector);
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
>
> /* Modify original state fields */
> dm_state = to_dm_connector_state(connector->state);
[Severity: Medium]
In dm_test_atomic_create_sets_defaults(),
dm_test_atomic_create_edp_abm_level(),
dm_test_atomic_create_edp_abm_disabled(), and
dm_test_atomic_dup_state_copies_fields() in
drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c, can
assigning directly to connector->state before
KUNIT_ASSERT_NOT_ERR_OR_NULL() cause an error pointer dereference during
test teardown?
Each of these tests initializes the connector with drmm_connector_init(),
which registers drm_connector_cleanup() as a managed cleanup action. If
amdgpu_dm_connector_atomic_create_state() returns ERR_PTR(-ENOMEM),
connector->state holds that non-NULL error pointer when
KUNIT_ASSERT_NOT_ERR_OR_NULL() aborts the test, and drm_connector_cleanup()
in drivers/gpu/drm/drm_connector.c will then pass it to
atomic_destroy_state():
if (connector->state && connector->funcs->atomic_destroy_state)
connector->funcs->atomic_destroy_state(connector,
connector->state);
Would it be safer to store the return value in a local conn_state variable
and assert KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state) before assigning
connector->state, as done in the other tests in this file?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-drm-no-more-connector-reset-v2-0-0b7e4e85b1e8@kernel.org?part=53
^ permalink raw reply [flat|nested] 78+ messages in thread* Re: [PATCH v2 53/59] drm/amdgpu: dm: Convert to atomic_create_state
2026-10-22 12:31 ` [PATCH v2 53/59] drm/amdgpu: dm: Convert to atomic_create_state Maxime Ripard
2026-10-22 12:57 ` sashiko-bot
@ 2026-10-22 16:17 ` Leo Li
1 sibling, 0 replies; 78+ messages in thread
From: Leo Li @ 2026-10-22 16:17 UTC (permalink / raw)
To: Maxime Ripard, Maarten Lankhorst, Thomas Zimmermann, David Airlie,
Simona Vetter
Cc: dri-devel, Christian König, Alex Deucher, Harry Wentland,
Rodrigo Siqueira, amd-gfx
On 2026-10-22 08:31, Maxime Ripard wrote:
> The amdgpu_dm connector reset implementation creates a custom state
> subclass, but only initializes a pristine state without resetting any
> hardware. This is equivalent to what atomic_create_state expects.
> Convert to it.
>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Leo Li <sunpeng.li@amd.com>
Thanks!
> ---
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Rodrigo Siqueira <siqueira@igalia.com>
> Cc: amd-gfx@lists.freedesktop.org
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_connector.c | 32 ++++----
> .../amd/display/amdgpu_dm/amdgpu_dm_connector.h | 3 +-
> .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 11 ++-
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 17 +++-
> .../amdgpu_dm/tests/amdgpu_dm_connector_test.c | 90 ++++++++++++++--------
> 5 files changed, 101 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> index 3a4e98b08ac1..e59595b5e39b 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> @@ -1942,20 +1942,14 @@ STATIC_IFN_KUNIT void amdgpu_dm_connector_destroy(struct drm_connector *connecto
> EXPORT_IF_KUNIT(amdgpu_dm_connector_destroy);
>
> -void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
> +struct drm_connector_state *
> +amdgpu_dm_connector_atomic_create_state(struct drm_connector *connector)
> {
> - struct dm_connector_state *old_state =
> - to_dm_connector_state(connector->state);
> struct dm_connector_state *state;
>
> state = kzalloc_obj(*state);
> if (!state)
> - return;
> + return ERR_PTR(-ENOMEM);
>
> - if (connector->state)
> - __drm_atomic_helper_connector_destroy_state(connector->state);
> -
> - kfree(old_state);
> -
> - __drm_atomic_helper_connector_reset(connector, &state->base);
> + __drm_atomic_helper_connector_state_init(&state->base, connector);
>
> state->scaling = RMX_OFF;
> @@ -1973,6 +1967,8 @@ void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
> state->abm_level = amdgpu_dm_abm_level;
> }
> +
> + return &state->base;
> }
> -EXPORT_IF_KUNIT(amdgpu_dm_connector_funcs_reset);
> +EXPORT_IF_KUNIT(amdgpu_dm_connector_atomic_create_state);
>
> struct drm_connector_state *
> @@ -2073,8 +2069,8 @@ EXPORT_IF_KUNIT(amdgpu_dm_connector_funcs_force);
>
> static const struct drm_connector_funcs amdgpu_dm_connector_funcs = {
> - .reset = amdgpu_dm_connector_funcs_reset,
> .detect = amdgpu_dm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = amdgpu_dm_connector_destroy,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> @@ -3200,6 +3196,14 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
> * Allocate some default initial connector state with our reset helper.
> */
> - if (aconnector->base.funcs->reset)
> - aconnector->base.funcs->reset(&aconnector->base);
> + if (!aconnector->base.state &&
> + aconnector->base.funcs->atomic_create_state) {
> + struct drm_connector_state *conn_state;
> +
> + conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
> + if (IS_ERR(conn_state))
> + return;
> +
> + aconnector->base.state = conn_state;
> + }
>
> aconnector->connector_id = link_index;
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
> index 79698deacf61..4a73fc607f38 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
> @@ -51,5 +51,6 @@ struct drm_edid;
> struct drm_property;
>
> -void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector);
> +struct drm_connector_state *
> +amdgpu_dm_connector_atomic_create_state(struct drm_connector *connector);
>
> struct drm_connector_state *
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index a5b15bef8aa0..e28fbd1b6790 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -259,5 +259,5 @@ static const struct drm_connector_funcs dm_dp_mst_connector_funcs = {
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = dm_dp_mst_connector_destroy,
> - .reset = amdgpu_dm_connector_funcs_reset,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> @@ -672,4 +672,5 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
> struct amdgpu_device *adev = drm_to_adev(dev);
> struct amdgpu_dm_connector *aconnector;
> + struct drm_connector_state *conn_state;
> struct drm_connector *connector;
> int i;
> @@ -739,5 +740,11 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
> * framebuffer lists
> */
> - amdgpu_dm_connector_funcs_reset(connector);
> + conn_state = amdgpu_dm_connector_atomic_create_state(connector);
> + if (!IS_ERR(conn_state)) {
> + if (connector->state)
> + connector->funcs->atomic_destroy_state(connector, connector->state);
> +
> + connector->state = conn_state;
> + }
>
> drm_dp_mst_get_port_malloc(port);
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
> index 6f91a992d43f..39b7b3e49f6b 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
> @@ -226,5 +226,5 @@ static const struct drm_connector_funcs amdgpu_dm_wb_connector_funcs = {
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> - .reset = amdgpu_dm_connector_funcs_reset,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> @@ -241,4 +241,5 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm,
> uint32_t link_index)
> {
> + struct drm_connector *connector;
> struct dc *dc = dm->dc;
> struct dc_link *link = dc_get_link_at_index(dc, link_index);
> @@ -262,6 +263,16 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm,
> * Allocate some default initial connector state with our reset helper.
> */
> - if (wbcon->base.base.funcs->reset)
> - wbcon->base.base.funcs->reset(&wbcon->base.base);
> + connector = &wbcon->base.base;
> + if (connector->funcs->atomic_create_state) {
> + struct drm_connector_state *conn_state;
> +
> + conn_state = amdgpu_dm_connector_atomic_create_state(connector);
> + if (!IS_ERR(conn_state)) {
> + if (connector->state)
> + connector->funcs->atomic_destroy_state(connector, connector->state);
> +
> + connector->state = conn_state;
> + }
> + }
>
> return 0;
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
> index 8117aaf41f22..ebf8155326cb 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
> @@ -1469,8 +1469,8 @@ static void dm_test_decide_crtc_timing_no_crtc_clock(struct kunit *test)
> }
>
> -/* Tests for amdgpu_dm_connector_funcs_reset() */
> +/* Tests for amdgpu_dm_connector_atomic_create_state() */
>
> static const struct drm_connector_funcs dm_test_connector_funcs = {
> - .reset = amdgpu_dm_connector_funcs_reset,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> @@ -1478,8 +1478,8 @@ static const struct drm_connector_funcs dm_test_connector_funcs = {
>
> /**
> - * dm_test_funcs_reset_sets_defaults - Test funcs_reset sets defaults
> + * dm_test_atomic_create_sets_defaults - Test funcs_reset sets defaults
> * @test: The KUnit test context
> */
> -static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
> +static void dm_test_atomic_create_sets_defaults(struct kunit *test)
> {
> struct device *dev;
> @@ -1502,7 +1502,7 @@ static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
> DRM_MODE_CONNECTOR_DisplayPort, NULL);
>
> - amdgpu_dm_connector_funcs_reset(connector);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
>
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> dm_state = to_dm_connector_state(connector->state);
> KUNIT_EXPECT_EQ(test, (int)dm_state->scaling, (int)RMX_OFF);
> @@ -1516,8 +1516,8 @@ static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
>
> /**
> - * dm_test_funcs_reset_edp_abm_level - Test funcs_reset eDP sets ABM
> + * dm_test_atomic_create_edp_abm_level - Test funcs_reset eDP sets ABM
> * @test: The KUnit test context
> */
> -static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
> +static void dm_test_atomic_create_edp_abm_level(struct kunit *test)
> {
> struct device *dev;
> @@ -1543,7 +1543,8 @@ static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
> /* Test with abm_level > 0 */
> amdgpu_dm_set_abm_level_param(3);
> - amdgpu_dm_connector_funcs_reset(connector);
>
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
> +
> dm_state = to_dm_connector_state(connector->state);
> KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level, 3);
> @@ -1553,9 +1554,9 @@ static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
>
> /**
> - * dm_test_funcs_reset_edp_abm_disabled - Test funcs_reset eDP ABM
> + * dm_test_atomic_create_edp_abm_disabled - Test funcs_reset eDP ABM
> * disabled
> * @test: The KUnit test context
> */
> -static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
> +static void dm_test_atomic_create_edp_abm_disabled(struct kunit *test)
> {
> struct device *dev;
> @@ -1581,7 +1582,8 @@ static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
> /* Test with abm_level <= 0 → immediate disable */
> amdgpu_dm_set_abm_level_param(-1);
> - amdgpu_dm_connector_funcs_reset(connector);
>
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
> +
> dm_state = to_dm_connector_state(connector->state);
> KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level,
> @@ -1621,6 +1623,6 @@ static void dm_test_atomic_dup_state_copies_fields(struct kunit *test)
> DRM_MODE_CONNECTOR_HDMIA, NULL);
>
> - amdgpu_dm_connector_funcs_reset(connector);
> - KUNIT_ASSERT_NOT_NULL(test, connector->state);
> + connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
>
> /* Modify original state fields */
> @@ -4887,5 +4889,5 @@ static struct dm_test_destroy_ctx *dm_test_destroy_ctx_alloc(struct kunit *test)
> */
> static const struct drm_connector_funcs dm_test_destroy_funcs = {
> - .reset = amdgpu_dm_connector_funcs_reset,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> @@ -6254,4 +6256,5 @@ static void dm_test_restore_state_no_encoder(struct kunit *test)
> struct drm_device *drm = dm_test_alloc_drm(test);
> struct amdgpu_dm_connector *aconnector;
> + struct drm_connector_state *conn_state;
>
> aconnector = dm_test_add_connector(test, drm,
> @@ -6259,6 +6262,9 @@ static void dm_test_restore_state_no_encoder(struct kunit *test)
> aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
> KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
> - aconnector->base.funcs->reset(&aconnector->base);
> - KUNIT_ASSERT_NOT_NULL(test, aconnector->base.state);
> +
> + conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
> +
> + aconnector->base.state = conn_state;
> /* connector->encoder left NULL. */
>
> @@ -6278,4 +6284,5 @@ static void dm_test_restore_state_no_stream(struct kunit *test)
> {
> struct drm_device *drm = dm_test_alloc_drm(test);
> + struct drm_connector_state *conn_state;
> struct amdgpu_dm_connector *aconnector;
> struct dm_crtc_state *acrtc_state;
> @@ -6287,5 +6294,9 @@ static void dm_test_restore_state_no_stream(struct kunit *test)
> aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
> KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
> - aconnector->base.funcs->reset(&aconnector->base);
> +
> + conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
> +
> + aconnector->base.state = conn_state;
>
> enc = kunit_kzalloc(test, sizeof(*enc), GFP_KERNEL);
> @@ -6316,4 +6327,5 @@ static void dm_test_restore_state_same_sink(struct kunit *test)
> {
> struct drm_device *drm = dm_test_alloc_drm(test);
> + struct drm_connector_state *conn_state;
> struct amdgpu_dm_connector *aconnector;
> struct dm_crtc_state *acrtc_state;
> @@ -6326,5 +6338,9 @@ static void dm_test_restore_state_same_sink(struct kunit *test)
> aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
> KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
> - aconnector->base.funcs->reset(&aconnector->base);
> +
> + conn_state = aconnector->base.funcs->atomic_create_state(&aconnector->base);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
> +
> + aconnector->base.state = conn_state;
>
> enc = kunit_kzalloc(test, sizeof(*enc), GFP_KERNEL);
> @@ -7033,4 +7049,5 @@ static void dm_test_mode_valid_force_on_no_stream(struct kunit *test)
> struct dm_test_cvs_ctx *ctx =
> dm_test_cvs_ctx_alloc(test, DRM_MODE_CONNECTOR_DisplayPort);
> + struct drm_connector_state *conn_state;
> struct dc_sink *em_sink;
>
> @@ -7045,6 +7062,8 @@ static void dm_test_mode_valid_force_on_no_stream(struct kunit *test)
> * point at KUnit-managed memory.
> */
> - amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
> - KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
> + conn_state = amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
> +
> + ctx->aconnector->base.state = conn_state;
> ctx->aconnector->base.state->max_requested_bpc = 4;
>
> @@ -7560,4 +7579,5 @@ static void dm_test_update_after_detect_disconnect(struct kunit *test)
> struct dc_sink *old_sink = dm_test_uad_owned_sink();
> struct dc_crtc_timing *timing = kzalloc_obj(*timing, GFP_KERNEL);
> + struct drm_connector_state *conn_state;
>
> KUNIT_ASSERT_NOT_NULL(test, old_sink);
> @@ -7571,6 +7591,8 @@ static void dm_test_update_after_detect_disconnect(struct kunit *test)
> ctx->link->local_sink = NULL;
>
> - amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
> - KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
> + conn_state = amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
> +
> + ctx->aconnector->base.state = conn_state;
> ctx->aconnector->base.state->content_protection =
> DRM_MODE_CONTENT_PROTECTION_ENABLED;
> @@ -9200,4 +9222,5 @@ static struct dm_test_fs_caps_ctx *
> dm_test_fs_caps_ctx_alloc(struct kunit *test, enum signal_type sink_signal)
> {
> + struct drm_connector_state *conn_state;
> struct dm_test_fs_caps_ctx *ctx;
> struct dc_context *dc_ctx;
> @@ -9225,6 +9248,9 @@ dm_test_fs_caps_ctx_alloc(struct kunit *test, enum signal_type sink_signal)
> &dm_test_connector_funcs,
> DRM_MODE_CONNECTOR_DisplayPort, NULL), 0);
> - amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
> - KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
> +
> + conn_state = amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
> +
> + ctx->aconnector->base.state = conn_state;
> KUNIT_ASSERT_EQ(test,
> drm_connector_attach_vrr_capable_property(&ctx->aconnector->base), 0);
> @@ -9631,5 +9657,5 @@ dm_test_force_dup_state_fail(struct drm_connector *connector)
>
> static const struct drm_connector_funcs dm_test_force_fail_funcs = {
> - .reset = amdgpu_dm_connector_funcs_reset,
> + .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
> .atomic_duplicate_state = dm_test_force_dup_state_fail,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> @@ -9848,8 +9874,8 @@ static struct kunit_case amdgpu_dm_connector_tests[] = {
> KUNIT_CASE(dm_test_decide_crtc_timing_no_copy),
> KUNIT_CASE(dm_test_decide_crtc_timing_no_crtc_clock),
> - /* amdgpu_dm_connector_funcs_reset */
> - KUNIT_CASE(dm_test_funcs_reset_sets_defaults),
> - KUNIT_CASE(dm_test_funcs_reset_edp_abm_level),
> - KUNIT_CASE(dm_test_funcs_reset_edp_abm_disabled),
> + /* amdgpu_dm_connector_atomic_create_state */
> + KUNIT_CASE(dm_test_atomic_create_sets_defaults),
> + KUNIT_CASE(dm_test_atomic_create_edp_abm_level),
> + KUNIT_CASE(dm_test_atomic_create_edp_abm_disabled),
> /* amdgpu_dm_connector_atomic_duplicate_state */
> KUNIT_CASE(dm_test_atomic_dup_state_copies_fields),
>
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 54/59] drm/ast: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (54 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Dave Airlie, Jocelyn Falempe
The ast DisplayPort connector reset implementation creates a custom
state subclass, but only initializes a pristine state without resetting
any hardware. This is equivalent to what atomic_create_state expects.
Convert to it.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
---
drivers/gpu/drm/ast/ast_dp.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c
index f22c0c215a21..373608aa10b9 100644
--- a/drivers/gpu/drm/ast/ast_dp.c
+++ b/drivers/gpu/drm/ast/ast_dp.c
@@ -470,15 +470,15 @@ static const struct drm_connector_helper_funcs ast_astdp_connector_helper_funcs
};
-static void ast_astdp_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *ast_astdp_connector_create_state(struct drm_connector *connector)
{
- struct ast_astdp_connector_state *astdp_state = kzalloc_obj(*astdp_state);
+ struct ast_astdp_connector_state *astdp_state;
- if (connector->state)
- connector->funcs->atomic_destroy_state(connector, connector->state);
+ astdp_state = kzalloc_obj(*astdp_state);
+ if (!astdp_state)
+ return ERR_PTR(-ENOMEM);
- if (astdp_state)
- __drm_atomic_helper_connector_reset(connector, &astdp_state->base);
- else
- __drm_atomic_helper_connector_reset(connector, NULL);
+ __drm_atomic_helper_connector_state_init(&astdp_state->base, connector);
+
+ return &astdp_state->base;
}
@@ -514,7 +514,7 @@ static void ast_astdp_connector_atomic_destroy_state(struct drm_connector *conne
static const struct drm_connector_funcs ast_astdp_connector_funcs = {
- .reset = ast_astdp_connector_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
+ .atomic_create_state = ast_astdp_connector_create_state,
.atomic_duplicate_state = ast_astdp_connector_atomic_duplicate_state,
.atomic_destroy_state = ast_astdp_connector_atomic_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 55/59] drm/i915: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (55 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Jani Nikula, Joonas Lahtinen,
Rodrigo Vivi, Tvrtko Ursulin, intel-gfx, intel-xe
The i915 connector initialization uses
__drm_atomic_helper_connector_reset() to set up the initial state
during connector allocation. However, it only needs to initialize
the state, not reset it.
Switch to __drm_atomic_helper_connector_state_init() and assign
connector->state explicitly, matching what atomic_create_state
expects.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Tvrtko Ursulin <tursulin@ursulin.net>
Cc: intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
---
drivers/gpu/drm/i915/display/intel_connector.c | 6 ++++--
drivers/gpu/drm/i915/display/intel_sdvo.c | 6 ++++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c
index 7ef9338d67ab..ed38959b466d 100644
--- a/drivers/gpu/drm/i915/display/intel_connector.c
+++ b/drivers/gpu/drm/i915/display/intel_connector.c
@@ -91,6 +91,8 @@ static int intel_connector_init(struct intel_connector *connector)
return -ENOMEM;
- __drm_atomic_helper_connector_reset(&connector->base,
- &conn_state->base);
+ __drm_atomic_helper_connector_state_init(&conn_state->base,
+ &connector->base);
+
+ connector->base.state = &conn_state->base;
intel_panel_init_alloc(connector);
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index 3075ef04df56..7b97f531acbf 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -2791,6 +2791,8 @@ static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
}
- __drm_atomic_helper_connector_reset(&sdvo_connector->base.base,
- &conn_state->base.base);
+ __drm_atomic_helper_connector_state_init(&conn_state->base.base,
+ &sdvo_connector->base.base);
+
+ sdvo_connector->base.base.state = &conn_state->base.base;
intel_panel_init_alloc(&sdvo_connector->base);
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 56/59] drm/nouveau: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Danilo Krummrich, Lyude Paul, nouveau
The nouveau connector reset implementation creates a custom state
subclass, but only initializes a pristine state and sets
driver-specific defaults without resetting any hardware. This is
equivalent to what atomic_create_state expects. Convert to it.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Lyude Paul <lyude@redhat.com>
Cc: nouveau@lists.freedesktop.org
---
drivers/gpu/drm/nouveau/dispnv50/disp.c | 11 +++++++++--
drivers/gpu/drm/nouveau/nouveau_connector.c | 27 ++++++++++++++++-----------
drivers/gpu/drm/nouveau/nouveau_connector.h | 3 ++-
3 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index e91130f93db6..947d0ff4ba02 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -1249,7 +1249,7 @@ nv50_mstc_destroy(struct drm_connector *connector)
static const struct drm_connector_funcs
nv50_mstc = {
- .reset = nouveau_conn_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = nv50_mstc_destroy,
+ .atomic_create_state = nouveau_conn_atomic_create_state,
.atomic_duplicate_state = nouveau_conn_atomic_duplicate_state,
.atomic_destroy_state = nouveau_conn_atomic_destroy_state,
@@ -1263,4 +1263,5 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
{
struct drm_device *dev = mstm->outp->base.base.dev;
+ struct drm_connector_state *conn_state;
struct drm_crtc *crtc;
struct nv50_mstc *mstc;
@@ -1282,5 +1283,11 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
drm_connector_helper_add(&mstc->connector, &nv50_mstc_help);
- mstc->connector.funcs->reset(&mstc->connector);
+ conn_state = mstc->connector.funcs->atomic_create_state(&mstc->connector);
+ if (IS_ERR(conn_state)) {
+ drm_connector_cleanup(&mstc->connector);
+ return PTR_ERR(conn_state);
+ }
+ mstc->connector.state = conn_state;
+
nouveau_conn_attach_properties(&mstc->connector);
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index cc3caf8de64b..e4ab9849de4d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -243,6 +243,6 @@ nouveau_conn_atomic_duplicate_state(struct drm_connector *connector)
}
-void
-nouveau_conn_reset(struct drm_connector *connector)
+struct drm_connector_state *
+nouveau_conn_atomic_create_state(struct drm_connector *connector)
{
struct nouveau_connector *nv_connector = nouveau_connector(connector);
@@ -251,11 +251,7 @@ nouveau_conn_reset(struct drm_connector *connector)
if (drm_drv_uses_atomic_modeset(connector->dev)) {
if (WARN_ON(!(asyc = kzalloc_obj(*asyc))))
- return;
+ return ERR_PTR(-ENOMEM);
- if (connector->state)
- nouveau_conn_atomic_destroy_state(connector,
- connector->state);
-
- __drm_atomic_helper_connector_reset(connector, &asyc->state);
+ __drm_atomic_helper_connector_state_init(&asyc->state, connector);
} else {
asyc = &nv_connector->properties_state;
@@ -279,4 +275,6 @@ nouveau_conn_reset(struct drm_connector *connector)
}
}
+
+ return &asyc->state;
}
@@ -1231,5 +1229,4 @@ static const struct drm_connector_funcs
nouveau_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .reset = nouveau_conn_reset,
.detect = nouveau_connector_detect,
.force = nouveau_connector_force,
@@ -1237,4 +1234,5 @@ nouveau_connector_funcs = {
.set_property = nouveau_connector_set_property,
.destroy = nouveau_connector_destroy,
+ .atomic_create_state = nouveau_conn_atomic_create_state,
.atomic_duplicate_state = nouveau_conn_atomic_duplicate_state,
.atomic_destroy_state = nouveau_conn_atomic_destroy_state,
@@ -1248,5 +1246,4 @@ static const struct drm_connector_funcs
nouveau_connector_funcs_lvds = {
.dpms = drm_helper_connector_dpms,
- .reset = nouveau_conn_reset,
.detect = nouveau_connector_detect_lvds,
.force = nouveau_connector_force,
@@ -1254,4 +1251,5 @@ nouveau_connector_funcs_lvds = {
.set_property = nouveau_connector_set_property,
.destroy = nouveau_connector_destroy,
+ .atomic_create_state = nouveau_conn_atomic_create_state,
.atomic_duplicate_state = nouveau_conn_atomic_duplicate_state,
.atomic_destroy_state = nouveau_conn_atomic_destroy_state,
@@ -1362,4 +1360,5 @@ nouveau_connector_create(struct drm_device *dev, int index)
struct nouveau_display *disp = nouveau_display(dev);
struct nouveau_connector *nv_connector = NULL;
+ struct drm_connector_state *conn_state;
struct drm_connector *connector;
struct drm_connector_list_iter conn_iter;
@@ -1522,5 +1521,11 @@ nouveau_connector_create(struct drm_device *dev, int index)
}
- connector->funcs->reset(connector);
+ conn_state = connector->funcs->atomic_create_state(connector);
+ if (IS_ERR(conn_state)) {
+ ret = PTR_ERR(conn_state);
+ goto drm_conn_err;
+ }
+ connector->state = conn_state;
+
nouveau_conn_attach_properties(connector);
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.h b/drivers/gpu/drm/nouveau/nouveau_connector.h
index eb292d2ba4bc..02f843648eb8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.h
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.h
@@ -217,5 +217,6 @@ extern int nouveau_hdmimhz;
void nouveau_conn_attach_properties(struct drm_connector *);
-void nouveau_conn_reset(struct drm_connector *);
+struct drm_connector_state *
+nouveau_conn_atomic_create_state(struct drm_connector *);
struct drm_connector_state *
nouveau_conn_atomic_duplicate_state(struct drm_connector *);
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 56/59] drm/nouveau: Convert to atomic_create_state
@ 2026-10-22 12:31 ` Maxime Ripard
0 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Danilo Krummrich, nouveau
The nouveau connector reset implementation creates a custom state
subclass, but only initializes a pristine state and sets
driver-specific defaults without resetting any hardware. This is
equivalent to what atomic_create_state expects. Convert to it.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Lyude Paul <lyude@redhat.com>
Cc: nouveau@lists.freedesktop.org
---
drivers/gpu/drm/nouveau/dispnv50/disp.c | 11 +++++++++--
drivers/gpu/drm/nouveau/nouveau_connector.c | 27 ++++++++++++++++-----------
drivers/gpu/drm/nouveau/nouveau_connector.h | 3 ++-
3 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index e91130f93db6..947d0ff4ba02 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -1249,7 +1249,7 @@ nv50_mstc_destroy(struct drm_connector *connector)
static const struct drm_connector_funcs
nv50_mstc = {
- .reset = nouveau_conn_reset,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = nv50_mstc_destroy,
+ .atomic_create_state = nouveau_conn_atomic_create_state,
.atomic_duplicate_state = nouveau_conn_atomic_duplicate_state,
.atomic_destroy_state = nouveau_conn_atomic_destroy_state,
@@ -1263,4 +1263,5 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
{
struct drm_device *dev = mstm->outp->base.base.dev;
+ struct drm_connector_state *conn_state;
struct drm_crtc *crtc;
struct nv50_mstc *mstc;
@@ -1282,5 +1283,11 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
drm_connector_helper_add(&mstc->connector, &nv50_mstc_help);
- mstc->connector.funcs->reset(&mstc->connector);
+ conn_state = mstc->connector.funcs->atomic_create_state(&mstc->connector);
+ if (IS_ERR(conn_state)) {
+ drm_connector_cleanup(&mstc->connector);
+ return PTR_ERR(conn_state);
+ }
+ mstc->connector.state = conn_state;
+
nouveau_conn_attach_properties(&mstc->connector);
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index cc3caf8de64b..e4ab9849de4d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -243,6 +243,6 @@ nouveau_conn_atomic_duplicate_state(struct drm_connector *connector)
}
-void
-nouveau_conn_reset(struct drm_connector *connector)
+struct drm_connector_state *
+nouveau_conn_atomic_create_state(struct drm_connector *connector)
{
struct nouveau_connector *nv_connector = nouveau_connector(connector);
@@ -251,11 +251,7 @@ nouveau_conn_reset(struct drm_connector *connector)
if (drm_drv_uses_atomic_modeset(connector->dev)) {
if (WARN_ON(!(asyc = kzalloc_obj(*asyc))))
- return;
+ return ERR_PTR(-ENOMEM);
- if (connector->state)
- nouveau_conn_atomic_destroy_state(connector,
- connector->state);
-
- __drm_atomic_helper_connector_reset(connector, &asyc->state);
+ __drm_atomic_helper_connector_state_init(&asyc->state, connector);
} else {
asyc = &nv_connector->properties_state;
@@ -279,4 +275,6 @@ nouveau_conn_reset(struct drm_connector *connector)
}
}
+
+ return &asyc->state;
}
@@ -1231,5 +1229,4 @@ static const struct drm_connector_funcs
nouveau_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .reset = nouveau_conn_reset,
.detect = nouveau_connector_detect,
.force = nouveau_connector_force,
@@ -1237,4 +1234,5 @@ nouveau_connector_funcs = {
.set_property = nouveau_connector_set_property,
.destroy = nouveau_connector_destroy,
+ .atomic_create_state = nouveau_conn_atomic_create_state,
.atomic_duplicate_state = nouveau_conn_atomic_duplicate_state,
.atomic_destroy_state = nouveau_conn_atomic_destroy_state,
@@ -1248,5 +1246,4 @@ static const struct drm_connector_funcs
nouveau_connector_funcs_lvds = {
.dpms = drm_helper_connector_dpms,
- .reset = nouveau_conn_reset,
.detect = nouveau_connector_detect_lvds,
.force = nouveau_connector_force,
@@ -1254,4 +1251,5 @@ nouveau_connector_funcs_lvds = {
.set_property = nouveau_connector_set_property,
.destroy = nouveau_connector_destroy,
+ .atomic_create_state = nouveau_conn_atomic_create_state,
.atomic_duplicate_state = nouveau_conn_atomic_duplicate_state,
.atomic_destroy_state = nouveau_conn_atomic_destroy_state,
@@ -1362,4 +1360,5 @@ nouveau_connector_create(struct drm_device *dev, int index)
struct nouveau_display *disp = nouveau_display(dev);
struct nouveau_connector *nv_connector = NULL;
+ struct drm_connector_state *conn_state;
struct drm_connector *connector;
struct drm_connector_list_iter conn_iter;
@@ -1522,5 +1521,11 @@ nouveau_connector_create(struct drm_device *dev, int index)
}
- connector->funcs->reset(connector);
+ conn_state = connector->funcs->atomic_create_state(connector);
+ if (IS_ERR(conn_state)) {
+ ret = PTR_ERR(conn_state);
+ goto drm_conn_err;
+ }
+ connector->state = conn_state;
+
nouveau_conn_attach_properties(connector);
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.h b/drivers/gpu/drm/nouveau/nouveau_connector.h
index eb292d2ba4bc..02f843648eb8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.h
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.h
@@ -217,5 +217,6 @@ extern int nouveau_hdmimhz;
void nouveau_conn_attach_properties(struct drm_connector *);
-void nouveau_conn_reset(struct drm_connector *);
+struct drm_connector_state *
+nouveau_conn_atomic_create_state(struct drm_connector *);
struct drm_connector_state *
nouveau_conn_atomic_duplicate_state(struct drm_connector *);
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 56/59] drm/nouveau: Convert to atomic_create_state
2026-10-22 12:31 ` Maxime Ripard
(?)
@ 2026-10-22 12:55 ` sashiko-bot
-1 siblings, 0 replies; 78+ messages in thread
From: sashiko-bot @ 2026-10-22 12:55 UTC (permalink / raw)
To: Maxime Ripard; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [Critical] drm/nouveau: invalid free via nouveau_conn_atomic_create_state() on pre-NV50
- [High] drm/nouveau: missing nvif teardown on error in nouveau_connector_create()
- [Medium] drm/nouveau: memory leak of mstc on error in nv50_mstc_new()
--
commit 37ea1f2bbde92fcd5731b31085bba035feef8a42
Author: Maxime Ripard <mripard@kernel.org>
drm/nouveau: Convert to atomic_create_state
This commit converts the nouveau connector implementation from using the
reset callback to using the atomic_create_state callback for initializing
connector state.
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index e91130f93db67..947d0ff4ba029 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
[ ... ]
> @@ -1281,7 +1282,13 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
>
> drm_connector_helper_add(&mstc->connector, &nv50_mstc_help);
>
> - mstc->connector.funcs->reset(&mstc->connector);
> + conn_state = mstc->connector.funcs->atomic_create_state(&mstc->connector);
> + if (IS_ERR(conn_state)) {
> + drm_connector_cleanup(&mstc->connector);
> + return PTR_ERR(conn_state);
> + }
[Severity: Medium]
Earlier in nv50_mstc_new(), mstc and *pmstc are allocated with
kzalloc_obj(*mstc), and the error path for drm_connector_dynamic_init()
frees *pmstc and resets it to NULL:
if (!(mstc = *pmstc = kzalloc_obj(*mstc)))
return -ENOMEM;
mstc->mstm = mstm;
mstc->port = port;
ret = drm_connector_dynamic_init(dev, &mstc->connector, &nv50_mstc,
DRM_MODE_CONNECTOR_DisplayPort, NULL);
if (ret) {
kfree(*pmstc);
*pmstc = NULL;
return ret;
}
When atomic_create_state() fails here, drm_connector_cleanup() only cleans
up the embedded drm_connector and zeroes mstc->connector, while the caller
nv50_mstm_add_connector() discards mstc on a non-zero return.
Does this error path leak mstc and leave a dangling pointer in *pmstc?
> + mstc->connector.state = conn_state;
> +
> nouveau_conn_attach_properties(&mstc->connector);
>
> drm_for_each_crtc(crtc, dev) {
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index cc3caf8de64b0..e4ab9849de4d4 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -242,21 +242,17 @@ nouveau_conn_atomic_duplicate_state(struct drm_connector *connector)
> return &asyc->state;
> }
>
> -void
> -nouveau_conn_reset(struct drm_connector *connector)
> +struct drm_connector_state *
> +nouveau_conn_atomic_create_state(struct drm_connector *connector)
> {
> struct nouveau_connector *nv_connector = nouveau_connector(connector);
> struct nouveau_conn_atom *asyc;
>
> if (drm_drv_uses_atomic_modeset(connector->dev)) {
> if (WARN_ON(!(asyc = kzalloc_obj(*asyc))))
> - return;
> + return ERR_PTR(-ENOMEM);
>
> - if (connector->state)
> - nouveau_conn_atomic_destroy_state(connector,
> - connector->state);
> -
> - __drm_atomic_helper_connector_reset(connector, &asyc->state);
> + __drm_atomic_helper_connector_state_init(&asyc->state, connector);
> } else {
> asyc = &nv_connector->properties_state;
> }
> @@ -278,6 +274,8 @@ nouveau_conn_reset(struct drm_connector *connector)
> break;
> }
> }
> +
> + return &asyc->state;
> }
[Severity: Critical]
On pre-nv50 display hardware (where disp->disp.object.oclass < NV50_DISP),
nv04_display_create() clears DRIVER_ATOMIC and uses
nouveau_mode_config_funcs without an atomic_commit callback, so
drm_drv_uses_atomic_modeset(connector->dev) is false.
Previously, nouveau_conn_reset() only called
__drm_atomic_helper_connector_reset() in the atomic branch, leaving
connector->state as NULL on pre-nv50 while initializing the embedded
nv_connector->properties_state in place.
With this change, nouveau_conn_atomic_create_state() returns
&nv_connector->properties_state.state, and nouveau_connector_create()
unconditionally assigns it to connector->state.
When nouveau_display_create() subsequently calls drm_mode_config_reset(),
drm_mode_config_connector_reset_with_create_state() sees the non-NULL
connector->state and passes it to nouveau_conn_atomic_destroy_state():
drivers/gpu/drm/nouveau/nouveau_connector.c:nouveau_conn_atomic_destroy_state() {
struct nouveau_conn_atom *asyc = nouveau_conn_atom(state);
__drm_atomic_helper_connector_destroy_state(&asyc->state);
kfree(asyc);
}
The same destruction happens in drm_connector_cleanup(), and having
connector->state non-NULL on a non-atomic driver also causes helpers such
as drm_connector_get_encoder() to inspect connector->state->best_encoder
instead of connector->encoder.
Won't returning &nv_connector->properties_state.state and assigning it to
connector->state on pre-nv50 hardware pass an interior pointer of
struct nouveau_connector to kfree() and break legacy encoder lookups?
[ ... ]
> @@ -1521,7 +1520,13 @@ nouveau_connector_create(struct drm_device *dev, int index)
> }
> }
>
> - connector->funcs->reset(connector);
> + conn_state = connector->funcs->atomic_create_state(connector);
> + if (IS_ERR(conn_state)) {
> + ret = PTR_ERR(conn_state);
> + goto drm_conn_err;
> + }
[Severity: High]
Before reaching atomic_create_state() in nouveau_connector_create(),
nv_connector->conn, nv_connector->hpd, and nv_connector->irq may already be
constructed via nvif_conn_ctor() and nvif_conn_event_ctor():
if (nvif_object_constructed(&nv_connector->conn.object)) {
ret = nvif_conn_event_ctor(&nv_connector->conn, "kmsHotplug",
nouveau_connector_hotplug,
NVIF_CONN_EVENT_V0_PLUG | NVIF_CONN_EVENT_V0_UNPLUG,
&nv_connector->hpd);
if (ret == 0)
connector->polled = DRM_CONNECTOR_POLL_HPD;
if (nv_connector->aux.transfer) {
ret = nvif_conn_event_ctor(&nv_connector->conn, "kmsDpIrq",
nouveau_connector_irq, NVIF_CONN_EVENT_V0_IRQ,
&nv_connector->irq);
if (ret) {
nvif_event_dtor(&nv_connector->hpd);
nvif_conn_dtor(&nv_connector->conn);
goto drm_conn_err;
}
}
}
However, the drm_conn_err label only cleans up connector and frees
nv_connector:
drm_conn_err:
drm_connector_cleanup(connector);
kfree(nv_connector);
return ERR_PTR(ret);
If atomic_create_state() fails and jumps to drm_conn_err without calling
nvif_event_dtor(&nv_connector->irq), nvif_event_dtor(&nv_connector->hpd),
and nvif_conn_dtor(&nv_connector->conn), can this leak those nvif objects
and leave active events referencing freed nv_connector memory?
> + connector->state = conn_state;
> +
> nouveau_conn_attach_properties(connector);
>
> /* Default scaling mode */
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-drm-no-more-connector-reset-v2-0-0b7e4e85b1e8@kernel.org?part=56
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 57/59] drm/tegra: Convert to atomic_create_state
2026-10-22 12:30 ` Maxime Ripard
` (57 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
-1 siblings, 0 replies; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard, Jonathan Hunter, Mikko Perttunen,
Thierry Reding, linux-tegra
The tegra DSI and SOR connector reset implementations create custom
state subclasses, but only initialize a pristine state without resetting
any hardware. This is equivalent to what atomic_create_state expects.
Convert to it.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: Mikko Perttunen <mperttunen@nvidia.com>
Cc: Thierry Reding <thierry.reding@kernel.org>
Cc: linux-tegra@vger.kernel.org
---
drivers/gpu/drm/tegra/dsi.c | 17 ++++++++---------
drivers/gpu/drm/tegra/sor.c | 13 +++++--------
2 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
index 7b595310e737..206405770071 100644
--- a/drivers/gpu/drm/tegra/dsi.c
+++ b/drivers/gpu/drm/tegra/dsi.c
@@ -786,17 +786,16 @@ static void tegra_dsi_soft_reset(struct tegra_dsi *dsi)
}
-static void tegra_dsi_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+tegra_dsi_connector_create_state(struct drm_connector *connector)
{
- struct tegra_dsi_state *state = kzalloc_obj(*state);
+ struct tegra_dsi_state *state;
+ state = kzalloc_obj(*state);
if (!state)
- return;
+ return ERR_PTR(-ENOMEM);
- if (connector->state) {
- __drm_atomic_helper_connector_destroy_state(connector->state);
- kfree(connector->state);
- }
+ __drm_atomic_helper_connector_state_init(&state->base, connector);
- __drm_atomic_helper_connector_reset(connector, &state->base);
+ return &state->base;
}
@@ -818,8 +817,8 @@ tegra_dsi_connector_duplicate_state(struct drm_connector *connector)
static const struct drm_connector_funcs tegra_dsi_connector_funcs = {
- .reset = tegra_dsi_connector_reset,
.detect = tegra_output_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy,
+ .atomic_create_state = tegra_dsi_connector_create_state,
.atomic_duplicate_state = tegra_dsi_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
index e384cbd0cbf7..16a5ecefbe4f 100644
--- a/drivers/gpu/drm/tegra/sor.c
+++ b/drivers/gpu/drm/tegra/sor.c
@@ -1721,5 +1721,5 @@ static void tegra_sor_early_unregister(struct drm_connector *connector)
}
-static void tegra_sor_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *tegra_sor_connector_create_state(struct drm_connector *connector)
{
struct tegra_sor_state *state;
@@ -1727,12 +1727,9 @@ static void tegra_sor_connector_reset(struct drm_connector *connector)
state = kzalloc_obj(*state);
if (!state)
- return;
+ return ERR_PTR(-ENOMEM);
- if (connector->state) {
- __drm_atomic_helper_connector_destroy_state(connector->state);
- kfree(connector->state);
- }
+ __drm_atomic_helper_connector_state_init(&state->base, connector);
- __drm_atomic_helper_connector_reset(connector, &state->base);
+ return &state->base;
}
@@ -1765,8 +1762,8 @@ tegra_sor_connector_duplicate_state(struct drm_connector *connector)
static const struct drm_connector_funcs tegra_sor_connector_funcs = {
- .reset = tegra_sor_connector_reset,
.detect = tegra_sor_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy,
+ .atomic_create_state = tegra_sor_connector_create_state,
.atomic_duplicate_state = tegra_sor_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* [PATCH v2 58/59] drm/connector: Remove __drm_atomic_helper_connector_reset()
2026-10-22 12:30 ` Maxime Ripard
` (58 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:48 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
All drivers implementing the connector reset hook using
__drm_atomic_helper_connector_reset() have been converted to
atomic_create_state.
Remove __drm_atomic_helper_connector_reset().
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 23 -----------------------
include/drm/drm_atomic_state_helper.h | 2 --
include/drm/drm_connector.h | 3 ---
3 files changed, 28 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 5efda28bb2b0..267f44330629 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -413,27 +413,4 @@ __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
EXPORT_SYMBOL(__drm_atomic_helper_connector_state_init);
-/**
- * __drm_atomic_helper_connector_reset - reset state on connector
- * @connector: drm connector
- * @conn_state: connector state to assign
- *
- * Initializes the newly allocated @conn_state and assigns it to
- * the &drm_connector->state pointer of @connector, usually required when
- * initializing the drivers or when called from the &drm_connector_funcs.reset
- * hook.
- *
- * This is useful for drivers that subclass the connector state.
- */
-void
-__drm_atomic_helper_connector_reset(struct drm_connector *connector,
- struct drm_connector_state *conn_state)
-{
- if (conn_state)
- __drm_atomic_helper_connector_state_init(conn_state, connector);
-
- connector->state = conn_state;
-}
-EXPORT_SYMBOL(__drm_atomic_helper_connector_reset);
-
/**
* drm_atomic_helper_connector_create_state - default &drm_connector_funcs.atomic_create_state hook for connectors
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 7bced7e9d860..1a822179f2ec 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -67,6 +67,4 @@ void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
void __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
struct drm_connector *connector);
-void __drm_atomic_helper_connector_reset(struct drm_connector *connector,
- struct drm_connector_state *conn_state);
struct drm_connector_state *
drm_atomic_helper_connector_create_state(struct drm_connector *connector);
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 8b52360339e0..a87cd13d0a45 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1665,7 +1665,4 @@ struct drm_connector_funcs {
* called by the core directly, only through drm_mode_config_reset().
* It's not a helper hook only for historical reasons.
- *
- * Atomic drivers can use __drm_atomic_helper_connector_reset() to reset
- * atomic state using this hook.
*/
void (*reset)(struct drm_connector *connector);
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 58/59] drm/connector: Remove __drm_atomic_helper_connector_reset()
2026-10-22 12:31 ` [PATCH v2 58/59] drm/connector: Remove __drm_atomic_helper_connector_reset() Maxime Ripard
@ 2026-10-22 12:48 ` sashiko-bot
0 siblings, 0 replies; 78+ messages in thread
From: sashiko-bot @ 2026-10-22 12:48 UTC (permalink / raw)
To: Maxime Ripard; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] drm: build failure from removing __drm_atomic_helper_connector_reset()
--
commit ec915c4081ebec2a7cd348c5409dae402f04f843
Author: Maxime Ripard <mripard@kernel.org>
drm/connector: Remove __drm_atomic_helper_connector_reset()
This commit removes the __drm_atomic_helper_connector_reset() helper
function, its prototype, and its documentation reference after converting
connector reset hooks to atomic_create_state.
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
> index 5efda28bb2b07..267f443306295 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -412,29 +412,6 @@ __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
> }
> EXPORT_SYMBOL(__drm_atomic_helper_connector_state_init);
>
> -/**
> - * __drm_atomic_helper_connector_reset - reset state on connector
> - * @connector: drm connector
> - * @conn_state: connector state to assign
> - *
> - * Initializes the newly allocated @conn_state and assigns it to
> - * the &drm_connector->state pointer of @connector, usually required when
> - * initializing the drivers or when called from the &drm_connector_funcs.reset
> - * hook.
> - *
> - * This is useful for drivers that subclass the connector state.
> - */
> -void
> -__drm_atomic_helper_connector_reset(struct drm_connector *connector,
> - struct drm_connector_state *conn_state)
> -{
> - if (conn_state)
> - __drm_atomic_helper_connector_state_init(conn_state, connector);
> -
> - connector->state = conn_state;
> -}
> -EXPORT_SYMBOL(__drm_atomic_helper_connector_reset);
[Severity: Medium]
Does removing __drm_atomic_helper_connector_reset() in
drivers/gpu/drm/drm_atomic_state_helper.c and its prototype in
include/drm/drm_atomic_state_helper.h cause a build regression when
CONFIG_DRM_MALI_DISPLAY, CONFIG_DRM_RCAR_WRITEBACK (under
CONFIG_DRM_RCAR_DU), or CONFIG_DRM_VMWGFX is enabled?
The commit message states that all drivers implementing the connector reset
hook using __drm_atomic_helper_connector_reset() have been converted to
atomic_create_state, but three in-tree drivers still call
__drm_atomic_helper_connector_reset() from their drm_connector_funcs.reset
callbacks.
In drivers/gpu/drm/arm/malidp_mw.c:malidp_mw_connector_reset():
if (mw_state)
__drm_atomic_helper_connector_reset(connector, &mw_state->base);
In drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c:rcar_du_wb_conn_reset():
state = kzalloc_obj(*state);
if (state == NULL)
return;
__drm_atomic_helper_connector_reset(connector, &state->state);
In drivers/gpu/drm/vmwgfx/vmwgfx_kms.c:vmw_du_connector_reset():
vcs = kzalloc_obj(*vcs);
if (!vcs) {
DRM_ERROR("Cannot allocate vmw_connector_state\n");
return;
}
__drm_atomic_helper_connector_reset(connector, &vcs->base);
None of these three drivers are converted in the subsequent patch in the
series, commit 86331e69eb719274bf362ebe2870d757866546bb ("drm/connector:
Remove reset").
Should malidp_mw_connector_reset(), rcar_du_wb_conn_reset(), and
vmw_du_connector_reset() be converted to atomic_create_state before
__drm_atomic_helper_connector_reset() is removed so that building those
drivers does not fail with implicit function declaration and undefined
symbol errors?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-drm-no-more-connector-reset-v2-0-0b7e4e85b1e8@kernel.org?part=58
^ permalink raw reply [flat|nested] 78+ messages in thread
* [PATCH v2 59/59] drm/connector: Remove reset
2026-10-22 12:30 ` Maxime Ripard
` (59 preceding siblings ...)
(?)
@ 2026-10-22 12:31 ` Maxime Ripard
2026-10-22 12:52 ` sashiko-bot
-1 siblings, 1 reply; 78+ messages in thread
From: Maxime Ripard @ 2026-10-22 12:31 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, Maxime Ripard
All the drivers that used to implement the reset hook have been
converted to use atomic_create_state instead.
Remove the reset hook from drm_connector_funcs, and the code calling
it in drm_mode_config_reset(), drmm_connector_hdmi_init() and
panel_bridge_attach().
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_connector.c | 8 --------
drivers/gpu/drm/drm_mode_config.c | 4 +---
drivers/gpu/drm/drm_panel.c | 2 --
include/drm/drm_connector.h | 9 ---------
4 files changed, 1 insertion(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index 893716a9e489..d66188521881 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -663,8 +663,4 @@ int drmm_connector_hdmi_init(struct drm_device *dev,
connector->state = state;
- } else if (connector->funcs->reset) {
- connector->funcs->reset(connector);
- if (!connector->state)
- return -ENOMEM;
}
@@ -771,8 +767,4 @@ int drmm_connector_hdmi_ini2(struct drm_device *dev,
connector->state = state;
- } else if (connector->funcs->reset) {
- connector->funcs->reset(connector);
- if (!connector->state)
- return -ENOMEM;
}
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 48a56f23dadb..c1e993a78702 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -316,7 +316,5 @@ void drm_mode_config_reset(struct drm_device *dev)
drm_connector_list_iter_begin(dev, &conn_iter);
drm_for_each_connector_iter(connector, &conn_iter) {
- if (connector->funcs->reset)
- connector->funcs->reset(connector);
- else if (connector->funcs->atomic_create_state)
+ if (connector->funcs->atomic_create_state)
drm_mode_config_connector_reset_with_create_state(connector);
}
diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
index 760f074f947e..c70f09a7e3e1 100644
--- a/drivers/gpu/drm/drm_panel.c
+++ b/drivers/gpu/drm/drm_panel.c
@@ -115,6 +115,4 @@ static int panel_bridge_attach(struct drm_bridge *bridge,
connector->state = conn_state;
- } else if (connector->funcs->reset) {
- connector->funcs->reset(connector);
}
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index a87cd13d0a45..f656ed8324d3 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1659,13 +1659,4 @@ struct drm_connector_funcs {
int (*dpms)(struct drm_connector *connector, int mode);
- /**
- * @reset:
- *
- * Reset connector hardware and software state to off. This function isn't
- * called by the core directly, only through drm_mode_config_reset().
- * It's not a helper hook only for historical reasons.
- */
- void (*reset)(struct drm_connector *connector);
-
/**
* @detect:
--
2.55.0
^ permalink raw reply related [flat|nested] 78+ messages in thread* Re: [PATCH v2 59/59] drm/connector: Remove reset
2026-10-22 12:31 ` [PATCH v2 59/59] drm/connector: Remove reset Maxime Ripard
@ 2026-10-22 12:52 ` sashiko-bot
0 siblings, 0 replies; 78+ messages in thread
From: sashiko-bot @ 2026-10-22 12:52 UTC (permalink / raw)
To: Maxime Ripard; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/connector: premature removal of reset hook breaks unconverted drivers
--
commit 86331e69eb719274bf362ebe2870d757866546bb
Author: Maxime Ripard <mripard@kernel.org>
drm/connector: Remove reset
This commit removes the reset callback from struct drm_connector_funcs and
drops the calls to it in drm_mode_config_reset(), drmm_connector_hdmi_init(),
drmm_connector_hdmi_ini2(), and panel_bridge_attach().
[ ... ]
> diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
> index 48a56f23dadbb..c1e993a78702e 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -315,9 +315,7 @@ void drm_mode_config_reset(struct drm_device *dev)
>
> drm_connector_list_iter_begin(dev, &conn_iter);
> drm_for_each_connector_iter(connector, &conn_iter) {
> - if (connector->funcs->reset)
> - connector->funcs->reset(connector);
> - else if (connector->funcs->atomic_create_state)
> + if (connector->funcs->atomic_create_state)
> drm_mode_config_connector_reset_with_create_state(connector);
> }
> drm_connector_list_iter_end(&conn_iter);
[ ... ]
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index a87cd13d0a45f..f656ed8324d37 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -1658,15 +1658,6 @@ struct drm_connector_funcs {
> */
> int (*dpms)(struct drm_connector *connector, int mode);
>
> - /**
> - * @reset:
> - *
> - * Reset connector hardware and software state to off. This function isn't
> - * called by the core directly, only through drm_mode_config_reset().
> - * It's not a helper hook only for historical reasons.
> - */
> - void (*reset)(struct drm_connector *connector);
> -
> /**
> * @detect:
> *
[Severity: High]
Are all in-tree users of struct drm_connector_funcs.reset converted to
atomic_create_state before removing this callback?
Removing reset from struct drm_connector_funcs in include/drm/drm_connector.h
and dropping the connector->funcs->reset(connector) call from
drm_mode_config_reset() in drivers/gpu/drm/drm_mode_config.c appears to break
the build for 26 struct drm_connector_funcs definitions across 25 files that
still initialize .reset and do not implement .atomic_create_state.
Specifically, several drivers still wire up custom reset callbacks:
drivers/gpu/drm/arm/malidp_mw.c:
static const struct drm_connector_funcs malidp_mw_connector_funcs = {
.reset = malidp_mw_connector_reset,
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c:
static const struct drm_connector_funcs rcar_du_wb_conn_funcs = {
.reset = rcar_du_wb_conn_reset,
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c (and vmw_sou_connector_funcs in
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c, vmw_stdu_connector_funcs in
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c):
static const struct drm_connector_funcs vmw_legacy_connector_funcs = {
.dpms = vmw_du_connector_dpms,
.detect = vmw_du_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = vmw_ldu_connector_destroy,
.reset = vmw_du_connector_reset,
In addition, the sysfb helper macro and several other drivers, bridges, and
KUnit tests still initialize .reset to drm_atomic_helper_connector_reset:
drivers/gpu/drm/sysfb/drm_sysfb_helper.h (used by simpledrm.c, efidrm.c,
ofdrm.c, vesadrm.c, and corebootdrm.c):
#define DRM_SYSFB_CONNECTOR_FUNCS \
.reset = drm_atomic_helper_connector_reset, \
.fill_modes = drm_helper_probe_single_connector_modes, \
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, \
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state
Other unconverted struct drm_connector_funcs definitions include:
- komeda_wb_connector_funcs in
drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
- lt8912_connector_funcs in drivers/gpu/drm/bridge/lontium-lt8912b.c
- ge_b850v3_lvds_connector_funcs in
drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
- sii902x_connector_funcs in drivers/gpu/drm/bridge/sii902x.c
- simple_bridge_con_funcs in drivers/gpu/drm/bridge/simple-bridge.c
- hv_drm_connector_funcs in drivers/gpu/drm/hyperv/hyperv_drm_modeset.c
- imx_tve_connector_funcs in drivers/gpu/drm/imx/ipuv3/imx-tve.c
- dpu_wb_conn_funcs in drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
- ssd130x_connector_funcs in drivers/gpu/drm/solomon/ssd130x.c
- lvds_conn_funcs in drivers/gpu/drm/stm/lvds.c
- appletbdrm_connector_funcs in drivers/gpu/drm/tiny/appletbdrm.c
- vc4_txp_connector_funcs in drivers/gpu/drm/vc4/vc4_txp.c
- vc4_dummy_connector_funcs in drivers/gpu/drm/vc4/tests/vc4_mock_output.c
- dm_test_audio_connector_funcs in
drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_audio_test.c (along
with amdgpu_dm_backlight_test.c, amdgpu_dm_crc_test.c,
amdgpu_dm_helpers_test.c, amdgpu_dm_irq_test.c, amdgpu_dm_mst_types_test.c,
and amdgpu_dm_wb_test.c)
Beyond failing to compile when any of these drivers or tests are enabled,
wouldn't drm_mode_config_reset() also skip state allocation for these
connectors because they do not implement atomic_create_state, leaving
connector->state uninitialized or unreset?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-drm-no-more-connector-reset-v2-0-0b7e4e85b1e8@kernel.org?part=59
^ permalink raw reply [flat|nested] 78+ messages in thread