[3.13.y.z extended stable] Patch "drm/radeon/px: fix module unload" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Thu Oct 9 20:51:37 UTC 2014

This is a note to let you know that I have just added a patch titled

    drm/radeon/px: fix module unload

to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree 
which can be found at:


This patch is scheduled to be released in version

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.13.y.z tree, see



>From 81ef2f8cdc067ae981aaec9e400e2ca9276d3fb9 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher at amd.com>
Date: Fri, 12 Sep 2014 18:00:53 -0400
Subject: drm/radeon/px: fix module unload
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

commit 2e97140dd58cab8772bf77d73eabda213e45202d upstream.

Use the new vga_switcheroo_fini_domain_pm_ops function
to unregister the pm ops.

Based on a patch from:
Pali Rohár <pali.rohar at gmail.com>


Reviewed-by: Ben Skeggs <bskeggs at redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Signed-off-by: Pali Rohár <pali.rohar at gmail.com>
Cc: Ben Skeggs <bskeggs at redhat.com>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
 drivers/gpu/drm/radeon/radeon_device.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 716293c..974f710 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -1309,7 +1309,7 @@ int radeon_device_init(struct radeon_device *rdev,

 	r = radeon_init(rdev);
 	if (r)
-		return r;
+		goto failed;

 	r = radeon_ib_ring_tests(rdev);
 	if (r)
@@ -1329,7 +1329,7 @@ int radeon_device_init(struct radeon_device *rdev,
 		r = radeon_init(rdev);
 		if (r)
-			return r;
+			goto failed;
 	if ((radeon_testing & 1)) {
 		if (rdev->accel_working)
@@ -1350,6 +1350,11 @@ int radeon_device_init(struct radeon_device *rdev,
 			DRM_INFO("radeon: acceleration disabled, skipping benchmarks\n");
 	return 0;
+	if (runtime)
+		vga_switcheroo_fini_domain_pm_ops(rdev->dev);
+	return r;

 static void radeon_debugfs_remove_files(struct radeon_device *rdev);
@@ -1370,6 +1375,8 @@ void radeon_device_fini(struct radeon_device *rdev)
+	if (rdev->flags & RADEON_IS_PX)
+		vga_switcheroo_fini_domain_pm_ops(rdev->dev);
 	vga_client_register(rdev->pdev, NULL, NULL, NULL);
 	if (rdev->rio_mem)
 		pci_iounmap(rdev->pdev, rdev->rio_mem);

More information about the kernel-team mailing list