* [PATCH] drm/qxl: Fix missing KMS poll cleanup
@ 2026-04-24 11:25 Myeonghun Pak
2026-04-27 8:46 ` Thomas Zimmermann
0 siblings, 1 reply; 2+ messages in thread
From: Myeonghun Pak @ 2026-04-24 11:25 UTC (permalink / raw)
To: Dave Airlie, Gerd Hoffmann
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, virtualization, spice-devel, dri-devel,
linux-kernel, Myeonghun Pak
drm_kms_helper_poll_init() initializes the output polling work and
enables polling for the DRM device. qxl enables polling before calling
drm_dev_register(), but the drm_dev_register() failure path tears down
the modeset and device state without disabling the polling helper.
The remove path also unregisters and shuts down the DRM device without
first disabling the polling helper. Add matching drm_kms_helper_poll_fini()
calls in both paths so the delayed polling work is cancelled before qxl
tears down the associated modeset/device state.
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
drivers/gpu/drm/qxl/qxl_drv.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
index 2bbb1168a3..1e6a2392d7 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.c
+++ b/drivers/gpu/drm/qxl/qxl_drv.c
@@ -118,12 +118,13 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
/* Complete initialization. */
ret = drm_dev_register(&qdev->ddev, ent->driver_data);
if (ret)
- goto modeset_cleanup;
+ goto poll_fini;
drm_client_setup(&qdev->ddev, NULL);
return 0;
-modeset_cleanup:
+poll_fini:
+ drm_kms_helper_poll_fini(&qdev->ddev);
qxl_modeset_fini(qdev);
unload:
qxl_device_fini(qdev);
@@ -154,6 +155,7 @@ qxl_pci_remove(struct pci_dev *pdev)
{
struct drm_device *dev = pci_get_drvdata(pdev);
+ drm_kms_helper_poll_fini(dev);
drm_dev_unregister(dev);
drm_atomic_helper_shutdown(dev);
if (pci_is_vga(pdev) && pdev->revision < 5)
--
2.50.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] drm/qxl: Fix missing KMS poll cleanup
2026-04-24 11:25 [PATCH] drm/qxl: Fix missing KMS poll cleanup Myeonghun Pak
@ 2026-04-27 8:46 ` Thomas Zimmermann
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Zimmermann @ 2026-04-27 8:46 UTC (permalink / raw)
To: Myeonghun Pak, Dave Airlie, Gerd Hoffmann
Cc: Maarten Lankhorst, Maxime Ripard, David Airlie, Simona Vetter,
virtualization, spice-devel, dri-devel, linux-kernel
Thanks for your patch.
Am 24.04.26 um 13:25 schrieb Myeonghun Pak:
> drm_kms_helper_poll_init() initializes the output polling work and
> enables polling for the DRM device. qxl enables polling before calling
> drm_dev_register(), but the drm_dev_register() failure path tears down
> the modeset and device state without disabling the polling helper.
>
> The remove path also unregisters and shuts down the DRM device without
> first disabling the polling helper. Add matching drm_kms_helper_poll_fini()
> calls in both paths so the delayed polling work is cancelled before qxl
> tears down the associated modeset/device state.
>
> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 5ff91e442652 ("qxl: use drm helper hotplug support")
Cc: <stable@vger.kernel.org> # v3.11+
> ---
> drivers/gpu/drm/qxl/qxl_drv.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
> index 2bbb1168a3..1e6a2392d7 100644
> --- a/drivers/gpu/drm/qxl/qxl_drv.c
> +++ b/drivers/gpu/drm/qxl/qxl_drv.c
> @@ -118,12 +118,13 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> /* Complete initialization. */
> ret = drm_dev_register(&qdev->ddev, ent->driver_data);
> if (ret)
> - goto modeset_cleanup;
> + goto poll_fini;
>
> drm_client_setup(&qdev->ddev, NULL);
> return 0;
>
> -modeset_cleanup:
> +poll_fini:
> + drm_kms_helper_poll_fini(&qdev->ddev);
> qxl_modeset_fini(qdev);
> unload:
> qxl_device_fini(qdev);
> @@ -154,6 +155,7 @@ qxl_pci_remove(struct pci_dev *pdev)
> {
> struct drm_device *dev = pci_get_drvdata(pdev);
>
> + drm_kms_helper_poll_fini(dev);
> drm_dev_unregister(dev);
> drm_atomic_helper_shutdown(dev);
> if (pci_is_vga(pdev) && pdev->revision < 5)
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-27 8:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-24 11:25 [PATCH] drm/qxl: Fix missing KMS poll cleanup Myeonghun Pak
2026-04-27 8:46 ` Thomas Zimmermann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox