[PATCH 00/27] Etnaviv job lifetime issue fixes

Lucas Stach l.stach at pengutronix.de
Fri Dec 1 10:35:57 UTC 2017

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

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

Please review. This is the base set of patches I would like to land in 4.16.


Lucas Stach (27):
  drm/etnaviv: fix GPU vs sync point race
  drm/etnaviv: split obj locks in different classes depending on the obj
  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
  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(-)


More information about the dri-devel mailing list