diff options
author | Tejun Heo <tj@kernel.org> | 2011-01-03 08:49:32 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-01-05 23:32:16 -0500 |
commit | 32c87fca2fac490e34a9fa900b45f2fbb4faacf9 (patch) | |
tree | 181e9c1d1493124f0a0f5a8a65be4bf29053b77e /drivers/gpu/drm/radeon/radeon_device.c | |
parent | af5dd83b873efd4e1477f2265b6fa15a825aff26 (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.c | 6 |
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) |