• Bhaktipriya Shridhar's avatar
    drm/qxl: Remove deprecated create_singlethread_workqueue · 7b2d16f5
    Bhaktipriya Shridhar authored
    System workqueues have been able to handle high level of concurrency
    for a long time now and there's no reason to use dedicated workqueues
    just to gain concurrency. Since the workqueue in the QXL graphics device
    driver is involved in freeing and processing the release ring
    (workitem &qdev->gc_workqxl, maps to gc_work which calls
    qxl_garbage_collect) and is not being used on a memory reclaim path,
    dedicated gc_queue has been replaced with the use of system_wq.
    
    Unlike a dedicated per-cpu workqueue created with create_workqueue(),
    system_wq allows multiple work items to overlap executions even on
    the same CPU; however, a per-cpu workqueue doesn't have any CPU
    locality or global ordering guarantees unless the target CPU is
    explicitly specified and thus the increase of local concurrency
    shouldn't make any difference.
    
    flush_work() has been called in qxl_device_fini() to ensure that there
    are no pending tasks while disconnecting the driver.
    Signed-off-by: default avatarBhaktipriya Shridhar <bhaktipriya96@gmail.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20160702110209.GA3560@Karyakshetra
    7b2d16f5
qxl_drv.h 16.3 KB