Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 358161
b: refs/heads/master
c: f2d476a
h: refs/heads/master
i:
  358159: 7aaa318
v: v3
  • Loading branch information
Maarten Lankhorst committed Jan 15, 2013
1 parent 44d5f33 commit d25e8fd
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5e45d7dfd74100d622f9cdc70bfd1f9fae1671de
refs/heads/master: f2d476a110bc24fde008698ae9018c99e803e25c
23 changes: 21 additions & 2 deletions trunk/drivers/gpu/drm/ttm/ttm_execbuf_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,17 @@ int ttm_eu_reserve_buffers(struct list_head *list)
entry = list_first_entry(list, struct ttm_validate_buffer, head);
glob = entry->bo->glob;

retry:
spin_lock(&glob->lru_lock);
val_seq = entry->bo->bdev->val_seq++;

retry:
list_for_each_entry(entry, list, head) {
struct ttm_buffer_object *bo = entry->bo;

/* already slowpath reserved? */
if (entry->reserved)
continue;

ret = ttm_bo_reserve_nolru(bo, true, true, true, val_seq);
switch (ret) {
case 0:
Expand All @@ -155,11 +159,26 @@ int ttm_eu_reserve_buffers(struct list_head *list)
/* fallthrough */
case -EAGAIN:
ttm_eu_backoff_reservation_locked(list);

/*
* temporarily increase sequence number every retry,
* to prevent us from seeing our old reservation
* sequence when someone else reserved the buffer,
* but hasn't updated the seq_valid/seqno members yet.
*/
val_seq = entry->bo->bdev->val_seq++;

spin_unlock(&glob->lru_lock);
ttm_eu_list_ref_sub(list);
ret = ttm_bo_wait_unreserved(bo, true);
ret = ttm_bo_reserve_slowpath_nolru(bo, true, val_seq);
if (unlikely(ret != 0))
return ret;
spin_lock(&glob->lru_lock);
entry->reserved = true;
if (unlikely(atomic_read(&bo->cpu_writers) > 0)) {
ret = -EBUSY;
goto err;
}
goto retry;
default:
goto err;
Expand Down

0 comments on commit d25e8fd

Please sign in to comment.