Skip to content

Commit e058025

Browse files
committed
drm/etnaviv: lock BOs after all other submit work is done
Populating objects, adding them to the GPU VM and patching/validating the command stream might take a lot of CPU time. There is no reason to hold all object reservations during that time. Signed-off-by: Lucas Stach <[email protected]>
1 parent 683da22 commit e058025

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -514,10 +514,6 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
514514
if (ret)
515515
goto err_submit_objects;
516516

517-
ret = submit_lock_objects(submit, &ticket);
518-
if (ret)
519-
goto err_submit_objects;
520-
521517
if (!etnaviv_cmd_validate_one(gpu, stream, args->stream_size / 4,
522518
relocs, args->nr_relocs)) {
523519
ret = -EINVAL;
@@ -532,10 +528,6 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
532528
}
533529
}
534530

535-
ret = submit_fence_sync(submit);
536-
if (ret)
537-
goto err_submit_objects;
538-
539531
ret = submit_pin_objects(submit);
540532
if (ret)
541533
goto err_submit_objects;
@@ -552,6 +544,14 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
552544
memcpy(submit->cmdbuf.vaddr, stream, args->stream_size);
553545
submit->cmdbuf.user_size = ALIGN(args->stream_size, 8);
554546

547+
ret = submit_lock_objects(submit, &ticket);
548+
if (ret)
549+
goto err_submit_objects;
550+
551+
ret = submit_fence_sync(submit);
552+
if (ret)
553+
goto err_submit_objects;
554+
555555
ret = etnaviv_sched_push_job(&ctx->sched_entity[args->pipe], submit);
556556
if (ret)
557557
goto err_submit_objects;

0 commit comments

Comments
 (0)