drm/radeon: Do not hold console lock while suspending clients
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 15 Jul 2025 09:50:53 +0000 (11:50 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 16 Jul 2025 20:48:24 +0000 (16:48 -0400)
The radeon driver holds the console lock while suspending in-kernel
DRM clients. This creates a circular dependency with the client-list
mutex, which is supposed to be acquired first. Reported when combining
radeon with another DRM driver.

Therefore, do not take the console lock in radeon, but let the fbdev
DRM client acquire the lock when needed. This is what all other DRM
drivers so.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reported-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Closes: https://lore.kernel.org/dri-devel/0a087cfd-bd4c-48f1-aa2f-4a3b12593935@oss.qualcomm.com/
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 612ec7c69d04cb58beb1332c2806da9f2f47a3ae)

drivers/gpu/drm/radeon/radeon_device.c

index bbd39348a7aba18e0492790b10c9207958e17b11..6f50cfdfe5a2ee72f1a533d24c919b45724bfd46 100644 (file)
@@ -1635,11 +1635,9 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,
                pci_set_power_state(pdev, PCI_D3hot);
        }
 
-       if (notify_clients) {
-               console_lock();
-               drm_client_dev_suspend(dev, true);
-               console_unlock();
-       }
+       if (notify_clients)
+               drm_client_dev_suspend(dev, false);
+
        return 0;
 }