Bug #2635 » ugly.diff
| sys/dev/drm/include/drm/ttm/ttm_bo_driver.h | ||
|---|---|---|
|
#include <drm/drm_mm.h>
|
||
|
#include <drm/drm_global.h>
|
||
|
#include <sys/tree.h>
|
||
|
#include <sys/mutex2.h>
|
||
|
struct ttm_backend_func {
|
||
|
/**
|
||
| ... | ... | |
|
* Internal protection.
|
||
|
*/
|
||
|
struct mtx wq_mtx;
|
||
|
struct timeout_task wq;
|
||
|
bool need_dma32;
|
||
| sys/dev/drm/ttm/ttm_bo.c | ||
|---|---|---|
|
driver->sync_obj_flush(sync_obj);
|
||
|
driver->sync_obj_unref(&sync_obj);
|
||
|
}
|
||
|
mtx_lock(&bdev->wq_mtx);
|
||
|
taskqueue_enqueue_timeout(taskqueue_thread[0], &bdev->wq,
|
||
|
((hz / 100) < 1) ? 1 : hz / 100);
|
||
|
mtx_unlock(&bdev->wq_mtx);
|
||
|
}
|
||
|
/**
|
||
| ... | ... | |
|
struct ttm_bo_device *bdev = arg;
|
||
|
if (ttm_bo_delayed_delete(bdev, false)) {
|
||
|
mtx_lock(&bdev->wq_mtx);
|
||
|
taskqueue_enqueue_timeout(taskqueue_thread[0], &bdev->wq,
|
||
|
((hz / 100) < 1) ? 1 : hz / 100);
|
||
|
mtx_unlock(&bdev->wq_mtx);
|
||
|
}
|
||
|
}
|
||
| ... | ... | |
|
int pending;
|
||
|
taskqueue_cancel_timeout(taskqueue_thread[0], &bdev->wq, &pending);
|
||
|
if (pending)
|
||
|
if (pending) {
|
||
|
taskqueue_drain_timeout(taskqueue_thread[0], &bdev->wq);
|
||
|
}
|
||
|
return (pending);
|
||
|
}
|
||
|
EXPORT_SYMBOL(ttm_bo_lock_delayed_workqueue);
|
||
| ... | ... | |
|
void ttm_bo_unlock_delayed_workqueue(struct ttm_bo_device *bdev, int resched)
|
||
|
{
|
||
|
if (resched) {
|
||
|
mtx_lock(&bdev->wq_mtx);
|
||
|
taskqueue_enqueue_timeout(taskqueue_thread[0], &bdev->wq,
|
||
|
((hz / 100) < 1) ? 1 : hz / 100);
|
||
|
mtx_unlock(&bdev->wq_mtx);
|
||
|
}
|
||
|
}
|
||
|
EXPORT_SYMBOL(ttm_bo_unlock_delayed_workqueue);
|
||
| ... | ... | |
|
list_del(&bdev->device_list);
|
||
|
lockmgr(&glob->device_list_mutex, LK_RELEASE);
|
||
|
if (taskqueue_cancel_timeout(taskqueue_thread[0], &bdev->wq, NULL))
|
||
|
if (taskqueue_cancel_timeout(taskqueue_thread[0], &bdev->wq, NULL)) {
|
||
|
taskqueue_drain_timeout(taskqueue_thread[0], &bdev->wq);
|
||
|
}
|
||
|
while (ttm_bo_delayed_delete(bdev, true))
|
||
|
;
|
||
| ... | ... | |
|
if (unlikely(ret != 0))
|
||
|
goto out_no_addr_mm;
|
||
|
mtx_init(&bdev->wq_mtx);
|
||
|
TIMEOUT_TASK_INIT(taskqueue_thread[0], &bdev->wq, 0,
|
||
|
ttm_bo_delayed_workqueue, bdev);
|
||
|
INIT_LIST_HEAD(&bdev->ddestroy);
|
||
- « Previous
- 1
- 2
- 3
- 4
- Next »