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: |
