aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_device.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-01-03 08:49:32 -0500
committerDave Airlie <airlied@redhat.com>2011-01-05 23:32:16 -0500
commit32c87fca2fac490e34a9fa900b45f2fbb4faacf9 (patch)
tree181e9c1d1493124f0a0f5a8a65be4bf29053b77e /drivers/gpu/drm/radeon/radeon_device.c
parentaf5dd83b873efd4e1477f2265b6fa15a825aff26 (diff)
drm/radeon: use system_wq instead of dev_priv->wq
With cmwq, there's no reason for radeon to use a dedicated workqueue. Drop dev_priv->wq and use system_wq instead. Because radeon_driver_irq_uninstall_kms() may be called from unsleepable context, the work items can't be flushed from there. Instead, init and flush from radeon_irq_kms_init/fini(). While at it, simplify canceling/flushing of rdev->pm.dynpm_idle_work. Always initialize and sync cancel instead of being unnecessarily smart about it. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Alex Deucher <alexdeucher@gmail.com> Cc: dri-devel@lists.freedesktop.org Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 4ee0c53b28a7..44cf0d707006 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -710,11 +710,6 @@ int radeon_device_init(struct radeon_device *rdev,
710 init_waitqueue_head(&rdev->irq.vblank_queue); 710 init_waitqueue_head(&rdev->irq.vblank_queue);
711 init_waitqueue_head(&rdev->irq.idle_queue); 711 init_waitqueue_head(&rdev->irq.idle_queue);
712 712
713 /* setup workqueue */
714 rdev->wq = create_workqueue("radeon");
715 if (rdev->wq == NULL)
716 return -ENOMEM;
717
718 /* Set asic functions */ 713 /* Set asic functions */
719 r = radeon_asic_init(rdev); 714 r = radeon_asic_init(rdev);
720 if (r) 715 if (r)
@@ -813,7 +808,6 @@ void radeon_device_fini(struct radeon_device *rdev)
813 /* evict vram memory */ 808 /* evict vram memory */
814 radeon_bo_evict_vram(rdev); 809 radeon_bo_evict_vram(rdev);
815 radeon_fini(rdev); 810 radeon_fini(rdev);
816 destroy_workqueue(rdev->wq);
817 vga_switcheroo_unregister_client(rdev->pdev); 811 vga_switcheroo_unregister_client(rdev->pdev);
818 vga_client_register(rdev->pdev, NULL, NULL, NULL); 812 vga_client_register(rdev->pdev, NULL, NULL, NULL);
819 if (rdev->rio_mem) 813 if (rdev->rio_mem)