[PATCH] drm/ttm: remove EBUSY handling in ttm_execbuf_util
Jerome Glisse
j.glisse at gmail.com
Mon Aug 20 08:15:29 PDT 2012
On Mon, Aug 20, 2012 at 9:42 AM, Maarten Lankhorst
<maarten.lankhorst at canonical.com> wrote:
> How is this different from just calling with no_wait == false?
> As far as I can tell, both paths end up with the same result..
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
NAK this seriously modify the behavior. The ttm_eu_del_from_lru_locked
part is important. It must happen with lru lock held and without any
dropping of this lock prior to wait for bo unreserve.
Cheers,
Jerome
>
> diff --git a/drivers/gpu/drm/ttm/ttm_execbuf_util.c b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
> index 3f48a46..4e7b596 100644
> --- a/drivers/gpu/drm/ttm/ttm_execbuf_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
> @@ -82,22 +82,6 @@ static void ttm_eu_list_ref_sub(struct list_head *list)
> }
> }
>
> -static int ttm_eu_wait_unreserved_locked(struct list_head *list,
> - struct ttm_buffer_object *bo)
> -{
> - struct ttm_bo_global *glob = bo->glob;
> - int ret;
> -
> - ttm_eu_del_from_lru_locked(list);
> - spin_unlock(&glob->lru_lock);
> - ret = ttm_bo_wait_unreserved(bo, true);
> - spin_lock(&glob->lru_lock);
> - if (unlikely(ret != 0))
> - ttm_eu_backoff_reservation_locked(list);
> - return ret;
> -}
> -
> -
> void ttm_eu_backoff_reservation(struct list_head *list)
> {
> struct ttm_validate_buffer *entry;
> @@ -152,19 +136,10 @@ retry:
> list_for_each_entry(entry, list, head) {
> struct ttm_buffer_object *bo = entry->bo;
>
> -retry_this_bo:
> - ret = ttm_bo_reserve_locked(bo, true, true, true, val_seq);
> + ret = ttm_bo_reserve_locked(bo, true, false, true, val_seq);
> switch (ret) {
> case 0:
> break;
> - case -EBUSY:
> - ret = ttm_eu_wait_unreserved_locked(list, bo);
> - if (unlikely(ret != 0)) {
> - spin_unlock(&glob->lru_lock);
> - ttm_eu_list_ref_sub(list);
> - return ret;
> - }
> - goto retry_this_bo;
> case -EAGAIN:
> ttm_eu_backoff_reservation_locked(list);
> spin_unlock(&glob->lru_lock);
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list