Linux virtualization list
 help / color / mirror / Atom feed
* [PATCH RESEND 00/83] drm: Switch drivers to drm_mode_config_create_initial_state
@ 2026-11-05 15:29 Maxime Ripard
  2026-11-05 15:29 ` [PATCH RESEND 34/83] drm/qxl: Switch " Maxime Ripard
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Maxime Ripard @ 2026-11-05 15:29 UTC (permalink / raw)
  To: David Airlie, Maarten Lankhorst, Simona Vetter, Thomas Zimmermann
  Cc: Maxime Ripard, dri-devel, Janne Grunau, Sasha Finkelstein, asahi,
	Christian König, Alex Deucher, amd-gfx, Aun-Ali Zaidi,
	Liviu Dudau, Russell King, Andrew Jeffery, Joel Stanley,
	Dave Airlie, Jocelyn Falempe, Alexandre Belloni, Claudiu Beznea,
	Dharma Balasubiramani, Manikandan Muralidharan, Nicolas Ferre,
	Alim Akhtar, Inki Dae, Krzysztof Kozlowski, Kyungmin Park,
	Peter Griffin, Seung-Woo Kim, linux-samsung-soc, Alison Wang,
	Stefan Agner, Ruben Wauters, Tian Tao, Xinwei Kong, Yongbang Shi,
	John Stultz, Sumit Semwal, Xinliang Liu, Yongqin Liu, Dexuan Cui,
	Long Li, Saurabh Sengar, linux-hyperv, Fabio Estevam, Frank Li,
	Liu Ying, Pengutronix Kernel Team, Sascha Hauer, imx,
	Laurentiu Palcu, Lucas Stach, Philipp Zabel, Paul Cercueil,
	linux-mips, Anitha Chrisanthus, Paul Kocialkowski, Huacai Chen,
	Icenowy Zheng, Jianmin Lv, Mingcong Bai, Qianhai Wu, Xi Ruoyao,
	Linus Walleij, AngeloGioacchino Del Regno, Chun-Kuang Hu,
	Matthias Brugger, Jerome Brunet, Kevin Hilman,
	Martin Blumenstingl, linux-amlogic, Abhinav Kumar,
	Dmitry Baryshkov, Jessica Zhang, Marijn Suijten, Rob Clark,
	Sean Paul, freedreno, linux-arm-msm, Marek Vasut,
	Danilo Krummrich, Lyude Paul, nouveau, Tomi Valkeinen,
	Gerd Hoffmann, spice-devel, virtualization, Geert Uytterhoeven,
	Kieran Bingham, Laurent Pinchart, Magnus Damm, Tomi Valkeinen,
	linux-renesas-soc, Biju Das, Heiko Stübner, Sandy Huang,
	linux-rockchip, Marcus Folkesson, David Lechner, Iker Pedrosa,
	Javier Martinez Canillas, Baolin Wang, Chunyan Zhang, Orson Zhai,
	Alain Volmat, Raphael Gallais-Pou, Alexandre Torgue,
	Maxime Coquelin, Philippe Cornu, Raphael Gallais-Pou,
	Yannick Fertre, Chen-Yu Tsai, Samuel Holland, linux-sunxi,
	Jonathan Hunter, Mikko Perttunen, Thierry Reding, linux-tegra,
	Jyri Sarha, Alexey Brodkin, Hans de Goede, Kamlesh Gurudasani,
	Alex Lanzano, LiangCheng Wang, Maíra Canal, Dave Stevenson,
	Raspberry Pi Kernel Maintenance, Chia-I Wu, Dmitry Osipenko,
	Gurchetan Singh, Haneen Mohammed, Louis Chauvet, Melissa Wen,
	Broadcom internal kernel review list, Zack Rusin,
	Oleksandr Andrushchenko, Michal Simek, Aditya Garg, Andy Yan

drm_mode_config_reset() has a dual role: it creates the initial KMS
state at probe time, and resets hardware and software state during
suspend/resume cycles. However, the two roles need different
behaviors, notably for objects like drm_private_obj that must persist
across suspend/resume and are excluded from drm_mode_config_reset()
by design.

Previous series introduced drm_mode_config_create_initial_state() to
handle only the initial state creation at probe time, including
drm_private_obj. Unlike drm_mode_config_reset(), it returns an error
code, allowing drivers to properly handle allocation failures.

This series switches all drivers calling drm_mode_config_reset() at
probe time to drm_mode_config_create_initial_state(). The conversion
was done using a Coccinelle semantic patch.

This is part, and the final piece, of a larger transition to remove the
overloaded reset semantics from the KMS subsystem, following similar
series for planes, CRTCs, connectors, and bridges.

Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Maxime Ripard (83):
      drm/adp: Switch to drm_mode_config_create_initial_state
      drm/amdgpu: Switch to drm_mode_config_create_initial_state
      drm/appletbdrm: Switch to drm_mode_config_create_initial_state
      drm/komeda: Switch to drm_mode_config_create_initial_state
      drm/hdlcd: Switch to drm_mode_config_create_initial_state
      drm/malidp: Switch to drm_mode_config_create_initial_state
      drm/armada: Switch to drm_mode_config_create_initial_state
      drm/aspeed: Switch to drm_mode_config_create_initial_state
      drm/ast: Switch to drm_mode_config_create_initial_state
      drm/atmel-hlcdc: Switch to drm_mode_config_create_initial_state
      drm/exynos: Switch to drm_mode_config_create_initial_state
      drm/fsl-dcu: Switch to drm_mode_config_create_initial_state
      drm/gud: Switch to drm_mode_config_create_initial_state
      drm/hisilicon/hibmc: Switch to drm_mode_config_create_initial_state
      drm/hisilicon/kirin: Switch to drm_mode_config_create_initial_state
      drm/hyperv: Switch to drm_mode_config_create_initial_state
      drm/imx/dc: Switch to drm_mode_config_create_initial_state
      drm/imx/dcss: Switch to drm_mode_config_create_initial_state
      drm/imx/ipuv3: Switch to drm_mode_config_create_initial_state
      drm/ingenic: Switch to drm_mode_config_create_initial_state
      drm/kmb: Switch to drm_mode_config_create_initial_state
      drm/logicvc: Switch to drm_mode_config_create_initial_state
      drm/loongson: Switch to drm_mode_config_create_initial_state
      drm/mcde: Switch to drm_mode_config_create_initial_state
      drm/mediatek: Switch to drm_mode_config_create_initial_state
      drm/meson: Switch to drm_mode_config_create_initial_state
      drm/mgag200: Switch to drm_mode_config_create_initial_state
      drm/msm: Switch to drm_mode_config_create_initial_state
      drm/lcdif: Switch to drm_mode_config_create_initial_state
      drm/mxsfb: Switch to drm_mode_config_create_initial_state
      drm/nouveau: Switch to drm_mode_config_create_initial_state
      drm/omap: Switch to drm_mode_config_create_initial_state
      drm/pl111: Switch to drm_mode_config_create_initial_state
      drm/qxl: Switch to drm_mode_config_create_initial_state
      drm/rcar-du: Switch to drm_mode_config_create_initial_state
      drm/rz-du: Switch to drm_mode_config_create_initial_state
      drm/shmobile: Switch to drm_mode_config_create_initial_state
      drm/rockchip: Switch to drm_mode_config_create_initial_state
      drm/st7571: Switch to drm_mode_config_create_initial_state
      drm/st7586: Switch to drm_mode_config_create_initial_state
      drm/st7735r: Switch to drm_mode_config_create_initial_state
      drm/st7920: Switch to drm_mode_config_create_initial_state
      drm/ssd130x: Switch to drm_mode_config_create_initial_state
      drm/sprd: Switch to drm_mode_config_create_initial_state
      drm/sti: Switch to drm_mode_config_create_initial_state
      drm/stm: Switch to drm_mode_config_create_initial_state
      drm/sun4i: Switch to drm_mode_config_create_initial_state
      drm/corebootdrm: Switch to drm_mode_config_create_initial_state
      drm/efidrm: Switch to drm_mode_config_create_initial_state
      drm/ofdrm: Switch to drm_mode_config_create_initial_state
      drm/simpledrm: Switch to drm_mode_config_create_initial_state
      drm/vesadrm: Switch to drm_mode_config_create_initial_state
      drm/tegra: Switch to drm_mode_config_create_initial_state
      drm/tests: drm_atomic_state_test: Switch to drm_mode_config_create_initial_state
      drm/tests: drm_atomic_test: Switch to drm_mode_config_create_initial_state
      drm/tests: drm_bridge_test: Switch to drm_mode_config_create_initial_state
      drm/tests: drm_hdmi_state_helper_test: Switch to drm_mode_config_create_initial_state
      drm/tidss: Switch to drm_mode_config_create_initial_state
      drm/tilcdc: Switch to drm_mode_config_create_initial_state
      drm/arcpgu: Switch to drm_mode_config_create_initial_state
      drm/bochs: Switch to drm_mode_config_create_initial_state
      drm/cirrus-qemu: Switch to drm_mode_config_create_initial_state
      drm/gm12u320: Switch to drm_mode_config_create_initial_state
      drm/hx8357d: Switch to drm_mode_config_create_initial_state
      drm/ili9163: Switch to drm_mode_config_create_initial_state
      drm/ili9225: Switch to drm_mode_config_create_initial_state
      drm/ili9341: Switch to drm_mode_config_create_initial_state
      drm/ili9486: Switch to drm_mode_config_create_initial_state
      drm/mi0283qt: Switch to drm_mode_config_create_initial_state
      drm/panel-mipi-dbi: Switch to drm_mode_config_create_initial_state
      drm/pixpaper: Switch to drm_mode_config_create_initial_state
      drm/repaper: Switch to drm_mode_config_create_initial_state
      drm/sharp-memory: Switch to drm_mode_config_create_initial_state
      drm/tve200: Switch to drm_mode_config_create_initial_state
      drm/udl: Switch to drm_mode_config_create_initial_state
      drm/vboxvideo: Switch to drm_mode_config_create_initial_state
      drm/vc4: Switch to drm_mode_config_create_initial_state
      drm/verisilicon: Switch to drm_mode_config_create_initial_state
      drm/virtio: Switch to drm_mode_config_create_initial_state
      drm/vkms: Switch to drm_mode_config_create_initial_state
      drm/vmwgfx: Switch to drm_mode_config_create_initial_state
      drm/xen: Switch to drm_mode_config_create_initial_state
      drm/xlnx: Switch to drm_mode_config_create_initial_state

 drivers/gpu/drm/adp/adp_drv.c                                |  4 +---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c                     |  4 +++-
 .../amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c   |  3 ++-
 .../amd/display/amdgpu_dm/tests/amdgpu_dm_mst_types_test.c   |  4 +++-
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c              |  4 +++-
 drivers/gpu/drm/arm/hdlcd_drv.c                              |  4 +++-
 drivers/gpu/drm/arm/malidp_drv.c                             |  4 +++-
 drivers/gpu/drm/armada/armada_drv.c                          |  4 +++-
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c                      |  4 +---
 drivers/gpu/drm/ast/ast_mode.c                               |  4 +++-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c                 |  4 +++-
 drivers/gpu/drm/exynos/exynos_drm_drv.c                      |  4 +++-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c                    |  4 +++-
 drivers/gpu/drm/gud/gud_drv.c                                |  4 +++-
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c              |  6 ++++--
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c              |  6 ++++--
 drivers/gpu/drm/hyperv/hyperv_drm_modeset.c                  |  4 +---
 drivers/gpu/drm/imx/dc/dc-kms.c                              |  4 +++-
 drivers/gpu/drm/imx/dcss/dcss-kms.c                          |  4 +++-
 drivers/gpu/drm/imx/ipuv3/imx-drm-core.c                     |  4 +++-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c                    |  4 +++-
 drivers/gpu/drm/kmb/kmb_drv.c                                |  3 +--
 drivers/gpu/drm/logicvc/logicvc_mode.c                       |  4 +++-
 drivers/gpu/drm/loongson/lsdc_drv.c                          |  4 +++-
 drivers/gpu/drm/mcde/mcde_drv.c                              |  4 +++-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c                       |  8 +++++++-
 drivers/gpu/drm/meson/meson_drv.c                            |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200.c                       |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200eh.c                     |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200eh3.c                    |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200eh5.c                    |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200er.c                     |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200ev.c                     |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200ew3.c                    |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200se.c                     |  4 +++-
 drivers/gpu/drm/mgag200/mgag200_g200wb.c                     |  4 +++-
 drivers/gpu/drm/msm/msm_kms.c                                |  4 +++-
 drivers/gpu/drm/mxsfb/lcdif_drv.c                            |  4 +++-
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                            |  4 +++-
 drivers/gpu/drm/nouveau/nouveau_display.c                    |  4 +++-
 drivers/gpu/drm/omapdrm/omap_drv.c                           |  4 +++-
 drivers/gpu/drm/pl111/pl111_drv.c                            |  4 +++-
 drivers/gpu/drm/qxl/qxl_display.c                            |  3 +--
 drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c                |  4 +++-
 drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c                 |  4 +++-
 drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c             |  4 +++-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c                  |  4 +++-
 drivers/gpu/drm/sitronix/st7571.c                            |  4 +++-
 drivers/gpu/drm/sitronix/st7586.c                            |  4 +++-
 drivers/gpu/drm/sitronix/st7735r.c                           |  4 +++-
 drivers/gpu/drm/sitronix/st7920.c                            |  4 +---
 drivers/gpu/drm/solomon/ssd130x.c                            |  4 +---
 drivers/gpu/drm/sprd/sprd_drm.c                              |  6 ++++--
 drivers/gpu/drm/sti/sti_drv.c                                |  6 +++++-
 drivers/gpu/drm/stm/drv.c                                    |  4 +++-
 drivers/gpu/drm/sun4i/sun4i_framebuffer.c                    |  4 +++-
 drivers/gpu/drm/sysfb/corebootdrm.c                          |  4 +++-
 drivers/gpu/drm/sysfb/efidrm.c                               |  4 +++-
 drivers/gpu/drm/sysfb/ofdrm.c                                |  4 +++-
 drivers/gpu/drm/sysfb/simpledrm.c                            |  4 +++-
 drivers/gpu/drm/sysfb/vesadrm.c                              |  4 +++-
 drivers/gpu/drm/tegra/drm.c                                  |  4 +++-
 drivers/gpu/drm/tests/drm_atomic_commit_test.c               |  4 +++-
 drivers/gpu/drm/tests/drm_atomic_test.c                      |  4 +++-
 drivers/gpu/drm/tests/drm_bridge_test.c                      | 12 +++++++++---
 drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c           |  4 +++-
 drivers/gpu/drm/tidss/tidss_drv.c                            |  6 +++++-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c                          |  4 +++-
 drivers/gpu/drm/tiny/appletbdrm.c                            |  4 +---
 drivers/gpu/drm/tiny/arcpgu.c                                |  4 +++-
 drivers/gpu/drm/tiny/bochs.c                                 |  4 +---
 drivers/gpu/drm/tiny/cirrus-qemu.c                           |  4 +++-
 drivers/gpu/drm/tiny/gm12u320.c                              |  4 +++-
 drivers/gpu/drm/tiny/hx8357d.c                               |  4 +++-
 drivers/gpu/drm/tiny/ili9163.c                               |  4 +++-
 drivers/gpu/drm/tiny/ili9225.c                               |  4 +++-
 drivers/gpu/drm/tiny/ili9341.c                               |  4 +++-
 drivers/gpu/drm/tiny/ili9486.c                               |  4 +++-
 drivers/gpu/drm/tiny/mi0283qt.c                              |  4 +++-
 drivers/gpu/drm/tiny/panel-mipi-dbi.c                        |  4 +++-
 drivers/gpu/drm/tiny/pixpaper.c                              |  4 +++-
 drivers/gpu/drm/tiny/repaper.c                               |  4 +++-
 drivers/gpu/drm/tiny/sharp-memory.c                          |  4 +++-
 drivers/gpu/drm/tve200/tve200_drv.c                          |  4 +++-
 drivers/gpu/drm/udl/udl_modeset.c                            |  4 +++-
 drivers/gpu/drm/vboxvideo/vbox_mode.c                        |  5 ++++-
 drivers/gpu/drm/vc4/vc4_kms.c                                |  4 +++-
 drivers/gpu/drm/verisilicon/vs_drm.c                         |  4 +++-
 drivers/gpu/drm/virtio/virtgpu_display.c                     |  3 +--
 drivers/gpu/drm/vkms/vkms_output.c                           |  4 +---
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c                          |  4 +++-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c                         |  4 +---
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c                         |  4 +---
 drivers/gpu/drm/xen/xen_drm_front_kms.c                      |  4 +++-
 drivers/gpu/drm/xlnx/zynqmp_kms.c                            |  6 ++++--
 95 files changed, 277 insertions(+), 124 deletions(-)
---
base-commit: d2a8cee91bfa8616f713c7c8f539a81e8e3554ea
change-id: 20260712-drm-no-more-config-reset-1ea89f56693d

Best regards,
-----BEGIN PGP SIGNATURE-----

iJUEABMJAB0WIQTkHFbLp4ejekA/qfgnX84Zoj2+dgUCauyPHAAKCRAnX84Zoj2+
dkwsAX9NFbbJHCN9xg2CeHNoUE2b74hoQ5+vO2GWUoHj4SnPtC+G3wjjcqEZiRKZ
xMEy+OMBgLIpXnrk4sqLj7r+OWFunhZwYsLromcY/UpASSNAT98Hro2QnIUo8S4f
xStpohEISg==
=9Kfg
-----END PGP SIGNATURE-----
-- 
Maxime Ripard <mripard@kernel.org>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH RESEND 34/83] drm/qxl: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:29 [PATCH RESEND 00/83] drm: Switch drivers to drm_mode_config_create_initial_state Maxime Ripard
@ 2026-11-05 15:29 ` Maxime Ripard
  2026-11-05 19:32   ` sashiko-bot
  2026-11-05 15:30 ` [PATCH RESEND 61/83] drm/bochs: " Maxime Ripard
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2026-11-05 15:29 UTC (permalink / raw)
  To: David Airlie, Maarten Lankhorst, Simona Vetter, Thomas Zimmermann
  Cc: Maxime Ripard, dri-devel, Dave Airlie, Gerd Hoffmann, spice-devel,
	virtualization

