Hi all, this series fixes the job (submit) lifetime issues exposed by the addition of the performance counter sampling. After this series the submits are properly reference counted and cleanup is moved to one central location, which makes reasoning about the GPU submit path much easier. Lifetime of the submit and cmdbuf are now the same, which allows to remove some duplication that was necessary before due to different lifetimes of those objects. I confess that this series does more than strictly necessary to fix the issue exposed by perfmon, but it also includes a lot of prep work for other big changes to the submit path, which are still in the works. Also I've cleaned up little things I mentioned while working my way through those code paths. One more nice effect of this series is that it unlocks some more concurrency between submits to different GPUs, so provides some small performance improvements when running on X.Org, where both the 3D and 2D GPU are used. Benefits might be larger for upcoming SoCs with multiple GPUs. Please review. This is the base set of patches I would like to land in 4.16. Regards, Lucas Lucas Stach (27): drm/etnaviv: fix GPU vs sync point race drm/etnaviv: split obj locks in different classes depending on the obj type drm/etnaviv: add lockdep annotation for userptr object population drm/etnaviv: fold __etnaviv_gem_new into caller drm/etnaviv: change return type of etnaviv_gem_obj_add to void drm/etnaviv: get rid of userptr worker drm/etnaviv: remove -EAGAIN handling from submit path drm/etnaviv: remove stale TODO in etnaviv_gpu_submit drm/etnaviv: don't flush workqueue in etnaviv_gpu_wait_obj_inactive drm/etnaviv: remove switch_context member from etnaviv_gpu drm/etnaviv: move workqueue to be per GPU drm/etnaviv: hold GPU lock while inserting END command drm/etnaviv: add lockdep annotations to buffer manipulation functions drm/etnaviv: simplify submit_create drm/etnaviv: move object fence attachment to gem_submit path drm/etnaviv: rename submit fence to out_fence drm/etnaviv: attach in fence to submit and move fence wait to fence_sync drm/etnaviv: move object unpinning to submit cleanup drm/etnaviv: move ww_acquire_ctx out of submit object drm/etnaviv: refcount the submit object drm/etnaviv: move PMRs to submit object drm/etnaviv: move exec_state to submit object drm/etnaviv: use submit exec_state for perfmon sampling drm/etnaviv: move cmdbuf into submit object drm/etnaviv: move GPU active handling to bo pin/unpin drm/etnaviv: couple runtime PM management to submit object lifetime drm/etnaviv: re-enable perfmon support drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 40 ++++-- drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c | 29 +--- drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h | 18 +-- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 22 +-- drivers/gpu/drm/etnaviv/etnaviv_drv.h | 14 +- drivers/gpu/drm/etnaviv/etnaviv_dump.c | 23 +-- drivers/gpu/drm/etnaviv/etnaviv_gem.c | 197 ++++++-------------------- drivers/gpu/drm/etnaviv/etnaviv_gem.h | 22 +-- drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 7 +- drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 199 ++++++++++++++------------ drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 204 +++++++++------------------ drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 11 +- drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_perfmon.c | 4 +- drivers/gpu/drm/etnaviv/etnaviv_perfmon.h | 2 +- 15 files changed, 297 insertions(+), 497 deletions(-) -- 2.11.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel