All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas Stach <l.stach@pengutronix.de>
To: etnaviv@lists.freedesktop.org
Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de,
	dri-devel@lists.freedesktop.org,
	Russell King <linux+etnaviv@armlinux.org.uk>
Subject: [PATCH 00/27] Etnaviv job lifetime issue fixes
Date: Fri,  1 Dec 2017 11:35:57 +0100	[thread overview]
Message-ID: <20171201103624.6565-1-l.stach@pengutronix.de> (raw)

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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

             reply	other threads:[~2017-12-01 10:36 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-01 10:35 Lucas Stach [this message]
2017-12-01 10:35 ` [PATCH 01/27] drm/etnaviv: fix GPU vs sync point race Lucas Stach
2017-12-01 11:33   ` Philipp Zabel
2017-12-11  7:47   ` Christian Gmeiner
2017-12-01 10:35 ` [PATCH 02/27] drm/etnaviv: split obj locks in different classes depending on the obj type Lucas Stach
2017-12-01 11:33   ` Philipp Zabel
2017-12-11  7:48   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 03/27] drm/etnaviv: add lockdep annotation for userptr object population Lucas Stach
2017-12-11 10:46   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 04/27] drm/etnaviv: fold __etnaviv_gem_new into caller Lucas Stach
2017-12-01 11:34   ` Philipp Zabel
2017-12-11 10:47   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 05/27] drm/etnaviv: change return type of etnaviv_gem_obj_add to void Lucas Stach
2017-12-01 11:34   ` Philipp Zabel
2017-12-11 10:47   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 06/27] drm/etnaviv: get rid of userptr worker Lucas Stach
2017-12-01 16:38   ` Philipp Zabel
2017-12-01 16:51     ` Russell King - ARM Linux
2017-12-01 17:02       ` Lucas Stach
2017-12-01 10:36 ` [PATCH 07/27] drm/etnaviv: remove -EAGAIN handling from submit path Lucas Stach
2017-12-01 16:39   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 08/27] drm/etnaviv: remove stale TODO in etnaviv_gpu_submit Lucas Stach
2017-12-11 10:49   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 09/27] drm/etnaviv: don't flush workqueue in etnaviv_gpu_wait_obj_inactive Lucas Stach
2017-12-01 16:39   ` Philipp Zabel
2017-12-01 16:59   ` Russell King - ARM Linux
2017-12-01 17:12     ` Lucas Stach
2017-12-01 10:36 ` [PATCH 10/27] drm/etnaviv: remove switch_context member from etnaviv_gpu Lucas Stach
2017-12-01 16:40   ` Philipp Zabel
2017-12-11 10:51   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 11/27] drm/etnaviv: move workqueue to be per GPU Lucas Stach
2017-12-01 16:42   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 12/27] drm/etnaviv: hold GPU lock while inserting END command Lucas Stach
2017-12-01 16:43   ` Philipp Zabel
2017-12-11 10:48   ` Christian Gmeiner
2017-12-01 10:36 ` [PATCH 13/27] drm/etnaviv: add lockdep annotations to buffer manipulation functions Lucas Stach
2017-12-01 16:47   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 14/27] drm/etnaviv: simplify submit_create Lucas Stach
2017-12-01 16:47   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 15/27] drm/etnaviv: move object fence attachment to gem_submit path Lucas Stach
2017-12-11  9:17   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 16/27] drm/etnaviv: rename submit fence to out_fence Lucas Stach
2017-12-01 10:36 ` [PATCH 17/27] drm/etnaviv: attach in fence to submit and move fence wait to fence_sync Lucas Stach
2017-12-11  9:20   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 18/27] drm/etnaviv: move object unpinning to submit cleanup Lucas Stach
2017-12-11  9:23   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 19/27] drm/etnaviv: move ww_acquire_ctx out of submit object Lucas Stach
2017-12-15 18:34   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 20/27] drm/etnaviv: refcount the " Lucas Stach
2017-12-11 12:41   ` Philipp Zabel
2017-12-01 10:36 ` [PATCH 21/27] drm/etnaviv: move PMRs to " Lucas Stach
2017-12-01 10:36 ` [PATCH 22/27] drm/etnaviv: move exec_state " Lucas Stach
2017-12-01 10:36 ` [PATCH 23/27] drm/etnaviv: use submit exec_state for perfmon sampling Lucas Stach
2017-12-01 10:36 ` [PATCH 24/27] drm/etnaviv: move cmdbuf into submit object Lucas Stach
2017-12-01 10:36 ` [PATCH 25/27] drm/etnaviv: move GPU active handling to bo pin/unpin Lucas Stach
2017-12-01 10:36 ` [PATCH 26/27] drm/etnaviv: couple runtime PM management to submit object lifetime Lucas Stach
2017-12-01 10:36 ` [PATCH 27/27] drm/etnaviv: re-enable perfmon support Lucas Stach

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171201103624.6565-1-l.stach@pengutronix.de \
    --to=l.stach@pengutronix.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=etnaviv@lists.freedesktop.org \
    --cc=kernel@pengutronix.de \
    --cc=linux+etnaviv@armlinux.org.uk \
    --cc=patchwork-lst@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.