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

Commit 68c4fa31 authored by Thomas Hellstrom's avatar Thomas Hellstrom Committed by Dave Airlie
Browse files

drm/ttm: Optimize ttm_eu_backoff_reservation



Avoid the ttm_bo_unreserve() spinlocks by calling
ttm_eu_backoff_reservation_locked under the lru spinlock.

Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: default avatarJerome Glisse <j.glisse@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 2357cbe5
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -101,15 +101,16 @@ static int ttm_eu_wait_unreserved_locked(struct list_head *list,
void ttm_eu_backoff_reservation(struct list_head *list)
{
	struct ttm_validate_buffer *entry;
	struct ttm_bo_global *glob;

	list_for_each_entry(entry, list, head) {
		struct ttm_buffer_object *bo = entry->bo;
		if (!entry->reserved)
			continue;
	if (list_empty(list))
		return;

		entry->reserved = false;
		ttm_bo_unreserve(bo);
	}
	entry = list_first_entry(list, struct ttm_validate_buffer, head);
	glob = entry->bo->glob;
	spin_lock(&glob->lru_lock);
	ttm_eu_backoff_reservation_locked(list);
	spin_unlock(&glob->lru_lock);
}
EXPORT_SYMBOL(ttm_eu_backoff_reservation);