drm_mode_config_reset() has a dual role: it creates the initial KMS
state at probe time, and resets hardware and software state during
suspend/resume cycles.

Since the two roles need different behaviors (notably for objects like
drm_private_obj that must persist across suspend/resume),
drm_mode_config_create_initial_state() was introduced to handle only
the initial state creation at probe time.

Switch to drm_mode_config_create_initial_state().

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 | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 204c47d61373..7f719e200d31 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -1313,6 +1313,5 @@ int qxl_modeset_init(struct qxl_device *qdev)
 		return ret;
 
-	drm_mode_config_reset(&qdev->ddev);
-	return 0;
+	return drm_mode_config_create_initial_state(&qdev->ddev);
 }
 

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH RESEND 61/83] drm/bochs: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:29 [PATCH RESEND 00/83] drm: Switch drivers to drm_mode_config_create_initial_state Maxime Ripard
  2026-11-05 15:29 ` [PATCH RESEND 34/83] drm/qxl: Switch " Maxime Ripard
@ 2026-11-05 15:30 ` Maxime Ripard
  2026-11-05 21:25   ` sashiko-bot
  2026-11-05 15:30 ` [PATCH RESEND 62/83] drm/cirrus-qemu: " Maxime Ripard
  2026-11-05 15:30 ` [PATCH RESEND 79/83] drm/virtio: " Maxime Ripard
  3 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2026-11-05 15:30 UTC (permalink / raw)
  To: David Airlie, Maarten Lankhorst, Simona Vetter, Thomas Zimmermann
  Cc: Maxime Ripard, dri-devel, Gerd Hoffmann, virtualization

drm_mode_config_reset() has a dual role: it creates the initial KMS
state at probe time, and resets hardware and software state during
suspend/resume cycles.

Since the two roles need different behaviors (notably for objects like
drm_private_obj that must persist across suspend/resume),
drm_mode_config_create_initial_state() was introduced to handle only
the initial state creation at probe time.

Switch to drm_mode_config_create_initial_state().

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 | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 771d59b92f67..c24adbcb77a3 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -684,7 +684,5 @@ static int bochs_kms_init(struct bochs_device *bochs)
 		return ret;
 
-	drm_mode_config_reset(dev);
-
-	return 0;
+	return drm_mode_config_create_initial_state(dev);
 }
 

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH RESEND 62/83] drm/cirrus-qemu: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:29 [PATCH RESEND 00/83] drm: Switch drivers to drm_mode_config_create_initial_state Maxime Ripard
  2026-11-05 15:29 ` [PATCH RESEND 34/83] drm/qxl: Switch " Maxime Ripard
  2026-11-05 15:30 ` [PATCH RESEND 61/83] drm/bochs: " Maxime Ripard
@ 2026-11-05 15:30 ` Maxime Ripard
  2026-11-05 21:26   ` sashiko-bot
  2026-11-05 15:30 ` [PATCH RESEND 79/83] drm/virtio: " Maxime Ripard
  3 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2026-11-05 15:30 UTC (permalink / raw)
  To: David Airlie, Maarten Lankhorst, Simona Vetter, Thomas Zimmermann
  Cc: Maxime Ripard, dri-devel, Dave Airlie, Gerd Hoffmann,
	virtualization

