On 01.08.2014 00:34, Maarten Lankhorst wrote:
> 
> @@ -357,14 +360,20 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, 
> void *data,
>       struct drm_radeon_gem_wait_idle *args = data;
>       struct drm_gem_object *gobj;
>       struct radeon_bo *robj;
> -     int r;
> +     int r = 0;
> +     long ret;
>  
>       gobj = drm_gem_object_lookup(dev, filp, args->handle);
>       if (gobj == NULL) {
>               return -ENOENT;
>       }
>       robj = gem_to_radeon_bo(gobj);
> -     r = radeon_bo_wait(robj, NULL, false);
> +     ret = reservation_object_wait_timeout_rcu(robj->tbo.resv, true, true, 
> 30 * HZ);
> +     if (ret == 0)
> +             r = -EBUSY;
> +     else if (ret < 0)
> +             r = ret;
> +
>       /* callback hw specific functions if any */
>       if (rdev->asic->ioctl_wait_idle)
>               robj->rdev->asic->ioctl_wait_idle(rdev, robj);

Heads up, this conflicts with
http://lists.freedesktop.org/archives/dri-devel/2014-August/065255.html
which passes a non-NULL second argument to radeon_bo_wait() to get the
BO's current domain.


-- 
Earthling Michel D?nzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer

Reply via email to