Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58b4d720 authored by Maarten Lankhorst's avatar Maarten Lankhorst
Browse files

drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers



It seems some drivers really want this as a parameter,
like vmwgfx.

Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@canonical.com>
parent dd7cfd64
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ int qxl_release_reserve_list(struct qxl_release *release, bool no_intr)
	if (list_is_singular(&release->bos))
		return 0;

	ret = ttm_eu_reserve_buffers(&release->ticket, &release->bos);
	ret = ttm_eu_reserve_buffers(&release->ticket, &release->bos, !no_intr);
	if (ret)
		return ret;

+1 −1
Original line number Diff line number Diff line
@@ -482,7 +482,7 @@ int radeon_bo_list_validate(struct radeon_device *rdev,
	u64 bytes_moved = 0, initial_bytes_moved;
	u64 bytes_moved_threshold = radeon_bo_get_threshold_for_moves(rdev);

	r = ttm_eu_reserve_buffers(ticket, head);
	r = ttm_eu_reserve_buffers(ticket, head, true);
	if (unlikely(r != 0)) {
		return r;
	}
+1 −1
Original line number Diff line number Diff line
@@ -399,7 +399,7 @@ static int radeon_vm_clear_bo(struct radeon_device *rdev,
        INIT_LIST_HEAD(&head);
        list_add(&tv.head, &head);

        r = ttm_eu_reserve_buffers(&ticket, &head);
        r = ttm_eu_reserve_buffers(&ticket, &head, true);
        if (r)
		return r;

+13 −9
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ EXPORT_SYMBOL(ttm_eu_backoff_reservation);
 */

int ttm_eu_reserve_buffers(struct ww_acquire_ctx *ticket,
			   struct list_head *list)
			   struct list_head *list, bool intr)
{
	struct ttm_bo_global *glob;
	struct ttm_validate_buffer *entry;
@@ -140,7 +140,7 @@ retry:
		if (entry->reserved)
			continue;

		ret = __ttm_bo_reserve(bo, true, (ticket == NULL), true,
		ret = __ttm_bo_reserve(bo, intr, (ticket == NULL), true,
				       ticket);

		if (ret == -EDEADLK) {
@@ -153,6 +153,8 @@ retry:
			ttm_eu_backoff_reservation_locked(list);
			spin_unlock(&glob->lru_lock);
			ttm_eu_list_ref_sub(list);

			if (intr) {
				ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
								       ticket);
				if (unlikely(ret != 0)) {
@@ -160,6 +162,8 @@ retry:
						ret = -ERESTARTSYS;
					goto err_fini;
				}
			} else
				ww_mutex_lock_slow(&bo->resv->lock, ticket);

			entry->reserved = true;
			if (unlikely(atomic_read(&bo->cpu_writers) > 0)) {
+2 −5
Original line number Diff line number Diff line
@@ -2496,7 +2496,7 @@ int vmw_execbuf_process(struct drm_file *file_priv,
	if (unlikely(ret != 0))
		goto out_err_nores;

	ret = ttm_eu_reserve_buffers(&ticket, &sw_context->validate_nodes);
	ret = ttm_eu_reserve_buffers(&ticket, &sw_context->validate_nodes, true);
	if (unlikely(ret != 0))
		goto out_err;

@@ -2684,10 +2684,7 @@ void __vmw_execbuf_release_pinned_bo(struct vmw_private *dev_priv,
	query_val.bo = ttm_bo_reference(dev_priv->dummy_query_bo);
	list_add_tail(&query_val.head, &validate_list);

	do {
		ret = ttm_eu_reserve_buffers(&ticket, &validate_list);
	} while (ret == -ERESTARTSYS);

	ret = ttm_eu_reserve_buffers(&ticket, &validate_list, false);
	if (unlikely(ret != 0)) {
		vmw_execbuf_unpin_panic(dev_priv);
		goto out_no_reserve;
Loading