drm_mode_config_reset() has a dual role: it creates the initial KMS
state at probe time, and resets hardware and software state during
suspend/resume cycles.

Since the two roles need different behaviors (notably for objects like
drm_private_obj that must persist across suspend/resume),
drm_mode_config_create_initial_state() was introduced to handle only
the initial state creation at probe time.

Switch to drm_mode_config_create_initial_state().

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 | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/tiny/cirrus-qemu.c b/drivers/gpu/drm/tiny/cirrus-qemu.c
index 9e3051b9c3f7..98664f573ff8 100644
--- a/drivers/gpu/drm/tiny/cirrus-qemu.c
+++ b/drivers/gpu/drm/tiny/cirrus-qemu.c
@@ -624,5 +624,7 @@ static int cirrus_pci_probe(struct pci_dev *pdev,
 		return ret;
 
-	drm_mode_config_reset(dev);
+	ret = drm_mode_config_create_initial_state(dev);
+	if (ret)
+		return ret;
 
 	pci_set_drvdata(pdev, dev);

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH RESEND 79/83] drm/virtio: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:29 [PATCH RESEND 00/83] drm: Switch drivers to drm_mode_config_create_initial_state Maxime Ripard
                   ` (2 preceding siblings ...)
  2026-11-05 15:30 ` [PATCH RESEND 62/83] drm/cirrus-qemu: " Maxime Ripard
