On Fri, 2017-12-01 at 11:36 +0100, Lucas Stach wrote: > The object fencing has nothing to do with the actual GPU buffer submit, > so move it to the gem submit path to have a cleaner split. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> Reviewed-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> regards Philipp > --- > drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 21 +++++++++++++++++++++ > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 7 ------- > 2 files changed, 21 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > index 51ed34586c10..72468f11dd16 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > @@ -180,6 +180,24 @@ static int submit_fence_sync(const struct etnaviv_gem_submit *submit) > return ret; > } > > +static void submit_attach_object_fences(struct etnaviv_gem_submit *submit) > +{ > + int i; > + > + for (i = 0; i < submit->nr_bos; i++) { > + struct etnaviv_gem_object *etnaviv_obj = submit->bos[i].obj; > + > + if (submit->bos[i].flags & ETNA_SUBMIT_BO_WRITE) > + reservation_object_add_excl_fence(etnaviv_obj->resv, > + submit->fence); > + else > + reservation_object_add_shared_fence(etnaviv_obj->resv, > + submit->fence); > + > + submit_unlock_object(submit, i); > + } > +} > + > static void submit_unpin_objects(struct etnaviv_gem_submit *submit) > { > int i; > @@ -335,6 +353,7 @@ static void submit_cleanup(struct etnaviv_gem_submit *submit) > for (i = 0; i < submit->nr_bos; i++) { > struct etnaviv_gem_object *etnaviv_obj = submit->bos[i].obj; > > + /* if the GPU submit failed, objects might still be locked */ > submit_unlock_object(submit, i); > drm_gem_object_put_unlocked(&etnaviv_obj->base); > } > @@ -507,6 +526,8 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data, > if (ret) > goto out; > > + submit_attach_object_fences(submit); > + > cmdbuf = NULL; > > if (args->flags & ETNA_SUBMIT_FENCE_FD_OUT) { > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > index 85f6ee1da016..d55a2137ee37 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > @@ -1443,13 +1443,6 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, > etnaviv_gem_mapping_reference(submit->bos[i].mapping); > cmdbuf->bo_map[i] = submit->bos[i].mapping; > atomic_inc(&etnaviv_obj->gpu_active); > - > - if (submit->bos[i].flags & ETNA_SUBMIT_BO_WRITE) > - reservation_object_add_excl_fence(etnaviv_obj->resv, > - fence); > - else > - reservation_object_add_shared_fence(etnaviv_obj->resv, > - fence); > } > cmdbuf->nr_bos = submit->nr_bos; > hangcheck_timer_reset(gpu); _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel