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 22/27] drm/etnaviv: move exec_state to submit object
Date: Fri,  1 Dec 2017 11:36:19 +0100	[thread overview]
Message-ID: <20171201103624.6565-23-l.stach@pengutronix.de> (raw)
In-Reply-To: <20171201103624.6565-1-l.stach@pengutronix.de>

We'll need this in some places where only the submit is available. Also
this is a first step at slimming down the cmdbuf object.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
 drivers/gpu/drm/etnaviv/etnaviv_buffer.c     | 10 +++++-----
 drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h     |  2 --
 drivers/gpu/drm/etnaviv/etnaviv_drv.h        |  4 ++--
 drivers/gpu/drm/etnaviv/etnaviv_gem.h        |  1 +
 drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c |  2 +-
 drivers/gpu/drm/etnaviv/etnaviv_gpu.c        |  2 +-
 6 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
index b0e046d8ad2d..ccb9562a3d82 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
@@ -297,14 +297,14 @@ void etnaviv_sync_point_queue(struct etnaviv_gpu *gpu, unsigned int event)
 }
 
 /* Append a command buffer to the ring buffer. */
-void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event,
-	struct etnaviv_cmdbuf *cmdbuf)
+void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state,
+	unsigned int event, struct etnaviv_cmdbuf *cmdbuf)
 {
 	struct etnaviv_cmdbuf *buffer = gpu->buffer;
 	unsigned int waitlink_offset = buffer->user_size - 16;
 	u32 return_target, return_dwords;
 	u32 link_target, link_dwords;
-	bool switch_context = gpu->exec_state != cmdbuf->exec_state;
+	bool switch_context = gpu->exec_state != exec_state;
 
 	lockdep_assert_held(&gpu->lock);
 
@@ -363,8 +363,8 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event,
 		}
 
 		if (switch_context) {
-			etnaviv_cmd_select_pipe(gpu, buffer, cmdbuf->exec_state);
-			gpu->exec_state = cmdbuf->exec_state;
+			etnaviv_cmd_select_pipe(gpu, buffer, exec_state);
+			gpu->exec_state = exec_state;
 		}
 
 		/* And the link to the submitted buffer */
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h b/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h
index 930b9c7f2249..26460e5d252e 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h
+++ b/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.h
@@ -35,8 +35,6 @@ struct etnaviv_cmdbuf {
 	u32 user_size;
 	/* fence after which this buffer is to be disposed */
 	struct dma_fence *fence;
-	/* target exec state */
-	u32 exec_state;
 	/* per GPU in-flight list */
 	struct list_head node;
 	/* BOs attached to this command buffer */
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.h b/drivers/gpu/drm/etnaviv/etnaviv_drv.h
index 8668bfd4abd5..a54f0b758a5c 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.h
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.h
@@ -87,8 +87,8 @@ u16 etnaviv_buffer_init(struct etnaviv_gpu *gpu);
 u16 etnaviv_buffer_config_mmuv2(struct etnaviv_gpu *gpu, u32 mtlb_addr, u32 safe_addr);
 void etnaviv_buffer_end(struct etnaviv_gpu *gpu);
 void etnaviv_sync_point_queue(struct etnaviv_gpu *gpu, unsigned int event);
-void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event,
-	struct etnaviv_cmdbuf *cmdbuf);
+void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state,
+	unsigned int event, struct etnaviv_cmdbuf *cmdbuf);
 void etnaviv_validate_init(void);
 bool etnaviv_cmd_validate_one(struct etnaviv_gpu *gpu,
 	u32 *stream, unsigned int size,
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.h b/drivers/gpu/drm/etnaviv/etnaviv_gem.h
index f525fd1ef63c..63285101850c 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.h
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.h
@@ -103,6 +103,7 @@ struct etnaviv_gem_submit {
 	struct kref refcount;
 	struct etnaviv_gpu *gpu;
 	struct dma_fence *out_fence, *in_fence;
+	u32 exec_state;
 	u32 flags;
 	unsigned int nr_pmrs;
 	struct etnaviv_perfmon_request *pmrs;
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
index c8c576993c62..d87a7f00bca3 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
@@ -440,7 +440,6 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
 		goto err_submit_cmds;
 	}
 
-	cmdbuf->exec_state = args->exec_state;
 	cmdbuf->ctx = file->driver_priv;
 
 	ret = copy_from_user(bos, u64_to_user_ptr(args->bos),
@@ -487,6 +486,7 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
 		goto err_submit_ww_acquire;
 	}
 
+	submit->exec_state = args->exec_state;
 	submit->flags = args->flags;
 
 	ret = submit_lookup_objects(submit, file, bos, args->nr_bos);
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index 6951ba560573..3d7fe6ed555d 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1423,7 +1423,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
 		etnaviv_sync_point_queue(gpu, event[1]);
 	}
 
-	etnaviv_buffer_queue(gpu, event[0], cmdbuf);
+	etnaviv_buffer_queue(gpu, submit->exec_state, event[0], cmdbuf);
 
 	if (submit->nr_pmrs) {
 		gpu->event[event[2]].sync_point = &sync_point_perfmon_sample_post;
-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent 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 [PATCH 00/27] Etnaviv job lifetime issue fixes Lucas Stach
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 ` Lucas Stach [this message]
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-23-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.