@ 2026-11-05 15:30 ` Maxime Ripard
  2026-11-05 22:14   ` sashiko-bot
  3 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2026-11-05 15:30 UTC (permalink / raw)
  To: David Airlie, Maarten Lankhorst, Simona Vetter, Thomas Zimmermann
  Cc: Maxime Ripard, dri-devel, Chia-I Wu, David Airlie,
	Dmitry Osipenko, Gerd Hoffmann, Gurchetan Singh, virtualization

drm_mode_config_reset() has a dual role: it creates the initial KMS
state at probe time, and resets hardware and software state during
suspend/resume cycles.

Since the two roles need different behaviors (notably for objects like
drm_private_obj that must persist across suspend/resume),
drm_mode_config_create_initial_state() was introduced to handle only
the initial state creation at probe time.

Switch to drm_mode_config_create_initial_state().

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 | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index f0ed9bd27a91..dfc3aed03b8e 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -397,6 +397,5 @@ int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev)
 		return ret;
 
-	drm_mode_config_reset(vgdev->ddev);
-	return 0;
+	return drm_mode_config_create_initial_state(vgdev->ddev);
 }
 

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH RESEND 34/83] drm/qxl: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:29 ` [PATCH RESEND 34/83] drm/qxl: Switch " Maxime Ripard
@ 2026-11-05 19:32   ` sashiko-bot
  0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-11-05 19:32 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: dri-devel, virtualization, Michael S. Tsirkin, Eugenio Perez

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/qxl: missing monitors object cleanup and UAF in qxl_modeset_init()
--

