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 <[email protected]>
Reported-by: Jeff Johnson <[email protected]>
Closes: 
https://lore.kernel.org/dri-devel/[email protected]/
Suggested-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/radeon/radeon_device.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_device.c 
b/drivers/gpu/drm/radeon/radeon_device.c
index bbd39348a7ab..6f50cfdfe5a2 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -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;
 }
 
-- 
2.50.0

Reply via email to