diff options
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo.c | 14 | ||||
-rw-r--r-- | include/drm/ttm/ttm_bo_api.h | 17 |
2 files changed, 31 insertions, 0 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 3b5b094b1397..4c2299299ab2 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c | |||
@@ -604,6 +604,20 @@ void ttm_bo_unref(struct ttm_buffer_object **p_bo) | |||
604 | } | 604 | } |
605 | EXPORT_SYMBOL(ttm_bo_unref); | 605 | EXPORT_SYMBOL(ttm_bo_unref); |
606 | 606 | ||
607 | int ttm_bo_lock_delayed_workqueue(struct ttm_bo_device *bdev) | ||
608 | { | ||
609 | return cancel_delayed_work_sync(&bdev->wq); | ||
610 | } | ||
611 | EXPORT_SYMBOL(ttm_bo_lock_delayed_workqueue); | ||
612 | |||
613 | void ttm_bo_unlock_delayed_workqueue(struct ttm_bo_device *bdev, int resched) | ||
614 | { | ||
615 | if (resched) | ||
616 | schedule_delayed_work(&bdev->wq, | ||
617 | ((HZ / 100) < 1) ? 1 : HZ / 100); | ||
618 | } | ||
619 | EXPORT_SYMBOL(ttm_bo_unlock_delayed_workqueue); | ||
620 | |||
607 | static int ttm_bo_evict(struct ttm_buffer_object *bo, bool interruptible, | 621 | static int ttm_bo_evict(struct ttm_buffer_object *bo, bool interruptible, |
608 | bool no_wait_reserve, bool no_wait_gpu) | 622 | bool no_wait_reserve, bool no_wait_gpu) |
609 | { | 623 | { |
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h index 3e273e0b9417..267a86c74e2e 100644 --- a/include/drm/ttm/ttm_bo_api.h +++ b/include/drm/ttm/ttm_bo_api.h | |||
@@ -362,6 +362,23 @@ extern int ttm_bo_validate(struct ttm_buffer_object *bo, | |||
362 | extern void ttm_bo_unref(struct ttm_buffer_object **bo); | 362 | extern void ttm_bo_unref(struct ttm_buffer_object **bo); |
363 | 363 | ||
364 | /** | 364 | /** |
365 | * ttm_bo_lock_delayed_workqueue | ||
366 | * | ||
367 | * Prevent the delayed workqueue from running. | ||
368 | * Returns | ||
369 | * True if the workqueue was queued at the time | ||
370 | */ | ||
371 | extern int ttm_bo_lock_delayed_workqueue(struct ttm_bo_device *bdev); | ||
372 | |||
373 | /** | ||
374 | * ttm_bo_unlock_delayed_workqueue | ||
375 | * | ||
376 | * Allows the delayed workqueue to run. | ||
377 | */ | ||
378 | extern void ttm_bo_unlock_delayed_workqueue(struct ttm_bo_device *bdev, | ||
379 | int resched); | ||
380 | |||
381 | /** | ||
365 | * ttm_bo_synccpu_write_grab | 382 | * ttm_bo_synccpu_write_grab |
366 | * | 383 | * |
367 | * @bo: The buffer object: | 384 | * @bo: The buffer object: |