commit c9a17dafeda120436479a0975b3829acefce4188
Author: Maxime Ripard <mripard@kernel.org>

drm/qxl: Switch to drm_mode_config_create_initial_state

This commit replaces drm_mode_config_reset() with
drm_mode_config_create_initial_state() in qxl_modeset_init() to handle initial
KMS state creation at probe time.

> diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
> index 204c47d613732..7f719e200d317 100644
> --- a/drivers/gpu/drm/qxl/qxl_display.c
> +++ b/drivers/gpu/drm/qxl/qxl_display.c
> @@ -1312,8 +1312,7 @@ int qxl_modeset_init(struct qxl_device *qdev)
>  	if (ret)
>  		return ret;
>  
> -	drm_mode_config_reset(&qdev->ddev);
> -	return 0;
> +	return drm_mode_config_create_initial_state(&qdev->ddev);
>  }

[Severity: High]
If drm_mode_config_create_initial_state() fails and returns an error here, can
this cause a use-after-free of qdev->monitors_config_bo and an unmapped MMIO
write to qdev->ram_header->monitors_config during probe teardown?

Earlier in qxl_modeset_init(), qxl_create_monitors_object() allocates, pins,
and vmaps qdev->monitors_config_bo, sets qdev->ram_header->monitors_config,
and allocates qdev->dumb_heads.

