Skip to content

Commit

Permalink
drm/ttm/vmwgfx: Have TTM manage the validation sequence.
Browse files Browse the repository at this point in the history
Rather than having the driver supply the validation sequence, leave that
responsibility to TTM. This saves some confusion and a function argument.

Signed-off-by: Thomas Hellstrom <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
  • Loading branch information
thomashvmw authored and airlied committed Nov 22, 2010
1 parent 95762c2 commit 6570596
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 6 deletions.
1 change: 1 addition & 0 deletions drivers/gpu/drm/ttm/ttm_bo.c
Original file line number Diff line number Diff line change
Expand Up @@ -1539,6 +1539,7 @@ int ttm_bo_device_init(struct ttm_bo_device *bdev,
bdev->dev_mapping = NULL;
bdev->glob = glob;
bdev->need_dma32 = need_dma32;
bdev->val_seq = 0;
spin_lock_init(&bdev->fence_lock);
mutex_lock(&glob->device_list_mutex);
list_add_tail(&bdev->device_list, &glob->device_list);
Expand Down
5 changes: 4 additions & 1 deletion drivers/gpu/drm/ttm/ttm_execbuf_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,12 @@ EXPORT_SYMBOL(ttm_eu_backoff_reservation);
* buffers in different orders.
*/

int ttm_eu_reserve_buffers(struct list_head *list, uint32_t val_seq)
int ttm_eu_reserve_buffers(struct list_head *list)
{
struct ttm_bo_global *glob;
struct ttm_validate_buffer *entry;
int ret;
uint32_t val_seq;

if (list_empty(list))
return 0;
Expand All @@ -146,6 +147,8 @@ int ttm_eu_reserve_buffers(struct list_head *list, uint32_t val_seq)

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

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

Expand Down
1 change: 0 additions & 1 deletion drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@ struct vmw_private {
*/

struct vmw_sw_context ctx;
uint32_t val_seq;
struct mutex cmdbuf_mutex;

/**
Expand Down
3 changes: 1 addition & 2 deletions drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -653,8 +653,7 @@ int vmw_execbuf_ioctl(struct drm_device *dev, void *data,
ret = vmw_cmd_check_all(dev_priv, sw_context, cmd, arg->command_size);
if (unlikely(ret != 0))
goto out_err;
ret = ttm_eu_reserve_buffers(&sw_context->validate_nodes,
dev_priv->val_seq++);
ret = ttm_eu_reserve_buffers(&sw_context->validate_nodes);
if (unlikely(ret != 0))
goto out_err;

Expand Down
2 changes: 2 additions & 0 deletions include/drm/ttm/ttm_bo_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,7 @@ struct ttm_bo_global {
* @addr_space_mm: Range manager for the device address space.
* lru_lock: Spinlock that protects the buffer+device lru lists and
* ddestroy lists.
* @val_seq: Current validation sequence.
* @nice_mode: Try nicely to wait for buffer idle when cleaning a manager.
* If a GPU lockup has been detected, this is forced to 0.
* @dev_mapping: A pointer to the struct address_space representing the
Expand Down Expand Up @@ -544,6 +545,7 @@ struct ttm_bo_device {
* Protected by the global:lru lock.
*/
struct list_head ddestroy;
uint32_t val_seq;

/*
* Protected by load / firstopen / lastclose /unload sync.
Expand Down
3 changes: 1 addition & 2 deletions include/drm/ttm/ttm_execbuf_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ extern void ttm_eu_backoff_reservation(struct list_head *list);
* function ttm_eu_reserve_buffers
*
* @list: thread private list of ttm_validate_buffer structs.
* @val_seq: A unique sequence number.
*
* Tries to reserve bos pointed to by the list entries for validation.
* If the function returns 0, all buffers are marked as "unfenced",
Expand All @@ -94,7 +93,7 @@ extern void ttm_eu_backoff_reservation(struct list_head *list);
* has failed.
*/

extern int ttm_eu_reserve_buffers(struct list_head *list, uint32_t val_seq);
extern int ttm_eu_reserve_buffers(struct list_head *list);

/**
* function ttm_eu_fence_buffer_objects.
Expand Down

0 comments on commit 6570596

Please sign in to comment.