mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm: v3d: Switch to use drm_gem_object reservation_object
Now that the base struct drm_gem_object has a reservation_object, use it and remove the private BO one. Cc: Eric Anholt <eric@anholt.net> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: David Airlie <airlied@linux.ie> Cc: dri-devel@lists.freedesktop.org Signed-off-by: Rob Herring <robh@kernel.org> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20190202154158.10443-5-robh@kernel.org Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
This commit is contained in:
committed by
Maxime Ripard
parent
dd55cf6929
commit
8d66830976
@@ -190,7 +190,7 @@ v3d_attach_object_fences(struct v3d_bo **bos, int bo_count,
|
||||
|
||||
for (i = 0; i < bo_count; i++) {
|
||||
/* XXX: Use shared fences for read-only objects. */
|
||||
reservation_object_add_excl_fence(bos[i]->resv, fence);
|
||||
reservation_object_add_excl_fence(bos[i]->base.resv, fence);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ v3d_unlock_bo_reservations(struct v3d_bo **bos,
|
||||
int i;
|
||||
|
||||
for (i = 0; i < bo_count; i++)
|
||||
ww_mutex_unlock(&bos[i]->resv->lock);
|
||||
ww_mutex_unlock(&bos[i]->base.resv->lock);
|
||||
|
||||
ww_acquire_fini(acquire_ctx);
|
||||
}
|
||||
@@ -228,7 +228,7 @@ retry:
|
||||
if (contended_lock != -1) {
|
||||
struct v3d_bo *bo = bos[contended_lock];
|
||||
|
||||
ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
|
||||
ret = ww_mutex_lock_slow_interruptible(&bo->base.resv->lock,
|
||||
acquire_ctx);
|
||||
if (ret) {
|
||||
ww_acquire_done(acquire_ctx);
|
||||
@@ -240,18 +240,18 @@ retry:
|
||||
if (i == contended_lock)
|
||||
continue;
|
||||
|
||||
ret = ww_mutex_lock_interruptible(&bos[i]->resv->lock,
|
||||
ret = ww_mutex_lock_interruptible(&bos[i]->base.resv->lock,
|
||||
acquire_ctx);
|
||||
if (ret) {
|
||||
int j;
|
||||
|
||||
for (j = 0; j < i; j++)
|
||||
ww_mutex_unlock(&bos[j]->resv->lock);
|
||||
ww_mutex_unlock(&bos[j]->base.resv->lock);
|
||||
|
||||
if (contended_lock != -1 && contended_lock >= i) {
|
||||
struct v3d_bo *bo = bos[contended_lock];
|
||||
|
||||
ww_mutex_unlock(&bo->resv->lock);
|
||||
ww_mutex_unlock(&bo->base.resv->lock);
|
||||
}
|
||||
|
||||
if (ret == -EDEADLK) {
|
||||
@@ -270,7 +270,7 @@ retry:
|
||||
* before we commit the CL to the hardware.
|
||||
*/
|
||||
for (i = 0; i < bo_count; i++) {
|
||||
ret = reservation_object_reserve_shared(bos[i]->resv, 1);
|
||||
ret = reservation_object_reserve_shared(bos[i]->base.resv, 1);
|
||||
if (ret) {
|
||||
v3d_unlock_bo_reservations(bos, bo_count,
|
||||
acquire_ctx);
|
||||
@@ -429,8 +429,6 @@ v3d_wait_bo_ioctl(struct drm_device *dev, void *data,
|
||||
{
|
||||
int ret;
|
||||
struct drm_v3d_wait_bo *args = data;
|
||||
struct drm_gem_object *gem_obj;
|
||||
struct v3d_bo *bo;
|
||||
ktime_t start = ktime_get();
|
||||
u64 delta_ns;
|
||||
unsigned long timeout_jiffies =
|
||||
@@ -439,21 +437,8 @@ v3d_wait_bo_ioctl(struct drm_device *dev, void *data,
|
||||
if (args->pad != 0)
|
||||
return -EINVAL;
|
||||
|
||||
gem_obj = drm_gem_object_lookup(file_priv, args->handle);
|
||||
if (!gem_obj) {
|
||||
DRM_DEBUG("Failed to look up GEM BO %d\n", args->handle);
|
||||
return -EINVAL;
|
||||
}
|
||||
bo = to_v3d_bo(gem_obj);
|
||||
|
||||
ret = reservation_object_wait_timeout_rcu(bo->resv,
|
||||
true, true,
|
||||
timeout_jiffies);
|
||||
|
||||
if (ret == 0)
|
||||
ret = -ETIME;
|
||||
else if (ret > 0)
|
||||
ret = 0;
|
||||
ret = drm_gem_reservation_object_wait(file_priv, args->handle,
|
||||
true, timeout_jiffies);
|
||||
|
||||
/* Decrement the user's timeout, in case we got interrupted
|
||||
* such that the ioctl will be restarted.
|
||||
@@ -468,8 +453,6 @@ v3d_wait_bo_ioctl(struct drm_device *dev, void *data,
|
||||
if (ret == -ETIME && args->timeout_ns)
|
||||
ret = -EAGAIN;
|
||||
|
||||
drm_gem_object_put_unlocked(gem_obj);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user