When qxl_modeset_init() returns an error to qxl_pci_probe(), the error path
jumps past qxl_modeset_fini() directly to the unload label:

drivers/gpu/drm/qxl/qxl_drv.c:qxl_pci_probe() {
	...
	ret = qxl_modeset_init(qdev);
	if (ret)
		goto unload;
	...
poll_fini:
	drm_kms_helper_poll_fini(&qdev->ddev);
	qxl_modeset_fini(qdev);
unload:
	qxl_device_fini(qdev);
}

In qxl_device_fini(), qxl_gem_fini() -> qxl_bo_force_delete() force-frees
qdev->monitors_config_bo while it is still pinned and vmapped (triggering
WARN_ON_ONCE(bo->map_count > 0) in qxl_ttm_bo_destroy() and leaving the
qdev->monitors_config_bo pointer non-NULL), and iounmap() unmaps
qdev->ram_header.

When qxl_pci_probe() then returns the error code, devres cleanup for
devm_drm_dev_alloc() runs qxl_drm_release() -> qxl_modeset_fini() ->
qxl_destroy_monitors_object():

drivers/gpu/drm/qxl/qxl_display.c:qxl_destroy_monitors_object() {
	if (!qdev->monitors_config_bo)
		return 0;
	...
	qdev->ram_header->monitors_config = 0;

	ret = qxl_bo_vunmap_and_unpin(qdev->monitors_config_bo);
	if (ret)
		return ret;

	qxl_bo_unref(&qdev->monitors_config_bo);
	return 0;
}

Because qdev->monitors_config_bo is still non-NULL, should qxl_modeset_init()
call qxl_destroy_monitors_object(qdev) on failure before returning?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261105-drm-no-more-config-reset-v1-0-1f58d1e33380@kernel.org?part=34

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH RESEND 61/83] drm/bochs: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:30 ` [PATCH RESEND 61/83] drm/bochs: " Maxime Ripard
@ 2026-11-05 21:25   ` sashiko-bot
  0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-11-05 21:25 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: virtualization, Michael S. Tsirkin, Eugenio Perez

> drm_mode_config_reset() has a dual role: it creates the initial KMS
> state at probe time, and resets hardware and software state during
> suspend/resume cycles.
> 
> Since the two roles need different behaviors (notably for objects like
> drm_private_obj that must persist across suspend/resume),
> drm_mode_config_create_initial_state() was introduced to handle only
> the initial state creation at probe time.
> 
> Switch to drm_mode_config_create_initial_state().
> 
> Signed-off-by: Maxime Ripard <mripard@kernel.org>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261105-drm-no-more-config-reset-v1-0-1f58d1e33380@kernel.org?part=61


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH RESEND 62/83] drm/cirrus-qemu: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:30 ` [PATCH RESEND 62/83] drm/cirrus-qemu: " Maxime Ripard
@ 2026-11-05 21:26   ` sashiko-bot
  0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-11-05 21:26 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: virtualization, Michael S. Tsirkin, Eugenio Perez

> drm_mode_config_reset() has a dual role: it creates the initial KMS
> state at probe time, and resets hardware and software state during
> suspend/resume cycles.
> 
> Since the two roles need different behaviors (notably for objects like
> drm_private_obj that must persist across suspend/resume),
> drm_mode_config_create_initial_state() was introduced to handle only
> the initial state creation at probe time.
> 
> Switch to drm_mode_config_create_initial_state().
> 
> Signed-off-by: Maxime Ripard <mripard@kernel.org>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261105-drm-no-more-config-reset-v1-0-1f58d1e33380@kernel.org?part=62


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH RESEND 79/83] drm/virtio: Switch to drm_mode_config_create_initial_state
  2026-11-05 15:30 ` [PATCH RESEND 79/83] drm/virtio: " Maxime Ripard
@ 2026-11-05 22:14   ` sashiko-bot
  0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-11-05 22:14 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: virtualization, Michael S. Tsirkin, Eugenio Perez

> drm_mode_config_reset() has a dual role: it creates the initial KMS
> state at probe time, and resets hardware and software state during
> suspend/resume cycles.
> 
> Since the two roles need different behaviors (notably for objects like
> drm_private_obj that must persist across suspend/resume),
> drm_mode_config_create_initial_state() was introduced to handle only
> the initial state creation at probe time.
> 
> Switch to drm_mode_config_create_initial_state().
> 
> Signed-off-by: Maxime Ripard <mripard@kernel.org>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261105-drm-no-more-config-reset-v1-0-1f58d1e33380@kernel.org?part=79


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-11-05 22:14 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-05 15:29 [PATCH RESEND 00/83] drm: Switch drivers to drm_mode_config_create_initial_state Maxime Ripard
2026-11-05 15:29 ` [PATCH RESEND 34/83] drm/qxl: Switch " Maxime Ripard
2026-11-05 19:32   ` sashiko-bot
2026-11-05 15:30 ` [PATCH RESEND 61/83] drm/bochs: " Maxime Ripard
2026-11-05 21:25   ` sashiko-bot
2026-11-05 15:30 ` [PATCH RESEND 62/83] drm/cirrus-qemu: " Maxime Ripard
2026-11-05 21:26   ` sashiko-bot
2026-11-05 15:30 ` [PATCH RESEND 79/83] drm/virtio: " Maxime Ripard
2026-11-05 22:14   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox